1. 为什么要在 workbuddy 里折腾 MySQL-mcp
workbuddy 是本地 AI 工具里比较适合接数据库 MCP 的一类客户端,MySQL-mcp 则是把 MySQL 查询能力包装成 MCP 协议服务的开源项目。两者接上之后,你在 workbuddy 里用自然语言就能让 AI 去查表、看字段、跑统计,不用来回切 Navicat 和终端。适合的人群很明确:本地做数据分析、后端开发、AIops 尝鲜的工程师,尤其是已经在用 workbuddy 管多个 MCP 服务的人。
我试过把 MySQL-mcp 直接塞进 workbuddy,一开始卡在鉴权上——每个 MCP 服务都要单独配 Key,服务一多管理就乱。后来换成 TaoToken 统一 Key 接入,所有走 API 通道的 MCP 服务共用一个 Key,settings.json 里只维护一份凭证,省事不少。这篇就把整个配置过程拆开写,从 MySQL 容器到 workbuddy 的 settings.json 骨架,再到验证查询能不能通,一步步来。
核心检索词先摆出来:workbuddy 配置 MySQL-mcp、TaoToken 统一 Key、settings.json 骨架、MCP 接入数据库。下面按实操顺序走。
2. 前置准备:MySQL 容器与 TaoToken Key
2.1 起一个测试用 MySQL 8 容器
本地测试别直接连生产库,先起个容器。目录结构先建好:
mkdir -p data conf logs然后跑容器,端口映射 3306,root 密码自己定一个:
docker run -d \ --name mysql8 \ -p 3306:3306 \ --restart always \ -e MYSQL_ROOT_PASSWORD='Root@123456' \ -v ./data:/var/lib/mysql \ -v ./conf/my.cnf:/etc/mysql/conf.d/my.cnf \ -v ./logs:/var/log/mysql \ mysql:8.0conf/my.cnf参考配置如下,字符集和时区是关键,不配的话中文和日期查询容易出乱码:
[mysqld] port=3306 server-id=1 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default-time-zone='+08:00' log-error=/var/log/mysql/error.log max_connections=5000 innodb_buffer_pool_size=1G innodb_file_per_table=1 [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4容器起来后用docker exec -it mysql8 mysql -uroot -p进去建个测试库,比如test_db,塞两张表方便后面验证。
2.2 拿 TaoToken 统一 Key
TaoToken 在这里的角色是统一 API 通道:MySQL-mcp 如果需要走远程模型或统一鉴权,就用它的 Key。先去控制台拿 Key:
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=mysql_mcp_doc
- API Keys 管理:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=mysql_mcp_keys
注意:Key 只存本地配置文件,别提交到 Git 仓库。settings.json 里用环境变量引用更稳。
拿 Key 的入口在 console,模型对话入口在 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=mysql_mcp_chat ,后面验证模型连通性会用到。
3. 可复制配置:MySQL-mcp 服务与 settings.json 骨架
3.1 拉取并配置 MySQL-mcp
选 v2.0.9 版本,稳定:
git clone -b v2.0.9 https://github.com/benborla/mcp-server-mysql.git cd mcp-server-mysql改.env,重点是数据库连接和远程 MCP 开关:
MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASS=Root@123456 MYSQL_DB= ALLOW_INSERT_OPERATION=true ALLOW_UPDATE_OPERATION=true ALLOW_DELETE_OPERATION=true ALLOW_DDL_OPERATION=true SCHEMA_INSERT_PERMISSIONS=test_db:true,staging_db:false SCHEMA_UPDATE_PERMISSIONS=test_db:true,staging_db:false SCHEMA_DELETE_PERMISSIONS=test_db:false,staging_db:false SCHEMA_DDL_PERMISSIONS=test_db:true,staging_db:false MULTI_DB_WRITE_MODE=true MYSQL_SSL=false MYSQL_SSL_REJECT_UNAUTHORIZED=true MYSQL_POOL_SIZE=10 MYSQL_QUERY_TIMEOUT=30000 MYSQL_CACHE_TTL=60000 MYSQL_RATE_LIMIT=100 MYSQL_MAX_QUERY_COMPLEXITY=1000 ENABLE_LOGGING=true MYSQL_LOG_LEVEL=info MYSQL_METRICS_ENABLED=false IS_REMOTE_MCP=true PORT=3000 REMOTE_SECRET_KEY=1234567890LIS_REMOTE_MCP=true和REMOTE_SECRET_KEY是 workbuddy 走 HTTP 方式连接的前提,PORT=3000对应后面的 URL。
3.2 启动 MCP 服务
cd ./mcp-server-mysql && npm install && npm run build nohup node dist/index.js > ./mysql-mcp.log 2>&1 &看日志确认监听:
tail -f ./mysql-mcp.log出现MCP server listening on port 3000之类字样就对了。
3.3 workbuddy 的 settings.json 骨架
这是本篇的核心。workbuddy 里自定义连接器,把 MySQL-mcp 和 TaoToken 统一 Key 都写进去:
{ "mcpServers": { "mysql-mcp": { "type": "http", "url": "http://127.0.0.1:3000/mcp", "headers": { "Authorization": "Bearer 1234567890L" }, "disabled": false } }, "apiProviders": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "${TAOTOKEN_API_KEY}", "models": ["claude-3-5-sonnet", "gpt-4o"] } } }字段说明用表格对照更清楚:
| 字段 | 作用 | 取值示例 |
|---|---|---|
| mcpServers.mysql-mcp.type | 连接方式 | http |
| mcpServers.mysql-mcp.url | MCP 服务地址 | http://127.0.0.1:3000/mcp |
| headers.Authorization | 远程 MCP 密钥 | Bearer 1234567890L |
| apiProviders.taotoken.baseUrl | 统一 API 通道 | https://taotoken.net/api |
| apiProviders.taotoken.apiKey | 统一 Key | 环境变量引用 |
提示:
apiKey用${TAOTOKEN_API_KEY}引用环境变量,别硬编码。启动 workbuddy 前先export TAOTOKEN_API_KEY=你的Key。
保存后回到 MCP 列表,需要手动点信任,否则连接器是灰的。
4. 验证请求:确认 MySQL-mcp 连通并返回查询结果
4.1 先验证 MCP 服务本身
不经过 workbuddy,直接用 curl 打一下 MCP 端点,确认服务活着:
curl -X POST http://127.0.0.1:3000/mcp \ -H "Authorization: Bearer 1234567890L" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'返回里应该能看到mysql_query、list_tables之类的工具列表。如果返回 401,说明REMOTE_SECRET_KEY和请求头里的 Bearer 不一致。
4.2 在 workbuddy 里跑一次真实查询
启动 workbuddy,确认连接器已信任。新建一个专家,输入自然语言:
帮我查一下 test_db 里有哪些表,然后统计 users 表的行数正常的话,workbuddy 会调用 MySQL-mcp 的list_tables和mysql_query,返回类似:
test_db 下的表:users, orders, products users 表当前行数:128如果这一步返回的是模型回答但没走 MCP,检查 settings.json 里disabled是不是 false,以及连接器有没有点信任。
4.3 验证 TaoToken 通道
如果 MySQL-mcp 需要调用模型做 SQL 生成,走的是 TaoToken 通道。用模型对话入口测一下 Key 是否有效:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"claude-3-5-sonnet","messages":[{"role":"user","content":"ping"}]}'返回正常 JSON 就说明统一 Key 通了。长期做编码和 Agent 的话,可以考虑 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=mysql_mcp_plan
5. 本篇常见错排查
配置过程中踩的坑集中列一下,对着查能省不少时间。
连接被拒:curl报Connection refused,多半是 MCP 服务没起来。ps aux | grep node看进程在不在,不在就重新nohup启动,检查mysql-mcp.log有没有报错。
401 Unauthorized:REMOTE_SECRET_KEY和 settings.json 里的 Bearer 值不一致。两边改成一样的,重启 MCP 服务。
MySQL 连接失败:.env里MYSQL_HOST写127.0.0.1而不是localhost,容器端口映射确认是3306:3306。用docker exec进去能连上,说明容器没问题,问题在 MCP 的.env。
workbuddy 里连接器灰色:没点信任。保存 settings.json 后回 MCP 列表,手动启用。
查询返回空:MYSQL_DB留空是多库模式,查询时要带库名,比如test_db.users。单库模式就把MYSQL_DB=test_db填上。
中文乱码:my.cnf里character-set-server=utf8mb4没配,或者建库时没指定字符集。重建库时加DEFAULT CHARSET=utf8mb4。
权限报错:写操作被拒,检查ALLOW_INSERT_OPERATION等开关,以及SCHEMA_*_PERMISSIONS里对应库是不是 true。生产库建议全关写权限。
6. 后续接入与统一 Key 维护
MySQL-mcp 跑通之后,workbuddy 里再加别的 MCP 服务,settings.json 的mcpServers直接追加就行,TaoToken 的apiProviders不用动,统一 Key 一份管所有。接入文档和 API Keys 入口放这儿,配新服务时对着看:
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=mysql_mcp_doc_end
- API Keys:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=mysql_mcp_keys_end
- 控制台:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=mysql_mcp_console
下一篇打算接 Redis 的 MCP,思路一样:本地服务 + 统一 Key + settings.json 骨架。这套配置骨架你直接复制改字段就能用,重点是IS_REMOTE_MCP、REMOTE_SECRET_KEY和Authorization三处保持一致,其余按库名和权限微调。