1. 为什么地图能力接进 Cursor 总是卡在鉴权这一步
MCP 在百度地图上的实践,说白了就是让 Cursor 这个编辑器通过 MCP 协议去调用百度地图的服务,把地理编码、路线规划、POI 搜索这些能力变成你写代码时随手可用的工具。适合谁?适合已经在用 Cursor 做开发、想让 AI 助手直接查地图数据的前端或全栈同学。它不是什么高深的东西,本质就是一份配置文件加一个 Key,但真正动手时,十个人里有八个会卡在鉴权和 config.toml 的骨架上。
我自己第一次配的时候,光是在“Key 到底填哪个”这件事上就来回折腾了好几轮。百度地图开放平台给的 Key 分好几种类型,浏览器端、服务端、iOS、Android,选错了类型,MCP 服务器启动时不会报错,但一调用接口就返回鉴权失败,日志里还看不出所以然。另一个高频坑是 config.toml 的路径和字段名,Cursor 读的是它自己那套 MCP 配置格式,跟你在别处看到的 JSON 示例不完全一样,照抄很容易漏字段。
这篇就聚焦两件事:一是把 Key 的申请和配置讲清楚,二是给出一份可以直接复制的 config.toml 骨架,再演示一次真实的 MCP 调用验证。你照着走一遍,链路就能通。中间涉及模型调用和 Key 管理的地方,我会用 TaoToken 来做统一入口,这样你不需要在多个平台之间来回切换。
2. 前置准备:TaoToken 统一 Key 与百度地图 AK 的分工
在动手写配置之前,先把两个 Key 的角色分清楚,不然后面一定会混。
百度地图的 AK 是给 MCP 服务器用的,它代表你有权限调用百度地图的接口。这个 Key 要去百度地图开放平台申请,注意申请时选“服务端”类型,因为 MCP 服务器是在本地以进程方式运行的,属于服务端调用场景。申请过程是免费的,填个应用名称、选好服务端,就能拿到一串 AK。
TaoToken 这边负责的是模型侧的调用。你在 Cursor 里跟 AI 对话、让它去触发 MCP 工具,背后需要一个能稳定调用的模型入口。TaoToken 提供统一的 API 地址和 Key 管理,你可以在它的控制台里创建 Key,然后配到 Cursor 的模型设置里。这样模型走 TaoToken,地图走百度 AK,两条线互不干扰。
具体操作上,先到 TaoToken 官网注册并进入控制台,在 API Keys 页面创建一个新 Key,复制出来备用。这个 Key 后面会填到 Cursor 的模型配置里。如果你还没决定用哪个模型,可以先去模型对话页面试试效果,确认能正常返回再继续。
百度地图 AK 的申请入口在开放平台的控制台里,创建应用时注意两点:应用类型选“服务端”,IP 白名单如果不想折腾就留空(本地开发够用)。拿到 AK 后先记在一边,下一步就要用。
3. 可复制的 config.toml 骨架与 Key 配置
Cursor 的 MCP 配置现在推荐用 config.toml 格式,放在用户目录下的.cursor/mcp.toml里。如果你之前用的是 JSON 版本,也可以继续用,但 TOML 的可读性更好,字段不容易写错。下面这份骨架你可以直接复制,只需要替换两个地方:百度 AK 和 TaoToken 的 Key。
# ~/.cursor/mcp.toml [mcp_servers.baidu-maps] command = "python" args = ["-m", "mcp_server_baidu_maps"] env = { BAIDU_MAPS_API_KEY = "你的百度服务端AK" } [mcp_servers.baidu-maps.restart] on_failure = true max_attempts = 3这段配置做了三件事:告诉 Cursor 用 python 去启动mcp_server_baidu_maps这个模块;把百度 AK 通过环境变量传进去;设置失败自动重启,避免偶尔的网络抖动导致整个 MCP 掉线。
模型侧的配置不在这个文件里,而是在 Cursor 的设置界面里。打开 Settings,找到 Models 部分,把 API Base 填成https://taotoken.net/api,API Key 填你在 TaoToken 控制台创建的那个。模型名称按你实际用的填,比如 claude 系列或者 deepseek 系列都行。填完之后点一下验证,能返回模型列表就说明通了。
这里有个细节要注意:mcp_server_baidu_maps这个包需要先装到你的 Python 环境里。如果你用的是虚拟环境,确保 Cursor 启动 MCP 时用的就是那个环境的 python。最稳妥的办法是在项目目录下建一个 venv,激活后执行:
pip install mcp-server-baidu-maps装完之后用pip list | grep baidu确认一下包在列表里。如果不在,说明你装到了别的环境,Cursor 启动时会找不到模块,日志里会报No module named mcp_server_baidu_maps。
4. 验证一次 MCP 调用百度地图接口
配置写完、保存、重启 Cursor 之后,怎么确认它真的通了?不要只看 MCP 面板的绿灯,绿灯只代表进程起来了,不代表接口能调通。真正的验证是发一次实际请求。
打开 Cursor 的聊天面板,输入一句明确要触发地图工具的话,比如:“帮我查一下北京南站附近的咖啡厅,返回前三个。” 如果 MCP 配置正确,你会看到聊天框里出现工具调用的折叠块,显示正在调用baidu-maps的某个方法,比如search_places或geocode。
调用成功后,返回结果里会带上 POI 名称、地址和经纬度。这时候你再去 MCP 面板看,日志里应该有一行类似tool call succeeded的记录。如果返回的是鉴权错误,比如AK invalid或permission denied,那基本就是百度 AK 的类型选错了,回去检查是不是申请成了浏览器端。
还有一种情况是工具根本没被触发,模型直接用自己的知识回答了。这通常是因为模型没有正确识别到 MCP 工具的存在。解决办法是在对话里明确说“使用 baidu-maps 工具查询”,或者在 Cursor 的 MCP 设置里确认工具列表已经加载出来。如果工具列表是空的,说明 MCP 服务器启动失败,回去看日志里的报错。
验证通过之后,你可以试着连续调用几次,比如先地理编码再算路线,看看多步调用是否稳定。实测下来,只要 Key 和环境没问题,连续调用十几次都不会掉。
5. 本篇常见错排查
配置过程中最容易遇到的几个报错,我按出现频率排一下。
第一个是BAIDU_MAPS_API_KEY not set。这个说明环境变量没传进去。检查 config.toml 里env那行的写法,TOML 里字符串要用双引号,Key 不要带多余空格。如果你用的是 JSON 版本,确认env对象里键名拼写完全一致。
第二个是ModuleNotFoundError: No module named 'mcp_server_baidu_maps'。这就是前面说的环境问题。在 Cursor 的终端里执行which python,看看指向的是不是你以为的那个环境。如果不是,要么改 config.toml 里的 command 为绝对路径,要么在正确的环境里重装。
第三个是调用返回AK参数错误。百度地图的 AK 对参数很敏感,检查你是不是把 AK 复制多了空格,或者申请的是浏览器端 AK。服务端 AK 在 MCP 场景下才能用。
第四个是 MCP 面板一直转圈不亮绿灯。这种情况多半是启动命令执行超时。把 command 改成 python 的绝对路径试试,比如/usr/bin/python3或 Windows 下的C:\Python311\python.exe。另外确认mcp-server-baidu-maps这个包支持你当前的 Python 版本,太老的版本可能不兼容。
如果排查完还是不通,可以去 TaoToken 的接入文档页面看看有没有更新的配置示例,或者直接在模型对话里把报错贴给模型,让它帮你分析日志。
6. 把这条链路用起来:从验证到日常编码
链路跑通之后,真正的价值在于日常编码时随手可用。比如你在写一个跟地理位置相关的功能,可以直接在 Cursor 里问:“帮我把这段地址转成经纬度,用 baidu-maps 的 geocode。” 模型会调用 MCP 工具拿到结果,再帮你写进代码里。整个过程不需要你切到浏览器去查。
如果你打算长期在 Cursor 里做这类开发,建议把 TaoToken 的 Coding Plan 用起来,它在长会话和频繁工具调用场景下更稳,不会因为额度问题中断。Key 的管理也集中在控制台里,换模型或者加额度都不用改代码。
最后留一个实用习惯:每次改完 config.toml,先Ctrl+S保存,再完全退出 Cursor 重开。Cursor 对 MCP 配置的热加载支持不完整,重启是最省事的办法。另外把百度 AK 和 TaoToken Key 分开放在不同的环境变量文件里,别混在一个配置里,后面换 Key 的时候你会感谢自己。