MySQL 与 MCP 协议集成实战:用自然语言操作数据库的完整流程
准备工作:先搭一个能跑的数据库
要让 AI 跟 MySQL 对话,首先得有个数据库。我们新建一个叫 lanyun 的库,里面放三张表:用户、商品、订单——典型的电商模型。

create database lanyun;
use lanyun;
接着建表。用户表带用户名、邮箱、手机号,都设了唯一约束;商品表有价格和库存;订单表则通过外键关联前两张表,并记录状态(1-待付款,2-已付款,3-已发货,4-已完成,5-已取消)。
所有表都用 InnoDB 引擎和 utf8mb4 字符集,价格字段用 DECIMAL 避免浮点误差。这些细节不是为了炫技,而是确保后续查询和写入不会因为类型或约束问题崩掉。
然后灌数据:10 个用户、8 个商品、15 条订单。比如张三买了小米手机(已完成),李四订了华为(已发货),王五下单 MacBook 但还没付款……订单状态故意覆盖各种情况,方便后面测试筛选条件。
最后手动查一下 SELECT * FROM users LIMIT 10;,确认数据落盘没问题。这一步看似多余,但实际开发中经常因为字符集或权限问题导致插入失败,提前验证能省很多调试时间。
配置 MCP 客户端:让 AI 看到你的数据库
接下来在 VSCode 里装 CodeBuddy 插件,这是目前支持 MCP 协议的主流客户端之一。配置文件是个 JSON,核心是告诉插件怎么连 MySQL:
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["-y", "@kevinwatt/mysql-mcp"],
"env": {
"MYSQL_HOST": "你的IP",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASS": "密码",
"MYSQL_DB": "lanyun"
}
}
}
}这里的关键是 @kevinwatt/mysql-mcp 这个包——它是个中间件,能把 AI 的自然语言指令转成合法的 SQL,再通过标准 MySQL 协议发给数据库。保存配置后,插件会自动拉起这个服务。如果看到状态栏显示“MCP mysql connected”,说明通道打通了。
用自然语言查复杂数据
现在试试让 AI 做点事。比如问它:
找出年龄大于 28 岁、买过 3000 元以上商品、订单创建于 2025 年之后、且没取消的订单,显示用户姓名、手机号、商品名、订单状态和时间,按年龄降序、时间升序排。
AI 收到指令后,会先通过 MCP 获取三张表的结构,然后生成对应的 SQL。实际执行的语句长这样:
SELECT
u.username, u.phone, p.name, o.status, o.create_time
FROM orders o
JOIN users u ON o.user_id = u.id
JOIN products p ON o.product_id = p.id
WHERE
u.age > 28
AND p.price > 3000
AND o.create_time >= '2025-01-01'
AND o.status != 5
ORDER BY u.age DESC, o.create_time ASC;
结果返回后,AI 还能顺手导出成 Excel。我们拿这条 SQL 去 MySQL 客户端直接跑一遍,对比两份结果——完全一致。这说明 MCP 不是黑盒,它的逻辑可追溯、可验证。

让 AI 往数据库里写数据

读数据只是开始,写入才是难点。试试这个指令:

往 users 表加五个新用户:qianer(33岁)、songsan(38岁)……注意别跟已有用户名、手机号或邮箱冲突。

MCP 会生成一条批量 INSERT 语句。如果真有重复(比如不小心写了已存在的手机号),MySQL 会报错,AI 也能把错误信息原样返回,而不是假装成功。

插入完成后,我们手动查 SELECT * FROM users WHERE id >= 11;(因为之前有 10 条),确认新数据准确入库。字段顺序、值、自增 ID 都对得上。

为什么这套流程值得试?

传统做法里,业务人员想查数据得找 DBA 写 SQL,或者自己学语法。现在通过 MCP,只要描述清楚需求,AI 就能生成正确查询,甚至处理导出、绘图等后续动作。

更重要的是,整个过程透明可控:

- 数据库权限由你掌握(配置里的账号密码)
- AI 生成的 SQL 可审查
- 错误会如实反馈,不会静默失败

目前 MCP 生态还在早期,MySQL 是其中一个比较成熟的实现。如果你有内部系统想接入 AI,不妨照着这个流程搭个原型——不用改现有架构,只需加一层协议转换,就能让大模型直接对话你的数据。




