跳到主要内容
MySQL 与 MCP 协议集成实战:从环境搭建到 AI 数据交互 | 极客日志
SQL Node.js AI
MySQL 与 MCP 协议集成实战:从环境搭建到 AI 数据交互 综述由AI生成 通过 MCP 协议将 MySQL 数据库与大语言模型集成,内容包括数据库基础构建、表结构设计、测试数据初始化,以及 MCP 客户端配置。通过自然语言指令,实现了复杂的多表关联查询和数据写入操作,验证了 AI 直接操作关系型数据库的可行性与准确性。
神经兮兮 发布于 2026/3/23 更新于 2026/5/5 7 浏览引言
在大模型应用开发中,MCP(Model Context Protocol)正成为连接 AI 与本地数据的关键桥梁。本文将基于 MySQL 数据库,拆解如何通过 MCP 协议让 AI 直接操作关系型数据库,涵盖环境构建、架构设计、数据初始化及自然语言查询的全流程。
一、MCP 服务器发现与配置
在交互前,需确立连接协议与服务源。开发者可在 MCP 服务器市场中检索 mysql 关键字获取相关资源。选中服务后,界面会展示详细的配置详情页,提供后续在客户端(如 VSCode 扩展)中所需的 JSON 结构与参数说明,包括环境依赖和启动命令。
二、数据库基础设施构建
配置 MCP 连接前,确保底层 MySQL 环境就绪。以下操作展示了如何从零开始构建名为 lanyun 的数据库实例。
2.1 创建数据库
通过管理工具连接 MySQL 实例,执行 DDL 命令。
CREATE DATABASE lanyun;
USE lanyun;
CREATE DATABASE 初始化命名空间,USE 切换会话上下文。基础配置:用户 root,端口 3306。
2.2 表结构设计
为验证复杂查询能力,设计三张核心表:users、products、orders。
CREATE TABLE IF NOT EXISTS `users` (
`id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户 ID' ,
`username` VARCHAR (50 ) NOT NULL UNIQUE COMMENT '用户名' ,
`email` VARCHAR (100 ) UNIQUE COMMENT '邮箱' ,
`phone` VARCHAR (20 ) UNIQUE COMMENT '手机号' ,
`age` TINYINT UNSIGNED COMMENT '年龄' ,
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT
) ENGINE InnoDB CHARSET utf8mb4 COMMENT ;
IF `products` (
`id` AUTO_INCREMENT COMMENT ,
`name` ( ) COMMENT ,
`price` ( , ) COMMENT ,
`stock` COMMENT ,
`category` ( ) COMMENT ,
`create_time` DATETIME COMMENT
) ENGINE InnoDB CHARSET utf8mb4 COMMENT ;
IF `orders` (
`id` AUTO_INCREMENT COMMENT ,
`user_id` COMMENT ,
`product_id` COMMENT ,
`quantity` COMMENT ,
`total_price` ( , ) COMMENT ,
`status` TINYINT COMMENT ,
`create_time` DATETIME COMMENT ,
(`user_id`) `users`(`id`),
(`product_id`) `products`(`id`)
) ENGINE InnoDB CHARSET utf8mb4 COMMENT ;
'创建时间'
=
DEFAULT
=
=
'用户信息表'
CREATE TABLE
NOT
EXISTS
INT
PRIMARY KEY
'商品 ID'
VARCHAR
100
NOT NULL
'商品名称'
DECIMAL
10
2
NOT NULL
'商品价格'
INT
NOT NULL
DEFAULT
0
'库存'
VARCHAR
50
'商品分类'
DEFAULT
CURRENT_TIMESTAMP
'创建时间'
=
DEFAULT
=
=
'商品信息表'
CREATE TABLE
NOT
EXISTS
INT
PRIMARY KEY
'订单 ID'
INT
NOT NULL
'用户 ID'
INT
NOT NULL
'商品 ID'
INT
NOT NULL
DEFAULT
1
'购买数量'
DECIMAL
10
2
NOT NULL
'订单总价'
NOT NULL
DEFAULT
1
'状态:1-待付款,2-已付款,3-已发货,4-已完成,5-已取消'
DEFAULT
CURRENT_TIMESTAMP
'创建时间'
FOREIGN KEY
REFERENCES
FOREIGN KEY
REFERENCES
=
DEFAULT
=
=
'订单信息表'
技术细节:使用 InnoDB 支持事务;utf8mb4 兼容 Emoji;价格用 DECIMAL 避免精度丢失;外键保证引用完整性。
2.3 初始化测试数据 INSERT INTO `users` (`username`,`email`,`phone`,`age`) VALUES
('zhangsan' ,'[email protected] ' ,'13800138000' ,25 ),
('lisi' ,'[email protected] ' ,'13800138001' ,30 ),
('wangwu' ,'[email protected] ' ,'13800138002' ,22 ),
('zhaoliu' ,'[email protected] ' ,'13800138003' ,28 ),
('sunqi' ,'[email protected] ' ,'13800138004' ,35 ),
('zhouba' ,'[email protected] ' ,'13800138005' ,26 ),
('wujian' ,'[email protected] ' ,'13800138006' ,29 ),
('chenshi' ,'[email protected] ' ,'13800138007' ,32 ),
('yangjiu' ,'[email protected] ' ,'13800138008' ,24 ),
('huangshi' ,'[email protected] ' ,'13800138009' ,31 );
INSERT INTO `products` (`name`,`price`,`stock`,`category`) VALUES
('小米 14 Pro' ,4999.00 ,200 ,'手机' ),
('华为 Mate 60 Pro' ,5999.00 ,150 ,'手机' ),
('苹果 MacBook Pro' ,12999.00 ,80 ,'笔记本电脑' ),
('联想拯救者 Y9000P' ,8999.00 ,100 ,'笔记本电脑' ),
('大疆 Mini 4 Pro' ,3799.00 ,60 ,'无人机' ),
('索尼 WH-1000XM5' ,2499.00 ,120 ,'耳机' ),
('小米空气净化器 4 Pro' ,899.00 ,180 ,'智能家居' ),
('美的电饭煲 5L' ,399.00 ,250 ,'家电' );
INSERT INTO `orders` (`user_id`,`product_id`,`quantity`,`total_price`,`status`) VALUES
(1 ,1 ,1 ,4999.00 ,4 ),
(1 ,6 ,1 ,2499.00 ,2 ),
(2 ,2 ,1 ,5999.00 ,3 ),
(3 ,3 ,1 ,12999.00 ,1 ),
(4 ,4 ,1 ,8999.00 ,4 ),
(5 ,5 ,1 ,3799.00 ,2 ),
(6 ,7 ,2 ,1798.00 ,3 ),
(7 ,8 ,1 ,399.00 ,1 ),
(8 ,1 ,2 ,9998.00 ,4 ),
(9 ,2 ,1 ,5999.00 ,5 ),
(10 ,3 ,1 ,12999.00 ,2 ),
(2 ,6 ,1 ,2499.00 ,4 ),
(3 ,7 ,1 ,899.00 ,3 ),
(4 ,8 ,3 ,1197.00 ,1 ),
(5 ,5 ,2 ,7598.00 ,2 );
2.4 数据验证 SELECT * FROM `users` LIMIT 10 ;
三、MCP 连接配置与环境启动 在编辑器中配置 MCP 客户端,使其与 MySQL 通信。
3.1 JSON 配置详解 在配置文件输入以下 JSON,定义 mysql 服务器实例。
{
"mcpServers" : {
"mysql" : {
"command" : "npx" ,
"args" : [ "-y" , "@kevinwatt/mysql-mcp" ] ,
"env" : {
"MYSQL_HOST" : "host" ,
"MYSQL_PORT" : "3306" ,
"MYSQL_USER" : "root" ,
"MYSQL_PASS" : "passwd" ,
"MYSQL_DB" : "lanyun"
}
}
}
}
command: 使用 Node.js 包执行器。
args: 指定 MCP 中间件包名,负责将 AI 指令转化为 MySQL 协议。
env: 关键部分,定义连接凭证。注意替换实际 IP 和密码。
3.2 服务连接确认 保存配置后,插件自动启动服务器。成功建立时会有明确反馈。系统会展示运行状态和可用工具列表,表明 AI 已具备操作数据库的能力。
四、AI 驱动的复杂数据查询
4.1 自然语言指令 1. 查询目标:用户姓名、手机号、购买的商品名称、订单状态、订单创建时间
2. 筛选条件:
- 用户年龄大于 28 岁
- 商品价格大于 3000 元
- 订单创建时间在 2025 年 1 月 1 日之后
- 订单状态不是'已取消'(status≠5)
3. 排序需求:先按用户年龄降序,再按订单创建时间升序
4.2 执行过程与工具调用 AI 接收指令后,先获取 Schema,构建查询逻辑。过程中可能调用 MCP 工具生成 Python 代码处理导出。
4.3 结果产出 AI 不仅执行查询,还利用 Python 环境将结果生成为 Excel 文件。数据结构清晰,符合查询要求。
4.4 SQL 逻辑反查 SELECT u.username AS 用户姓名, u.phone AS 手机号, p.name AS 商品名称, o.status AS 订单状态, o.create_time AS 订单创建时间, u.age AS 用户年龄
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 00:00:00'
AND o.status != 5
ORDER BY u.age DESC , o.create_time ASC ;
逻辑严密,JOIN 正确,WHERE 精准对应条件,ORDER BY 实现复合排序。对比数据库直接查询结果,数据完全一致,证明可靠性。
五、AI 驱动的数据写入操作
5.1 插入指令 请基于 MySQL 数据库执行以下数据插入操作:
1. 目标表:`users`
2. 插入字段:`username` , `email` , `phone` , `age`
3. 插入数据:('qianer', ...), ('songsan', ...) 等 5 条记录
4. 执行要求:确保语法规范,返回受影响行数,若重复给出建议
5.2 执行反馈 MCP 转换为 INSERT 语句执行,界面反馈成功。
5.3 写入验证 SELECT * FROM `users` WHERE id >= 11 ;
结果显示 5 条新用户数据精确存入,字段对应正确。
总结 本流程展示了如何利用 MCP 协议实现从数据库搭建、配置编写到 AI 自然语言交互的完整闭环。MCP 协议降低了 AI 接入传统数据设施的门槛,使复杂的 SQL 编写和数据处理工作可以通过自然语言高效完成。
相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
SQL 美化和格式化 在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
SQL转CSV/JSON/XML 解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online
CSV 工具包 CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online