🚀 百度地图 MCP Server
百度地図APIは現在、MCPプロトコルと完全に互換性があり、国内初のMCPプロトコルに対応した地図サービスプロバイダーです。
百度地図が提供するMCP Serverには、MCPプロトコル標準に準拠した10個のAPIインターフェースが含まれており、逆地理コーディング、地点検索、ルート計画などの機能を網羅しています。
MCP Python SDK
とMCP Typescript SDK
に依存して開発されており、MCPプロトコルをサポートする任意のエージェントアシスタント(Claude
、Cursor
、千帆AppBuilder
など)がすばやく接続できます。
✨ 主な機能
ツール
-
地理コーディング map_geocode
- 説明: 住所を対応する位置座標に解析します。住所構造が完全で、住所内容が正確であるほど、解析される座標の精度が高くなります。
- パラメータ:
address
住所情報
- 出力:
location
緯度経度座標
-
逆地理コーディング map_reverse_geocode
- 説明: 緯度経度座標に基づいて、対応する位置の住所説明、所在行政区画、道路、関連するPOIなどの情報を取得します。
- パラメータ:
latitude
緯度座標
longitude
経度座標
- 出力:
formatted_address
, uid
, addressComponent
などの意味付き住所情報
-
地点検索 map_search_places
- 説明: 都市内の地点情報の検索(最小で
city
レベル)や、円形区域内の周辺地点情報の検索をサポートします。
- パラメータ:
query
検索キーワード。名称またはタイプを使用でき、複数のキーワードは英語のカンマで区切ります。例: query=天安門,美食
tag
検索のタイプ偏好。tag=美食
または tag=美食,ホテル
の形式で指定します。
region
検索する行政区画。region=cityname
または region=citycode
の形式で指定します。
location
円形検索の中心点の緯度経度座標。location=lat,lng
の形式で指定します。
radius
円形検索の半径
- 出力: POIリスト。
name
, location
, address
などが含まれます。
-
地点詳細検索 map_place_details
- 説明: POIのuidに基づいて、関連する詳細情報(評価、営業時間など)を検索します(POIのタイプによって詳細データのカテゴリが異なります)。
- パラメータ:
uid
POIの一意の識別子
- 出力: POI詳細。
name
, location
, address
, brand
, price
などが含まれます。
-
バッチルート計算 map_distance_matrix
- 説明: 起点と終点の座標に基づいて、ルート計画の距離と走行時間を計算します。バッチルート計算は現在、車、自転車、徒歩に対応しています。
- パラメータ:
origins
起点の緯度経度リスト。origins=lat,lng
の形式で指定し、複数の起点は |
で区切ります。
destinations
終点の緯度経度リスト。destinations=lat,lng
の形式で指定し、複数の終点は |
で区切ります。
mode
ルート計算のタイプ。driving
, walking
, riding
から選択でき、デフォルトは driving
です。
- 出力: 各ルートの所要時間と距離。
distance
, duration
などが含まれます。
-
ルート計画 map_directions
- 説明: 起点と終点の座標に基づいて、移動ルートと所要時間を計画します。車、徒歩、自転車、バスなどの移動手段を指定できます。
- パラメータ:
origin
起点の緯度経度。origin=lat,lng
の形式で指定します。
destination
終点の緯度経度。destination=lat,lng
の形式で指定します。
model
移動タイプ。driving
, walking
, riding
, transit
から選択でき、デフォルトは driving
です。
- 出力: ルート詳細。
steps
, distance
, duration
などが含まれます。
-
天気検索 map_weather
- 説明: 行政区画または経度緯度座標を通じて、リアルタイムの天気情報と未来5日間の天気予報を検索します(
location
の経度緯度座標で天気を検索するには、ユーザーが高度な権限を持っている必要があります)。
- パラメータ:
district_id
行政区画コード
location
経度緯度座標。location=lng, lat
の形式で指定します。
- 出力: 天気情報。
temperature
, weather
, wind
などが含まれます。
-
IP位置特定 map_ip_location
- 説明: リクエストのIPに基づいて、現在のリクエストの位置(都市レベルで特定)を取得します。リクエストパラメータのipがIPv6の場合、高度な権限が必要です。
- パラメータ:
ip
リクエストのIPアドレス
- 出力: 現在所在する都市と都市の中心点
location
-
リアルタイム交通状況検索 map_road_traffic
- 説明: リアルタイムの交通渋滞状況を検索します。道路名と区域形状(矩形、多角形、円形)を指定して、リアルタイムの交通状況を検索できます。
- パラメータ:
model
交通状況検索のタイプ(road
, bound
, polygon
, around
から選択でき、デフォルトは road
です)
road_name
道路名と道路の方向。model=road
の場合必須(例: 朝陽路南向北
)
city
都市名または都市のadcode。model=road
の場合必須(例: 北京市
)
bounds
区域の左下角と右上角の緯度経度座標。model=bound
の場合必須(例: 39.9,116.4;39.9,116.4
)
vertexes
多角形区域の頂点の緯度経度座標。model=polygon
の場合必須(例: 39.9,116.4;39.9,116.4;39.9,116.4;39.9,116.4
)
center
円形区域の中心点の緯度経度座標。model=around
の場合必須(例: 39.912078,116.464303
)
radius
円形区域の半径(メートル)。[1,1000]
の範囲で指定し、model=around
の場合必須(例: 200
)
- 出力: 交通状況情報。
road_name
, traffic_condition
などが含まれます。
-
POIインテリジェント抽出 map_poi_extract
- 説明: 与えられた
API_KEY
が高度な権限を持っている場合のみ使用できます。与えられたテキスト内容から、関連するPOI情報を抽出します。
- パラメータ:
text_content
POIを抽出するためのテキスト説明情報(完全な旅行ルート、行程計画、観光スポットの推薦説明などのテキスト内容。例: 新疆の独庫公路とタリム湖は本当に美しいです。独山子大峡谷から天山神秘大峡谷までの体験も素晴らしいです)
- 出力: 関連するPOI情報。
name
, location
などが含まれます。
🚀 クイックスタート
百度地図MCP Serverの使用は主にPython
とTypescript
の2つの形式で行われます。以下にそれぞれ説明します。
AKの取得
2つの方法を選択する前に、百度地図オープンプラットフォームのコンソールでサーバー用のAKを作成する必要があります。AKを通じて、百度地図APIの機能を呼び出すことができます。
Pythonによる接続
百度地図MCP Serverの機能をカスタマイズしたい場合は、ソースコードを通じて接続できます。詳細な方法はPython接続ドキュメントを参照してください。
v1.1バージョンの更新では、pypiを通じて百度地図MCP Server:mcp-server-baidu-mapsをリリースしました。任意のPythonパッケージ管理ツールを使用して簡単に取得し、すばやく設定して使用できます。
インストール
uvを使用する(推奨)
uv
を使用する場合は、特別なインストールは必要ありません。uvx
を使用して直接mcp-server-baidu-mapsを実行します。
pipを使用する
または、pipを使用してmcp-server-baidu-mapsをインストールできます。
pip install mcp-server-baidu-maps
インストール後、以下のコマンドを使用してスクリプトとして実行できます。
python -m mcp_server_baidu_maps
設定
任意のMCPクライアント(Claude.appなど)で以下の設定を追加します。一部のクライアントでは、いくつかのフォーマット調整が必要になる場合があります。
BAIDU_MAPS_API_KEYに対応する値は、自分のAKに置き換える必要があります。
uvxを使用する場合
{
"mcpServers": {
"baidu-maps": {
"command": "uvx",
"args": ["mcp-server-baidu-maps"],
"env": {
"BAIDU_MAPS_API_KEY": "<YOUR_API_KEY>"
}
}
}
}
pipでインストールした場合
{
"mcpServers": {
"baidu-maps": {
"command": "python",
"args": ["-m", "mcp_server_baidu_maps"],
"env": {
"BAIDU_MAPS_API_KEY": "<YOUR_API_KEY>"
}
}
}
}
設定を保存した後、MCPクライアントを再起動すると、百度地図MCP Serverを使用できます。
Typescriptによる接続
nodejsのインストール
Typescriptを通じて接続する場合は、node.jsをインストールするだけです。
ターミナルで以下のコマンドが実行できる場合、node.js
のインストールは成功しています。
node -v
設定
Claude for Desktop
のSetting
を開き、Developer
に切り替えて、Edit Config
をクリックし、任意のIDEで設定ファイルを開きます。

以下の設定を設定ファイルに追加します。BAIDU_MAP_API_KEYは、百度地図オープンプラットフォームAPIにアクセスするためのAKで、このページで申請して取得できます。
{
"mcpServers": {
"baidu-map": {
"command": "npx",
"args": [
"-y",
"@baidumap/mcp-server-baidu-map"
],
"env": {
"BAIDU_MAP_API_KEY": "xxx"
}
}
}
}
Windowsシステムの場合は、jsonに個別の設定を追加する必要があります。
"mcpServers": {
"baidu-map": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@baidumap/mcp-server-baidu-map"
],
"env": {
"BAIDU_MAP_API_KEY": "xxx"
},
}
}
Claudeを再起動すると、設定パネルに百度地図MCP Serverが正常に読み込まれます。ソフトウェアのメイン画面のダイアログで、8つの利用可能なMCPツールが表示され、クリックすると詳細を確認できます。

結果
これで質問を行い、移動計画アシスタントの機能を検証できます。

千帆AppBuilderプラットフォームによる接続
千帆プラットフォームへの接続は、現在SDK接続またはAPI接続がサポートされています。AppBuilderを通じてアプリケーションを構築し、各アプリケーションには独立したapp_idがあります。pythonファイルで対応するapp_idを呼び出し、百度地図Python MCPツールを呼び出すことができます。
テンプレートコードは下にスクロールするとあります。SDK Agent && 地図MCP Serverを通じて、ナビゲーションルートとルート情報を取得し、移動の提案を行います。
Agentの設定
千帆プラットフォームにアクセスし、新しいアプリケーションを作成して公開します。

Agentの思考ラウンド数を6に設定し、アプリケーションを公開します。
呼び出し
このコードはテンプレートとして使用できます。SDKの形式で千帆プラットフォーム上で構築され公開されたAppを呼び出し、MCP Serverをローカルにダウンロードして、ファイルの相対パスをコードに記入します。
(注意: 実際のapp_id、token、query、mcpファイルを使用してください)
import os
import asyncio
import appbuilder
from appbuilder.core.console.appbuilder_client.async_event_handler import (
AsyncAppBuilderEventHandler,
)
from appbuilder.mcp_server.client import MCPClient
class MyEventHandler(AsyncAppBuilderEventHandler):
def __init__(self, mcp_client):
super().__init__()
self.mcp_client = mcp_client
def get_current_weather(self, location=None, unit="摄氏度"):
return "{} 的温度是 {} {}".format(location, 20, unit)
async def interrupt(self, run_context, run_response):
thought = run_context.current_thought
print("\033[1;31m", "-> Agent 中间思考: ", thought, "\033[0m")
tool_output = []
for tool_call in run_context.current_tool_calls:
tool_res = ""
if tool_call.function.name == "get_current_weather":
tool_res = self.get_current_weather(**tool_call.function.arguments)
else:
print(
"\033[1;32m",
"MCP工具名称: {}, MCP参数:{}\n".format(tool_call.function.name, tool_call.function.arguments),
"\033[0m",
)
mcp_server_result = await self.mcp_client.call_tool(
tool_call.function.name, tool_call.function.arguments
)
print("\033[1;33m", "MCP结果: {}\n\033[0m".format(mcp_server_result))
for i, content in enumerate(mcp_server_result.content):
if content.type == "text":
tool_res += mcp_server_result.content[i].text
tool_output.append(
{
"tool_call_id": tool_call.id,
"output": tool_res,
}
)
return tool_output
async def success(self, run_context, run_response):
print("\n\033[1;34m", "-> Agent 非流式回答: ", run_response.answer, "\033[0m")
async def agent_run(client, mcp_client, query):
tools = mcp_client.tools
conversation_id = await client.create_conversation()
with await client.run_with_handler(
conversation_id=conversation_id,
query=query,
tools=tools,
event_handler=MyEventHandler(mcp_client),
) as run:
await run.until_done()
os.environ["APPBUILDER_TOKEN"] = (
""
)
async def main():
appbuilder.logger.setLoglevel("DEBUG")
app_id = ""
appbuilder_client = appbuilder.AsyncAppBuilderClient(app_id)
mcp_client = MCPClient()
await mcp_client.connect_to_server("./<YOUR_FILE_PATH>/map.py")
print(mcp_client.tools)
await agent_run(
appbuilder_client,
mcp_client,
'开车导航从北京到上海',
)
await appbuilder_client.http_client.session.close()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
結果
Agent自身の思考を経て、MCPServerの地点検索、地理コーディングサービス、ルート計画サービスなどの複数のツールを呼び出し、ナビゲーションルートとルート情報を取得し、移動の提案を行います。
実際のユーザーのリクエスト: “北京での一日の花見旅行を計画してください。できるだけ快適な移動計画を提示してください。もちろん、天気状況にも注意してください。”
思考プロセス

Agentの結果

📚 ドキュメント
百度地図MCP Serverに渡す一部のパラメータの仕様:
行政区画コードはすべて百度adcodeマッピング表を使用します。
経度緯度座標はすべて国測局の経度緯度座標gcj02ll
を使用します。詳細は百度座標系を参照してください。
タイプなどの中文字の文字列パラメータは、百度POIタイプの標準に準拠する必要があります。
📄 ライセンス
MIT © baidu-maps
🔑 権限
百度地図MCP Serverの一部の高度な機能は、高度な権限を申請して取得する必要があります。必要な場合は、こちらからお問い合わせください。
💬 フィードバック
百度地図MCP Serverの使用中に問題が発生した場合は、issue
または百度地図オープンプラットフォームを通じてお知らせいただけると幸いです。また、積極的なPR
も歓迎しています。皆様のサポートと貢献に感謝いたします❤️
📈 更新履歴
バージョン |
機能説明 |
更新日付 |
V1.0 |
百度地図MCP Server正式リリース |
2025-03-21 |
V1.1 |
uvx 、pip 形式の快速接続を追加 |
2025-03-28 |