1. 从一次课堂演示说起:MCP Client 查 MySQL 主键到底卡在哪
MCP 全称 Model Context Protocol,是 Anthropic 推出的一套开源标准协议,用来把 AI 模型和外部工具、数据源连接起来。你可以把它理解成 AI 应用的 USB-C 接口:以前 N 个模型对接 M 个工具,可能要写 N×M 套适配代码;有了 MCP,模型侧只要实现 MCP Client,工具侧只要暴露 MCP Server,两边按同一套 JSON-RPC 规范说话就行。这次要做的场景很具体:用 Claude Desktop 当 MCP Host,实例化 MCP Client 去连本地 MySQL MCP Server,然后让 AI 直接回答“数据库里有哪些主键值”。
真正动手时,痛点往往不在 MCP 协议本身,而在“模型通道”和“MCP 服务”两套配置是分开的。Claude Desktop 要调模型,得有一个可用的 API 通道(Key + Base URL);要查数据库,又得在配置文件里加 MySQL MCP Server 的命令、密码、库名。很多人只配了其中一半,结果要么模型不响应,要么 MCP 服务显示 not running。这篇就按“先通模型通道,再接 MCP Server”的顺序,把 Base URL 填成 TaoToken 的 API 地址,再连本地 MySQL,最后验证 AI 能否正常调用工具查到主键。适合正在学 MCP、想跑通第一个数据库查询案例的开发者。
2. 前置准备:TaoToken 提供模型通道,MCP Server 负责数据库
先把边界说清楚,避免后面混淆。TaoToken 在这里只做一件事:给 Claude Desktop 提供模型通道的 Key 和 Base URL。它不替代 MCP Server,也不访问你的数据库。数据库查询这件事,完全由你本地运行的 MySQL MCP Server 完成,TaoToken 不参与。
所以整体链路是这样的:
Claude Desktop(MCP Host)→ 通过 Base URL 调模型 → 模型判断需要工具 → MCP Client 连本地 MySQL MCP Server → 查库返回结果 → 模型整理成自然语言。
你需要准备三样东西:
第一,一个 TaoToken 的 API Key。打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 注册后,在控制台创建 Key。这个 Key 只用于模型通道。
第二,Claude Desktop 客户端。它是 MCP Host,负责协调 MCP Client 和模型。
第三,本地 MySQL 环境,以及 uv 工具。MySQL MCP Server 通常用 uv 来拉起,所以先装 uv:
pip install uv装完可以用uv --version确认。如果提示找不到命令,检查一下 Python 的 Scripts 目录有没有加进 PATH。
注意:TaoToken 的 Base URL 填
https://taotoken.net/api,不要加/v1,也不要带任何 UTM 参数。这一点后面配置时会再强调一次。
3. 可复制配置:Base URL 填 TaoToken,MCP 配置连 MySQL
3.1 配置 Claude Desktop 的模型通道
Claude Desktop 的配置文件位置按系统区分:
Windows 一般在%APPDATA%\Claude\claude_desktop_config.json; macOS 一般在~/Library/Application Support/Claude/claude_desktop_config.json。
如果你用的是支持自定义模型通道的客户端版本,模型通道部分需要填两个值:API Key 用你在 TaoToken 创建的 Key,Base URL 填:
https://taotoken.net/api这里再提醒一次:不要写成https://taotoken.net/api/v1,也不要带?utm_source=...之类的参数。Base URL 就是纯地址,客户端会自己拼接后续路径。
3.2 在同一个配置文件里加 MySQL MCP Server
MCP Server 的配置和模型通道可以放在同一个claude_desktop_config.json里。核心是mcpServers字段,每个服务一个名字,下面用command和args描述怎么启动。
MySQL MCP Server 的典型配置长这样:
{ "mcpServers": { "mysql": { "command": "uvx", "args": [ "--from", "mysql-mcp-server", "mysql_mcp_server" ], "env": { "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASSWORD": "你的数据库密码", "MYSQL_DATABASE": "你的数据库名" } } } }几个参数对照着看:
| 字段 | 作用 | 示例 |
|---|---|---|
| command | 启动命令 | uvx |
| args | 包名和入口 | --from mysql-mcp-server mysql_mcp_server |
| MYSQL_HOST | 数据库地址 | 127.0.0.1 |
| MYSQL_PORT | 端口 | 3306 |
| MYSQL_USER | 用户名 | root |
| MYSQL_PASSWORD | 密码 | 你的真实密码 |
| MYSQL_DATABASE | 库名 | test_db |
如果你用的 MySQL MCP Server 包名不同,把--from后面的包名换成你实际安装的那个即可。关键是command用uvx,它会自动在隔离环境里拉起服务,不用你手动建虚拟环境。
提示:密码里如果有特殊字符,JSON 里要正常转义。改完配置保存,别急着开客户端,先确认 JSON 没有语法错误,可以用在线 JSON 校验工具过一遍。
4. 验证请求:重启后看到 running,再问主键值
配置保存后,完全退出 Claude Desktop 再重新打开。注意是“完全退出”,不是关窗口,Windows 要在托盘右键退出,macOS 用 Cmd+Q。
重启后,在客户端的 MCP 服务列表里应该能看到mysql这个服务,状态显示 running。如果显示 failed 或 not running,先跳到第 5 节排查。
确认 running 之后,直接向它提问:
帮我查询数据库有哪些主键值正常流程是这样的:模型先判断这个问题需要调用 MCP 工具,然后客户端弹出工具授权提示,你点击允许;MCP Client 按 MCP 协议向本地 MySQL MCP Server 发请求;Server 查库后把结果返回;模型整理成自然语言告诉你主键有哪些。
这里有个安全细节值得注意:模型调用 MCP 的语句、参数、返回结果,用户都能在界面上看到,而且需要你手动授权。这就是 MCP 的安全策略——工具执行不是黑盒,你能决定放不放行。
如果一切正常,你会看到类似“表 xxx 的主键是 id”这样的回答。到这一步,说明模型通道(TaoToken 的 Key + Base URL)和 MCP 服务(本地 MySQL Server)两条链路都通了。
5. 本篇常见错排查:Base URL、uv、MCP 状态三类问题
5.1 模型不响应或报鉴权错误
最常见的原因是 Base URL 写错。检查是不是多写了/v1,或者复制地址时把 UTM 参数也带进去了。正确写法就是https://taotoken.net/api。另外确认 API Key 没有多余空格,Key 是在 TaoToken 控制台创建的,别和数据库密码搞混。
5.2 MCP 服务显示 not running
先看uvx能不能在终端直接跑。打开终端执行:
uvx --from mysql-mcp-server mysql_mcp_server如果报“command not found”,说明 uv 没装好或没进 PATH。如果报数据库连接错误,检查MYSQL_HOST、MYSQL_PORT、密码、库名是否和本地实际一致。本地 MySQL 默认只监听 127.0.0.1,用 localhost 有时会走 socket,建议统一写 127.0.0.1。
5.3 服务 running 但查不到主键
可能是库名或表名不对,或者当前用户没有该库的查询权限。可以先用命令行登录 MySQL 确认:
SHOW TABLES; SHOW KEYS FROM 你的表名 WHERE Key_name = 'PRIMARY';如果命令行能查到,MCP 里查不到,检查配置里的MYSQL_DATABASE是不是写成了别的库。还有一种情况是模型没触发工具调用,可以换个更明确的问法,比如“用 mysql 工具查询 test_db 库里所有表的主键”。
5.4 改了配置没生效
Claude Desktop 只在启动时读一次配置。改完必须完全退出再开,光关窗口不算。如果反复重启还是旧配置,检查是不是改错了配置文件路径,有些系统会有多个用户目录。
6. 配通之后:模型通道和 MCP 服务各管一段
这套流程跑下来,你会发现分工其实很清晰。TaoToken 管的是模型通道:给你 Key 和 Base URL,让 Claude Desktop 能正常调模型。MySQL MCP Server 管的是数据访问:在你本地跑,按 MCP 协议把库里的信息暴露给模型。两者通过 Claude Desktop 这个 MCP Host 串起来,谁也不越界。
如果你后面要长期做编码或 Agent 类任务,可以了解下 Coding Plan,把模型通道固定下来;如果只是想验证某个模型在 MCP 场景下的表现,可以直接用模型对话试;接入和排障过程中需要的 Key 和文档,分别在 API Keys 和接入文档里。地址统一从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 进,Base URL 始终是https://taotoken.net/api,不带/v1、不加参数。
最后留一个实用习惯:每次改完claude_desktop_config.json,先用uvx在终端手动跑一遍 MCP Server,确认能起来再重启客户端。这样能把“配置问题”和“客户端问题”分开,排查快很多。