☰
Cursor 集成 MCP MySQL 服务器完整配置指南:把 Base URL 改到 TaoToken
2026/10/7 7:12:27 网站建设 项目流程

1. 为什么要在 Cursor 里接一个 MySQL MCP 服务器

先说清楚这东西是什么。MCP 全称 Model Context Protocol,你可以把它理解成给 AI 编辑器装的一根「数据线」——Cursor 本身能读你项目里的代码文件,但它默认看不到你数据库里有什么表、字段长什么样、某条 SQL 跑出来是什么结果。接上 MySQL 的 MCP 服务器之后,你在 Cursor 的 chat 窗口里用@mysql-local就能直接让 AI 帮你查表结构、跑只读 SQL、看统计结果,不用再切到 Navicat 或者命令行来回粘贴。

适合谁用?三类人最明显:一是后端开发,天天要对着几张业务表写查询和联调;二是做数据核对的同学,需要频繁SELECT COUNT(*)验证数据对不对;三是刚接手一个陌生库,想快速摸清表结构的人。我自己最常用的场景就是让 AI 先SHOW CREATE TABLE看一眼字段,再根据字段帮我拼一条带条件的查询,省掉大量翻文档的时间。

但这里有个容易被忽略的点:MCP 服务器本身只是个「执行器」,它负责把 AI 生成的 SQL 发到数据库、把结果拿回来。真正决定你用得顺不顺的,是两件事——一是 MCP 的连接参数配得对不对,二是 AI 模型这一侧的请求走哪条链路。很多教程只讲前半段,配完mcp.json就结束了,结果发现 Cursor 里模型响应慢、或者干脆连不上模型,卡在鉴权那一步。这篇就把这两段链路都串起来讲:MySQL 的 MCP Server 怎么声明、连接参数和鉴权字段怎么填,以及把 Cursor 的 Base URL 指向 TaoToken 之后,模型请求和 MCP 工具调用怎么配合起来跑通。

下面所有配置我都按 Windows 11 + Cursor 的路径来写,Mac 和 Linux 只需要把配置文件的路径换一下,字段完全一致。整个过程分四步:装包、写mcp.json、重启验证、跑一条只读 SQL。每一步我都会给出可直接复制的片段,以及跑完之后你应该看到什么。

2. 前置准备:Node 环境、MySQL 账号与 TaoToken 的 Base URL 设置

在动mcp.json之前,有三样东西必须先到位,否则后面报错你会分不清是哪一环出的问题。

第一是 Node.js 环境。MCP MySQL 服务器是通过npx拉起来的一个 Node 进程,所以本机得有 Node。打开 PowerShell 敲node -v,能打印出版本号(比如v20.x)就行。没有的话去 Node 官网装 LTS 版本,装完重开一个终端再验证。这一步别跳过,我见过有人mcp.json写得完全正确,但 Cursor 日志里一直报command not found: npx,就是 Node 没装或者没进 PATH。

第二是 MySQL 的访问账号。强烈建议不要用 root 直接接 MCP,而是单独建一个只读账号。原因很直接:MCP 工具里有execute这种能跑 INSERT/UPDATE/DELETE 的能力,虽然你平时只用查询,但万一 AI 理解错了你的意图,给它一个只读账号就是最后一道保险。建账号的 SQL 大概长这样:

CREATE USER 'mcp_ro'@'%' IDENTIFIED BY '你的强密码'; GRANT SELECT, SHOW VIEW ON your_db.* TO 'mcp_ro'@'%'; FLUSH PRIVILEGES;

注意SHOW VIEW这个权限,因为SHOW CREATE TABLE在某些版本下需要它。只给SELECT有时候看表结构会失败,这是个容易踩的坑。

第三是模型这一侧的链路。Cursor 默认走官方端点,但如果你想让模型请求统一走一个可控的入口,就需要把 Base URL 改到 TaoToken。TaoToken 是一个兼容 OpenAI 接口规范的模型调用入口,官网在https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,API 端点是https://taotoken.net/api。它的作用是让你在 Cursor 里配置一个自定义的 Base URL 和 API Key,模型请求就从这里出去。你需要在 TaoToken 的控制台里先创建一个 API Key,控制台地址是https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite,创建 Key 的页面在https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite。

这里要区分清楚两个「连接」:一个是 Cursor 到模型服务的连接(走 Base URL + API Key),另一个是 MCP Server 到 MySQL 的连接(走 host/port/user/password)。它们是两条独立的链路,配错任何一条都会表现为「工具用不了」,但排查方向完全不同。后面第五节我会专门讲怎么根据报错区分这两类问题。

把这三样准备好,就可以进入配置环节了。顺便提一句,如果你只是想先验证模型能不能通,可以打开模型对话页面https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite发一句话试试,确认 Key 有效再往下走,能省掉不少来回折腾。

3. 可复制配置:mcp.json 声明 MySQL Server 与 Base URL 指向 TaoToken

这一节是全文的核心,给出两份可直接复制的配置:一份是 Cursor 的 MCP 配置文件mcp.json,一份是 Cursor 的模型设置(Base URL 指向 TaoToken)。两份都要改,缺一不可。

先装 MCP MySQL 服务器包。打开 PowerShell,执行:

npm install -g @f4ww4z/mcp-mysql-server

装完之后,找到 Cursor 的 MCP 配置文件。Windows 下的路径是:

C:\Users\{你的用户名}\.cursor\mcp.json

如果.cursor目录下没有mcp.json,直接新建一个。Mac 和 Linux 对应的是~/.cursor/mcp.json。写入下面这段配置:

{ "mcpServers": { "mysql-local": { "command": "npx", "args": [ "@f4ww4z/mcp-mysql-server", "--host", "127.0.0.1", "--port", "3306", "--user", "mcp_ro", "--password", "你的强密码", "--database", "your_db" ] } } }

几个字段说明一下。mysql-local是你在 Cursor chat 里@时用的名字,可以改成mysql-prod之类,但后面所有引用都要跟着改。--port默认 MySQL 是 3306,如果你本地改过端口(比如 3307)就填实际值。--database建议显式指定,不然 AI 查询时可能因为没选库而报No database selected。

关于密码硬编码的问题:mcp.json目前对env字段的支持在不同版本里表现不一致,稳妥做法是先用明文跑通,确认链路没问题后,再考虑把密码换成环境变量引用。如果你确实想用环境变量,可以这样写:

{ "mcpServers": { "mysql-local": { "command": "npx", "args": [ "@f4ww4z/mcp-mysql-server", "--host", "127.0.0.1", "--port", "3306", "--user", "mcp_ro", "--password", "${env:MYSQL_MCP_PASSWORD}", "--database", "your_db" ], "env": { "MYSQL_MCP_PASSWORD": "你的强密码" } } } }

注意${env:...}这种写法是否生效取决于 Cursor 版本,实测下来部分版本不解析这个占位符,会直接把字符串当密码传过去导致鉴权失败。所以我的建议是:先用明文跑通,跑通之后再决定要不要折腾环境变量。

接下来是第二份配置——把 Cursor 的模型 Base URL 指向 TaoToken。打开 Cursor 设置,找到 Models 这一栏,关闭官方模型,添加一个自定义模型。关键字段是三个:

字段填写内容
Base URLhttps://taotoken.net/api
API Key你在 TaoToken 控制台创建的 Key
Model ID你计划使用的模型标识,按控制台里可用的填

Base URL 这里注意不要带末尾斜杠,也不要带/v1之外的路径,标准写法就是https://taotoken.net/api。填完之后点 Verify 或者直接发一条消息测试。如果这一步报 401,说明 Key 不对或者没带上;如果报连接超时,说明 Base URL 写错了。这两个报错在第五节会详细对照。

这里有个细节:Cursor 的模型设置和 MCP 配置是分开存的,改完模型设置不需要重启,但改完mcp.json必须完全重启 Cursor。很多人改完mcp.json发现工具没出现,就是因为只关了窗口没退进程。

4. 验证请求:重启 Cursor、看 MCP 日志、跑一条只读 SQL

配置写完,接下来是验证。这一步别偷懒,按顺序来,出问题好定位。

第一步,完全退出 Cursor。注意是退出进程,不是关窗口。Windows 下可以在任务管理器里确认Cursor.exe已经没了,或者右下角托盘图标右键退出。然后重新打开 Cursor,打开你的项目。

第二步,看 MCP 是否加载成功。打开 Cursor 的设置,找到 MCP 这一栏,正常情况下你应该能看到mysql-local这个服务器,状态是绿色的圆点或者显示 connected。如果显示红色或者一直转圈,说明进程没起来,去看日志。

第三步,看 MCP 日志。Cursor 的 MCP 日志入口在设置里的 MCP 面板,点开对应服务器的日志。正常启动的日志里会有类似「server started」「listening」的字样。如果看到Error: connect ECONNREFUSED 127.0.0.1:3306,那是 MySQL 没启动或者端口不对;如果看到Access denied for user,那是账号密码或权限问题。

第四步,跑一条只读 SQL 验证。在 Cursor 的 chat 窗口里输入:

@mysql-local 执行: SELECT 1 AS test_connection;

如果一切正常,你会看到返回一个test_connection = 1的结果。这一步能通,说明 MCP Server 到 MySQL 的链路是通的。

接着验证表结构读取:

@mysql-local 执行: SHOW TABLES;

再验证一条带条件的查询:

@mysql-local 执行: SELECT COUNT(*) FROM your_table WHERE status = 'active';

配置成功后,以下 MCP 工具会自动可用,你可以在 chat 里直接让 AI 调用:

工具名作用
mcp_mysql-local_connect_db建立数据库连接
mcp_mysql-local_query执行 SELECT 查询
mcp_mysql-local_execute执行 INSERT/UPDATE/DELETE
mcp_mysql-local_list_tables列出所有表
mcp_mysql-local_describe_table查看表结构

这里提醒一句:虽然execute工具存在,但如果你按第二节建的是只读账号,它执行写操作时会直接被 MySQL 拒绝,这是预期行为,不是 bug。想验证写权限是否被正确限制,可以故意让 AI 跑一条UPDATE,看它是不是报权限错误——报错反而说明你的安全边界生效了。

如果你在验证阶段想单独测 MCP Server 本身,可以装一个 Inspector:

npm install -g @modelcontextprotocol/inspector npx @modelcontextprotocol/inspector npx @f4ww4z/mcp-mysql-server --host 127.0.0.1 --port 3306 --user mcp_ro --password 你的强密码

然后浏览器打开http://localhost:6274,在界面里手动调用工具。这个方式能把「MCP Server 本身有没有问题」和「Cursor 有没有正确加载」两件事分开,排查时很有用。

5. 常见报错排查:401、local proxy failed、reading choices、OAuth

这一节按真实报错来对照。我把配置过程中最常撞见的几类错误列出来,每类都告诉你它属于哪条链路、怎么修。

报错一:401 Unauthorized。这个几乎都出在模型链路,也就是 Cursor 到 TaoToken 这一段。原因通常是 API Key 没填、填错、或者 Key 被删了。去 TaoToken 控制台https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite确认 Key 还在,然后回到 Cursor 的 Models 设置里重新粘贴一遍。注意粘贴时别带多余空格,Key 前后有空格也会导致 401。

报错二:local proxy failed。这个报错通常出现在 Cursor 尝试走本地代理转发请求的时候。如果你在 Cursor 设置里配了代理相关选项,或者系统环境变量里有HTTP_PROXY/HTTPS_PROXY,Cursor 可能会尝试走代理,而代理又没起来,就报这个。解决方式是检查 Cursor 设置里的网络配置,把不需要的代理项清掉,同时确认 Base URL 是直连的https://taotoken.net/api。这个报错和 MCP 本身无关,别去翻mcp.json。

报错三:reading choices 相关错误。这类报错一般长这样:Cannot read properties of undefined (reading 'choices')。它说明请求发出去了,但返回的结构里没有choices字段,Cursor 解析不了。常见原因是 Base URL 写成了https://taotoken.net/api/v1或者带了多余路径,导致请求打到了错误的端点。把 Base URL 改回https://taotoken.net/api再试。另一个可能是 Model ID 填错了,控制台里没有这个模型,返回体自然不对。

报错四:OAuth 相关错误。如果你在配置里看到 OAuth 字样,多半是 Cursor 的某个模型走的是 OAuth 鉴权流程,而不是 API Key。这时候要确认你添加的是「自定义模型」而不是官方模型,官方模型走 OAuth,自定义模型走 API Key。把官方模型关掉,只留自定义的那个。

报错五:MCP 工具不出现。这个属于 MCP 链路。按顺序查:mcp.json的 JSON 格式对不对(用在线 JSON 校验器过一遍)、Node 和 npx 在不在 PATH、MySQL 服务起没起、账号密码对不对。日志里ECONNREFUSED是连不上 MySQL,Access denied是鉴权失败,command not found是 Node 环境问题。

报错六:No database selected。查询时报这个,说明mcp.json里没写--database,或者 AI 生成的 SQL 没带库名。在配置里补上--database字段即可。

排查的核心思路就一句话:先分清是模型链路还是 MCP 链路。判断方法很简单——如果 Cursor 里发普通消息(不涉及@mysql-local)都报错,那是模型链路;如果普通消息正常,只有@mysql-local报错,那是 MCP 链路。分清了再去看对应的日志,效率高很多。

6. 把链路固定下来:日常使用与长期编码的配置建议

跑通之后,日常使用其实很轻。你只需要在 chat 里@mysql-local加上你的意图,比如「帮我看看 orders 表最近 7 天的订单量按状态分组」,AI 会自己决定调list_tables还是describe_table,再拼 SQL 执行。我自己的习惯是先让它describe_table看一眼字段,确认字段名没记错,再让它写查询,这样返工少。

如果你打算长期在 Cursor 里做编码和数据库联调,建议把模型链路固定成一个稳定的配置。TaoToken 这边有 Coding Plan 的入口https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite,适合需要持续调用、不想每次手动换 Key 的场景。接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面把 Base URL、鉴权头、模型列表都列清楚了,配 Cursor 的时候对着看一遍能少踩坑。

最后给几个实用技巧。第一,mcp.json改完一定完全重启 Cursor,别只关窗口。第二,给 MCP 用的 MySQL 账号坚持只读,写操作走别的通道。第三,如果同时接多个库,可以在mcpServers里加多个条目,比如mysql-local和mysql-test,用不同的名字区分,chat 里@的时候选对应的。第四,Base URL 和 API Key 这类敏感信息别提交到 Git,mcp.json如果放在项目目录里记得加进.gitignore。

配置这件事,第一次跑通会花点时间,但一旦通了,后面每天省下的切窗口、翻表结构的时间是实打实的。把上面两份配置抄进去,按第四节的验证步骤走一遍,基本就能用起来了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询