2. 下載百度MCP Server源碼 https://github.com/baidu-maps/mcp/tree/main/src/baidu-map/python

將map.py拷貝到該目錄下,通過如下命令測試MCP server是否正常運行

uv run --with mcp[cli] mcp run {替換成您的路徑}/baidu_map_mcp_server/map.py
# 如果是mac,需要加轉義符
uv run --with mcp\[cli\] mcp run {替換成您的路徑}/baidu_map_mcp_server/map.py

如果沒有報錯則MCP Server啟動成功

3. 在Cursor中啟用該MCP Server

打開Cursor配置,在MCP中添加MCP Server

在文件中添加如下內容后保存

{
"mcpServers": {
"baidu-map": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"{替換成您的路徑}/baidu_map_mcp_server/map.py"
],
"env": {
"BAIDU_MAPS_API_KEY": "{您的AK}"
}
}
}
}

需要注意,如果是在claude中添加MCP,command需要寫絕對路徑,例如:/User/{您的賬號名}/local/bin/uv,否則可能導致mcp加載失敗

回到配置,此時百度MCP Server已經啟用

4. 開始使用

行程規劃:

通過Nodejs接入

1. 安裝nodejs

https://nodejs.org/zh-cn

2. 在Claude中配置

(1) 打開Claude的Setting菜單,切換到Developer選項卡,點擊”Edit Config”,用任意的文本編輯器軟件打開配置文件

(2) 將以下配置添加到配置文件中,BAIDU_MAP_API_KEY 是訪問百度地圖開放平臺API的AK,可根據此頁面申請獲取:https://lbs.baidu.com/faq/api?title=mcpserver/prepare

{
"mcpServers": {
"baidu-map": {
"command": "npx",
"args": [
"-y",
"@baidumap/mcp-server-baidu-map"
],
"env": {
"BAIDU_MAP_API_KEY": "{您的AK}"
}
}
}
}

(3) 重啟Claude,此時設置面板已經成功加載了百度地圖MCP Server。在軟件主界面對話框處可以看到有8個可用的MCP工具,點擊可以查看詳情。

3. 接下來就可以進行提問,驗證出行規劃小助手的能力了。

通過千帆AppBuilder平臺接入

千帆平臺接入,目前支持SDK接入或是API接入,通過AppBuilder構建一個應用,每個應用擁有一個獨立的app_id,在python文件中調用對應的app_id,再調用百度地圖 Python MCP Tool即可。
模板代碼可向下跳轉,通過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.modelcontextprotocol.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參數:{}
".format(tool_call.function.name, tool_call.function.arguments),
"[0m",
)
mcp_server_result = await self.mcp_client.call_tool(
tool_call.function.name, tool_call.function.arguments
)
print("\033[1;33m", "MCP結果: {}
\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("
\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()

### 用戶Token
os.environ["APPBUILDER_TOKEN"] = (
""
)

async def main():
appbuilder.logger.setLoglevel("DEBUG")
### 發布的應用ID
app_id = ""
appbuilder_client = appbuilder.AsyncAppBuilderClient(app_id)
mcp_client = MCPClient()

### 注意這里的路徑為MCP Server文件在本地的相對路徑
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自己的思考,通過調用MCP Server 地點檢索、地理編碼服務、路線規劃服務等多個tool,拿到導航路線及路線信息,并給出出行建議。

實際用戶請求:“請為我計劃一次北京賞花一日游。盡量給出更舒適的出行安排,當然,也要注意天氣狀況。”

思考過程:

Agent結果:

文章轉載自:快速接入百度地圖MCP Server

上一篇:

快速接入高德地圖 MCP Server

下一篇:

交叉熵損失(Cross-entropy)和平方損失(MSE)究竟有何區別?
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費