1. 为什么要在 Cursor 里用 MCP 连 MySQL
先说清楚这套组合到底解决什么问题。Cursor 本身已经能写 SQL,但它默认不知道你的库长什么样——有哪些表、字段类型是什么、索引怎么建的。你每次提问都得把表结构贴进去,麻烦且容易漏。MCP(Model Context Protocol)是 Anthropic 推出的开源协议,作用是在大模型和外部数据源之间建立一条标准化的双向通道。把它接到 MySQL 上,Cursor 就能自己去看表、读字段、执行查询,你只需要用中文说“帮我查一下上个月订单量前十的商品”,它就能生成 SQL 并跑出结果。
这套方案适合谁?适合手头有 MySQL 库、日常要写查询或做数据核对的开发者,尤其是那种“我知道要什么数据,但懒得手写 JOIN”的场景。前置条件只有三个:装好 Cursor、本机有 Node.js 环境(因为 MCP server 走 npx 启动)、有一个能连的 MySQL 实例。模型调用这一层,我用 TaoToken 统一管理 Key 和通道,这样 Cursor 里的模型请求和 MCP 的工具调用走同一套凭证,不用在多个地方反复配。
需要提醒的是,MCP 连的是你的真实数据库,所以权限要收着给。生产库不要直接挂上来,建议单独开一个只读账号,或者至少限制到某几个库。下面从接入参数开始,一步步把链路跑通。
2. TaoToken 前置:统一 Key 与接入参数
TaoToken 在这里的角色是模型调用的统一入口。Cursor 里配置自定义模型时,需要填 Base URL 和 API Key,这两项都从 TaoToken 拿。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点用 https://taotoken.net/api ,注意这个地址后面不加任何查询参数。
操作路径是这样:登录后进控制台,在 API Keys 页面创建一个新 Key。创建时建议按用途命名,比如“cursor-mcp-mysql”,方便后面排查是哪个客户端在调用。Key 只显示一次,复制后先存到安全的地方。
拿到 Key 之后,在 Cursor 的模型设置里填两个值:Base URL 填https://taotoken.net/api,API Key 填刚创建的那串。模型名称按你实际要用的填,TaoToken 支持多种模型,选一个适合代码和工具调用的即可。这一步做完,Cursor 的对话请求就走 TaoToken 通道了。
这里有个细节:MCP server 本身不消耗模型额度,它只是执行数据库操作的工具。真正走 TaoToken 的是 Cursor 在理解你自然语言、生成 SQL 时的那次模型调用。所以 Key 的额度是花在“思考”上,不是花在“执行”上。理解这一点,后面排查问题时能少走弯路。
如果你还没创建 Key,可以直接打开 API Keys 页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=cursor_mcp_mysql&utm_campaign=rewrite 。创建完顺手在控制台确认一下额度状态,避免配好了却因为余额问题调不通。
3. 可复制的 MCP 配置骨架
Cursor 的 MCP 配置入口在设置里:点右上角齿轮,找到 MCP 选项,添加一个新的 MCP Server。它本质上是往配置文件里写一段 JSON。下面这份骨架可以直接抄,把里面的大写占位符换成你自己的值。
{ "mcpServers": { "mysql": { "command": "npx", "args": ["-y", "@f4ww4z/mcp-mysql-server"], "env": { "MYSQL_HOST": "你的数据库地址", "MYSQL_USER": "你的用户名", "MYSQL_PASSWORD": "你的密码", "MYSQL_DATABASE": "你的库名", "MYSQL_PORT": "3306" }, "transportType": "stdio", "autoApprove": [ "list_tables", "connect_db", "execute", "query", "describe_table" ] } } }逐项说明一下。command和args决定用 npx 拉取@f4ww4z/mcp-mysql-server这个包,-y表示自动确认安装,不用每次手动点。env里是数据库连接信息,MYSQL_HOST填 IP 或域名,本地库就是127.0.0.1。transportType用stdio,这是本地进程通信的标准方式。
autoApprove这个数组值得单独讲。它列出的是“不需要每次确认就自动执行”的工具。list_tables列所有表、describe_table看表结构、query执行查询、execute执行写操作、connect_db建立连接。把execute放进去意味着写操作也会自动跑,如果你连的是重要库,建议把它从数组里删掉,让每次写操作都弹确认。我自己的做法是:开发库全放,生产库只留list_tables和describe_table。
保存后回到 MCP 列表,左边出现绿点就是连上了。红点的话先看日志,最常见的原因是数据库地址写错、账号密码不对,或者 npx 拉包时网络卡住。日志里通常会直接告诉你哪一步失败。
4. 验证请求:从自然语言到数据返回
配置绿了之后,打开 Cursor 的对话窗口,切到 Agent 模式(普通 Chat 模式不一定能触发工具调用)。先做一次最简单的验证:输入“列出当前数据库里所有的表”。
正常情况下,Cursor 会调用list_tables工具,返回一个表名列表。如果它只是用文字回答而没有真正调工具,检查一下是不是没开 Agent 模式,或者 MCP server 没被识别到。
接着验证读数据。输入“查一下 users 表的前 5 条记录,把结果写到一个 txt 文件里”。它会先调describe_table看字段,再调query执行SELECT * FROM users LIMIT 5,然后把结果整理成文本写到你指定的文件。这一步能跑通,说明“自然语言 → SQL → 执行 → 结果落地”整条链路是通的。
再试一个带条件的统计:“统计 orders 表里每个状态的订单数量,按数量从高到低排”。它会生成类似SELECT status, COUNT(*) AS cnt FROM orders GROUP BY status ORDER BY cnt DESC的语句并执行。你可以对照结果和自己在客户端里手跑的是否一致,验证生成的 SQL 准确性。
如果想验证写操作,先确认execute在autoApprove里,然后输入“往 users 表插入一条测试数据,name 叫 test_user,email 是 test@example.com”。执行完再查一次确认写入成功。这一步做完记得把测试数据清掉,避免污染。
整个验证过程里,模型的理解和 SQL 生成走的是 TaoToken 通道,工具执行走的是本地 MCP server。两边各司其职,任何一边出问题都会表现为“没反应”或“报错”,所以排查时要分开看。
5. 本篇常见错排查
绿点变红点,日志报 ECONNREFUSED。这是数据库连不上,九成是MYSQL_HOST或MYSQL_PORT写错。本地库确认 MySQL 服务在跑,远程库确认防火墙放行了你的 IP。另外注意MYSQL_HOST不要带http://前缀,只填地址本身。
npx 拉包失败,日志里有 network 或 timeout。这是拉取@f4ww4z/mcp-mysql-server时网络问题。可以先在终端手动跑一次npx -y @f4ww4z/mcp-mysql-server,看是否能正常下载。如果卡住,检查 npm 源配置。这一步和数据库无关,纯粹是包获取问题。
Cursor 不调用工具,只用文字回答。两个可能:一是没切到 Agent 模式,二是 MCP server 虽然绿点但工具没注册成功。试着在对话里明确说“使用 mysql 工具列出所有表”,看它是否触发。如果还是不触发,重启 Cursor 让 MCP 重新加载。
查询报权限错误。你用的数据库账号没有对应库或表的 SELECT 权限。用SHOW GRANTS FOR '你的用户'@'%';看一下授权情况。MCP 用的是你配置里那个账号的权限,不会额外提权。
生成的 SQL 字段名不对。模型可能没先看表结构就猜字段。解决办法是在提问时加一句“先看表结构再写 SQL”,或者确认describe_table在autoApprove里,让它能自动调用。
写操作没弹确认就直接执行了。检查autoApprove数组,execute在里面就会自动跑。想每次确认就把它删掉。这个设置直接关系到数据安全,配之前想清楚。
6. 把链路固定下来
跑通一次之后,建议把配置和验证步骤固化。MCP 配置可以导出备份,换机器时直接导入。TaoToken 的 Key 如果要在多台设备用,注意别把 Key 明文提交到 Git 仓库,用环境变量或本地配置文件管理。
日常使用中,我习惯把常用的查询场景写成固定的提问模板,比如“按周统计新增用户并导出 CSV”,这样每次只需改时间范围。模型生成 SQL 的稳定性会随着表结构被它“记住”而提升,但每次新会话它还是需要重新看表,所以describe_table的自动批准很有必要。
如果后面要接更多数据源,比如同时连 MySQL 和 PostgreSQL,可以在mcpServers里加多个条目,每个用不同的名字。Cursor 会根据你的提问自动选择调哪个。模型调用这一层继续走 TaoToken 统一通道,不用为每个数据源单独配 Key。
需要长期做编码和 Agent 任务的,可以看下 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=cursor_mcp_mysql&utm_campaign=rewrite 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=cursor_mcp_mysql&utm_campaign=rewrite ,里面有各客户端的详细参数说明。模型对话入口在 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=cursor_mcp_mysql&utm_campaign=rewrite ,想先试试模型响应质量的可以从这里进。控制台在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=cursor_mcp_mysql&utm_campaign=rewrite ,额度、用量、Key 管理都在里面。