不用再手动查表结构了:配好 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 命令:

ini 复制代码
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 包

如果只想当前项目生效:

ini 复制代码
claude mcp add -s project mysql-dev \
  -e MYSQL_HOST="127.0.0.1" \
  ...

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


方式二:手动写配置文件

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

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

perl 复制代码
{
  "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 里设:

ini 复制代码
export MYSQL_PWD="your_actual_password"

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


验证

csharp 复制代码
claude mcp list              # 列出所有 MCP Server
claude mcp get mysql-dev     # 查看详情

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


实际效果

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

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

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

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


安全(这节一定要看)

建一个只读数据库账号

sql 复制代码
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 都不用手动查表结构了。


下一篇讲 Memory + Hook------让 Claude Code 记住你的偏好,改完代码自动格式化、commit 前自动跑测试。有用的话欢迎点赞收藏。

相关推荐
Y3815326621 小时前
SERP 数据清洗实战:字段标准化、日期解析与去重键
开发语言·数据库·python·python数据库
Databend1 小时前
Databend 原生数据血缘:追溯指标来源,检查变更影响
大数据·数据库·sql
用户8181870627461 小时前
第28章 消息积压应急处理实录:一次真实大促故障复盘
java·后端
葡萄城技术团队1 小时前
GcExcel V9.2 新特性揭秘:让表单控件随形状一起成组
后端
镜舟科技1 小时前
Semantic View 技术解析(二):业务口径如何进入数据库执行路径
数据库·sql·agent
葡萄城技术团队2 小时前
GcExcel V9.2 新特性揭秘:工作簿里的一层自定义 XML
后端
TechWJ2 小时前
没有公网 IP 也想远程连 PostgreSQL?从本地数据库到固定 TCP 地址完整配置
大数据·数据库·网络安全·postgresql·内网穿透
DyLatte2 小时前
AI 给了我 8 个优化方案,全都是对的,但没有一个有用
前端·后端·程序员
传奇开心果编程2 小时前
【Go入门练中学】第2课:条件与循环
后端·学习·golang