不用再手动查表结构了:配好 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 前自动跑测试。有用的话欢迎点赞收藏。

相关推荐
前端兰博12 小时前
05-Redis
redis·后端
OnlineProxy12 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
databook12 小时前
从手动检查到自动监控:一个数据质量工作流的实现
后端·python·数据分析
【JAVA】玩家12 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
东风破_13 小时前
从 Neo4j 到 GraphRAG:用 Text-to-Cypher 构建图检索 RAG
人工智能·后端
辻弋20113 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
可乐鸡翅yeah_14 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
llqbzllll14 小时前
Spring AI 工具调用不是反射一下就结束:用 2.0.1 跑通失败恢复与调用上限
人工智能·后端
石头麻辣鱼15 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川15 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能