ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

MCP Server 挂进 Cursor 跑 database-agent,模型接口走 TaoToken

MCP Server 挂进 Cursor 跑 database-agent,模型接口走 TaoToken 1. 为什么 database-agent 挂进 Cursor 后还是卡住MCP 协议、AI Agent、工具集成这几个词最近被聊得很多但真正动手把 MCP Server 挂进 Cursor 的人往往会撞上一个很具体的墙工具明明注册成功了Cursor 的 MCP 面板里也能看到 database-agent 亮着绿灯可你让它查一句「工程部的平均薪资是多少」它要么回你一句「我没有数据库访问权限」要么干脆在 list_tables 那一步就停住不动。这个现象的本质是很多人把两件独立的事混成了一件。第一件事是「工具怎么被 Cursor 发现」——这靠 mcpServers 配置解决command/args 指到你的 server.pyCursor 启动时通过 stdio 拉起进程发 tools/list 拿到工具清单。第二件事是「Cursor 里的 Agent 用哪个模型来决定发起 tools/call」——这是模型侧的事跟 MCP 协议本身没关系。原文 4.2 到 5.3 把第一件事讲透了FastMCP 写 list_tables / describe_table / execute_query 三个工具再按 5.3 的 mcpServers 配置挂进 Cursor这一步只解决「工具怎么被被发现」。可链式查询要跑起来模型必须能读懂工具描述、决定先调 list_tables、拿到结果再调 describe_table、最后拼出 execute_query 的 SQL。这个决策过程发生在模型侧而模型侧的凭证和 Base URL是另一套配置。我试过只配 mcpServers 不配模型侧结果就是 Cursor 内置模型能看见工具但不会主动链式调用或者调用时报鉴权失败。所以这篇把「模型侧凭证」单独拆出来讲先注册拿 Key回到 Cursor 模型设置填 Base URL 和 KeymcpServers 那段照旧最后用一句原话验证三个工具是否被依次调起。TaoToken 在这条链路里只出 Key 和 Base URL不参与 MCP 协议本身的实现这点要先说清楚免得你把两套东西搅在一起排障。2. 前置TaoToken 的 Key 与 Base URL 怎么拿模型侧凭证这一环我用的是 TaoToken。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册账号进控制台创建一把 API Key。创建完先别关页面Key 只完整显示一次复制到本地临时文件里。这里有个容易踩的坑Base URL 填 https://taotoken.net/api不带 /v1也不加任何 UTM 参数。很多人习惯性补 /v1结果 Cursor 报 404 或模型不可用。TaoToken 的接入地址就是 https://taotoken.net/api 这个裸路径OpenAI 兼容协议由它自己路由。创建 Key 的入口在控制台的 API Keys 页面模型对话和 Coding Plan 是两条不同的能力线如果你只是想让 Cursor 的 Agent 能决策工具调用用普通 API Key 就够如果你要长期跑编码 Agent、频繁做多轮工具链可以看下 Coding Plan额度模型不一样。接入文档在 https://taotoken.net/doc 有完整说明遇到协议细节先翻文档比瞎试快。注意Key 不要写进 mcpServers 的配置块里。mcpServers 只管拉起你的 server.py模型凭证填在 Cursor 的模型设置里两者物理隔离。把 Key 塞进 server.py 的环境变量只会让 MCP Server 自己拿到 KeyCursor 的 Agent 依然不知道该用哪个模型。3. 可复制配置mcpServers 与模型侧分开填3.1 mcpServers 段照原文填先确认你的 database-agent 能独立跑起来。在项目目录下执行uv run server.py进程挂住不退出、没有报错说明 stdio 传输正常。然后打开 Cursor 设置 → MCP → Add new MCP server填入{ mcpServers: { database-agent: { command: uv, args: [ --directory, /ABSOLUTE/PATH/TO/mcp-database-server, run, server.py ] } } }/ABSOLUTE/PATH/TO/mcp-database-server换成你自己的绝对路径别用~或相对路径Cursor 拉起子进程时工作目录不一定是你想的那样。保存后重启 CursorMCP 面板里 database-agent 应该显示已连接点开能看到 list_tables、describe_table、execute_query 三个工具。3.2 模型侧凭证填在 Cursor 模型设置这一步是原文没展开、但决定链式查询能不能跑的关键。进 Cursor 设置 → Models找到 OpenAI 兼容或自定义模型入口填两项配置项填写值说明Base URLhttps://taotoken.net/api不带 /v1不加 UTMAPI Key控制台创建的那把只显示一次注意保存Model按控制台可用列表选选支持 tool use 的模型填完点 Verify 或直接发一条测试消息。如果 Cursor 提示模型不可用先回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 核对 Key 是否复制完整、模型名是否在可用列表里。Base URL 多一个斜杠、少一个字符都会导致鉴权失败这个我踩过排查了半小时才发现是末尾多了个/。3.3 两套配置的关系用一张表说清楚免得混配置位置解决什么填什么mcpServers工具怎么被 Cursor 发现command/args 指向 server.pyCursor 模型设置Agent 用哪个模型决策 tools/callBase URL Key ModelMCP 协议负责工具发现和 JSON-RPC 调用模型侧负责「要不要调、调哪个、参数怎么填」。两者都配好链式查询才跑得动。4. 验证一句原话跑通三个工具链配置保存后重启 Cursor在 AI 对话里直接说原文 5.3 的那句原话帮我看看数据库里有哪些表工程部的平均薪资是多少正常情况下你会在 Cursor 的对话流里看到三次工具调用依次出现先 list_tables 拿到表清单模型看到有 users 表接着调 describe_table 确认 department 和 salary 字段最后拼出类似SELECT AVG(salary) FROM users WHERE department 工程部的 SQL 走 execute_query返回一个平均薪资数字。如果三个工具被依次调起说明模型侧凭证和 MCP 配置都对了。如果只调了 list_tables 就停住或者模型说「我无法访问数据库」问题基本在模型侧要么 Key 没填对要么选的模型不支持 tool use要么 Base URL 写错了。这时候回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 核对 Key 和可用模型再回 Cursor 模型设置重填一遍。想单独验证模型对话能力可以打开 https://taotoken.net 的模型对话页面用同一把 Key 发一条带工具描述的消息看模型能不能正确输出 tool call 结构。这一步能把「模型不支持工具调用」和「MCP 配置错误」区分开。5. 本篇常见错排查5.1 Cursor 报鉴权失败最常见的原因是 Base URL 写成了https://taotoken.net/api/v1或末尾多了斜杠。正确值是 https://taotoken.net/api裸路径。另一个原因是 Key 复制时带了空格或换行粘贴后手动删一下首尾空白。5.2 模型不可用Cursor 模型设置里选的模型名必须在 TaoToken 控制台的可用模型列表里。选了一个没开通的模型就会报模型不可用。回控制台看一眼可用列表或者直接换成文档里标注支持 tool use 的模型。5.3 工具被发现但不被调用MCP 面板显示已连接但模型从不主动调工具。这通常是工具描述写得太模糊。FastMCP 会把函数 docstring 里的 Args 部分作为参数描述传给模型如果 describe_table 的 docstring 只写「查看表结构」而不说明什么时候该调模型就不知道拿到表名后该不该继续。把每个工具的 description 写清楚使用场景比如「在需要了解数据库结构时调用此工具」。5.4 链式查询中途断掉list_tables 调完模型拿到表名却不继续调 describe_table。这多半是模型侧上下文或工具返回格式的问题。检查 execute_query 的返回是不是合法 JSON模型解析不了就会放弃。另外确认模型设置里的上下文窗口够大工具返回的表结构 JSON 如果太长被截断模型也会断链。5.5 server.py 启动即退出mcpServers 配置的 command 用uv但 Cursor 的环境变量里没有 uv 的路径。换成 uv 的绝对路径或者确认 uv 已加入系统 PATH。args 里的--directory路径必须是绝对路径相对路径在 Cursor 子进程里会解析失败。6. 把模型侧和工具侧分开维护这条链路跑通之后日常维护其实就两件事工具侧改 server.py 加新工具模型侧在 Cursor 里换模型或换 Key。两者互不影响排障时也能快速定位是哪一侧的问题。如果你要长期跑编码 Agent、频繁做多轮工具链调用模型侧的额度消耗会比单轮对话高不少可以看下 Coding Plan 的额度模型是否合适。接入细节和协议说明在 https://taotoken.net/doc 有完整文档遇到 Base URL 或模型名的问题先翻文档。API Key 管理在 https://taotoken.net/api-keysKey 泄露了及时吊销重建。最后提醒一句TaoToken 在这条链路里只出 Key 和 Base URLMCP 协议本身的实现、工具的注册与调用、stdio 传输都是 Cursor 和你的 server.py 在管。把这两层分清楚链式查询卡住的时候你就知道该往哪边查。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进