配置 MySQL MCP,让 Claude Code 自动读取表结构并生成代码

作者:袖梨 2026-09-17

让 Claude Code 直接生成 CRUD 时,真正容易出问题的往往不是代码模板,而是它并不了解数据库里的真实字段。手动查询表结构再把 DDL 贴进上下文既繁琐,也可能遗漏信息。借助 MySQL MCP,可以让 Claude Code 按需读取开发库元数据,再基于准确的字段名和类型完成代码生成。

以前让 Claude Code 生成 CRUD 有个痛点:它不知道你的真实表结构。你得先 SHOW CREATE TABLE、复制 DDL、贴到 Prompt 里。偶尔忘了贴,它给你编一个字段名——代码跑起来就报错。

配好 MySQL MCP 之后,Claude Code 直接连数据库读表结构。你说"为 sys_product 表生成 CRUD",它自己去查字段、生成代码。这篇文章教你怎么配。


MCP 是什么

MCP(Model Context Protocol)是 Anthropic 推出的开放协议,相当于 Claude Code 的插件系统。通过 MCP Server,Claude Code 能连接数据库、文件系统、GitHub、Slack 这些外部数据源。

本文以 MySQL 为例。配好后 Claude Code 直接读真实表结构生成代码——不会编列名,字段类型也跟数据库一致。


方式一:命令行一键配置(推荐)

最简单的是用 claude mcp add 命令:

claude mcp add mysql-dev 
  -e MYSQL_HOST="127.0.0.1" 
  -e MYSQL_PORT="3306" 
  -e MYSQL_USER="dev_readonly" 
  -e MYSQL_PASS="your_password" 
  -e MYSQL_DB="admin_service" 
  -e ALLOW_INSERT_OPERATION="false" 
  -e ALLOW_UPDATE_OPERATION="false" 
  -e ALLOW_DELETE_OPERATION="false" 
  -- npx @benborla29/mcp-server-mysql

各参数含义:

  • mysql-dev:你自己起的名字,区分不同的 MCP Server
  • MYSQL_HOST/PORT/USER/PASS/DB:数据库连接信息
  • ALLOW_*_OPERATION=false:禁止写操作——AI 只能读不能改
  • npx @benborla29/mcp-server-mysql:MySQL MCP Server 的 npm 包

如果只想当前项目生效:

claude mcp add -s project mysql-dev 
  -e MYSQL_HOST="127.0.0.1" 
  ...

项目级配置写入 .mcp.json,不包含密码的配置可以随代码提交。密码让每个开发者自己设环境变量。


方式二:手动写配置文件

不想用命令行的话,手动编辑也行。

项目级配置.mcp.json,放项目根目录):

{
  "mcpServers": {
    "mysql-dev": {
      "command": "npx",
      "args": ["-y", "@benborla29/mcp-server-mysql"],
      "env": {
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "dev_readonly",
        "MYSQL_PASS": "${MYSQL_PWD}",
        "MYSQL_DB": "admin_service",
        "ALLOW_INSERT_OPERATION": "false",
        "ALLOW_UPDATE_OPERATION": "false",
        "ALLOW_DELETE_OPERATION": "false"
      }
    }
  }
}

密码用 ${MYSQL_PWD} 引用环境变量,避免硬编码。每个开发者在自己的 ~/.bashrc 里设:

export MYSQL_PWD="your_actual_password"

如果想在所有项目里用同一个数据库连接,把上面的 JSON 放到 ~/.claude.json(全局配置),就不用每个项目都配一遍。


验证

claude mcp list              # 列出所有 MCP Server
claude mcp get mysql-dev     # 查看详情

Claude Code 里执行 /mcp 也行。状态显示 "Connected" 就说明连上了。


实际效果

之前在 Skills 那篇里讲了 Skills 怎么标准化 CRUD 流程。配上 MCP 之后,效果更好:

> 帮我查一下 sys_product 表有哪些字段,然后生成完整 CRUD

Claude Code 自动通过 MCP 连数据库,执行 SHOW COLUMNS FROM sys_product,拿到真实字段名和类型,再按 Skill 定义的流程生成代码。

全程不需要你手动查表、复制 DDL、贴到 Prompt 里。而且生成的代码直接用真实列名——不会出现字段名对不上的低级错误。


安全(这节一定要看)

建一个只读数据库账号

CREATE USER 'dev_readonly'@'localhost' IDENTIFIED BY 'strong_password';
GRANT SELECT ON admin_service.* TO 'dev_readonly'@'localhost';
FLUSH PRIVILEGES;

只给 SELECT。即使 MCP 配置里写操作开关忘了设 false,AI 也动不了数据——数据库层面就没给权限。

密码用环境变量:配置里写 ${MYSQL_PWD},实际密码存 ~/.bashrc 里。

写操作显式关闭:虽然默认就是 false,但显式写一遍更安全——万一哪天默认行为变了,你的配置扛得住。

绝对不要连生产库:MCP 连开发库或只读从库。连接生产数据库的后果不需要我多说。


常见坑

连不上:先手动 mysql -h 127.0.0.1 -u dev_readonly -p 确认能连上。能连上的话检查 MCP 配置里的 host/port/user/pass/db 对不对。

启动超时:npx 第一次下载包比较慢,等一分钟。或者先全局安装 npm install -g @benborla29/mcp-server-mysql,配置里 command 用 mcp-server-mysql(不用 npx)。

查不到数据:确认数据库名没错、用户有该库的 SELECT 权限。

配错了想重来claude mcp remove mysql-dev 移除,然后重新 claude mcp add


总结

  1. MCP 让 Claude Code 能连接数据库、文件系统等外部数据源
  2. 推荐用 claude mcp add 命令一键配置
  3. 数据库必须用只读账号 + 密码用环境变量
  4. 配合 Skills 使用效果最好——Skills 定义流程,MCP 提供真实数据

配一次,以后每次生成 CRUD 都不用手动查表结构了。

相关文章

精彩推荐