跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQLNode.jsAI

MySQL 与 MCP 协议集成实战:从环境搭建到 AI 数据交互

通过 MCP 协议将 MySQL 数据库与大语言模型集成,内容包括数据库基础构建、表结构设计、测试数据初始化,以及 MCP 客户端配置。通过自然语言指令,实现了复杂的多表关联查询和数据写入操作,验证了 AI 直接操作关系型数据库的可行性与准确性。

神经兮兮发布于 2026/3/23更新于 2026/10/689 浏览
MySQL 与 MCP 协议集成实战:从环境搭建到 AI 数据交互

引言

在大模型应用开发中,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 DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';

-- 商品表
CREATE TABLE IF NOT EXISTS `products` (
  `id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '商品 ID',
  `name` VARCHAR(100) NOT NULL COMMENT '商品名称',
  `price` DECIMAL(10,2) NOT NULL COMMENT '商品价格',
  `stock` INT NOT NULL DEFAULT 0 COMMENT '库存',
  `category` VARCHAR(50) COMMENT '商品分类',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品信息表';

-- 订单表
CREATE TABLE IF NOT EXISTS `orders` (
  `id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '订单 ID',
  `user_id` INT NOT NULL COMMENT '用户 ID',
  `product_id` INT NOT NULL COMMENT '商品 ID',
  `quantity` INT NOT NULL DEFAULT 1 COMMENT '购买数量',
  `total_price` DECIMAL(10,2) NOT NULL COMMENT '订单总价',
  `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1-待付款,2-已付款,3-已发货,4-已完成,5-已取消',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  FOREIGN KEY (`user_id`) REFERENCES `users`(`id`),
  FOREIGN KEY (`product_id`) REFERENCES `products`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单信息表';

技术细节:使用 InnoDB 支持事务;utf8mb4 兼容 Emoji;价格用 DECIMAL 避免精度丢失;外键保证引用完整性。

图片占位符

2.3 初始化测试数据

预置模拟数据以便 MCP 检索。

插入 10 条用户记录:

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);

插入 8 条商品数据:

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,'家电');

插入 15 条订单数据:

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 数据验证

接入 MCP 前手动查询确认落盘。

SELECT * FROM `users` LIMIT 10;

结果应包含 ID、用户名等字段,确保数据健康。

图片占位符

三、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. 排序需求:先按用户年龄降序,再按订单创建时间升序

涉及三表 JOIN 及多重 WHERE 子句。

4.2 执行过程与工具调用

AI 接收指令后,先获取 Schema,构建查询逻辑。过程中可能调用 MCP 工具生成 Python 代码处理导出。

图片占位符

4.3 结果产出

AI 不仅执行查询,还利用 Python 环境将结果生成为 Excel 文件。数据结构清晰,符合查询要求。

图片占位符

4.4 SQL 逻辑反查

查看底层 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 驱动的数据写入操作

除了查询,MCP 同样支持写入。

5.1 插入指令

发送指令:

请基于 MySQL 数据库执行以下数据插入操作:
1. 目标表:`users`
2. 插入字段:`username`, `email`, `phone`, `age`
3. 插入数据:('qianer', ...), ('songsan', ...) 等 5 条记录
4. 执行要求:确保语法规范,返回受影响行数,若重复给出建议
5.2 执行反馈

MCP 转换为 INSERT 语句执行,界面反馈成功。

图片占位符

5.3 写入验证

回到数据库验证。新数据 ID 应从 11 开始。

SELECT * FROM `users` WHERE id >= 11;

结果显示 5 条新用户数据精确存入,字段对应正确。

图片占位符

总结

本流程展示了如何利用 MCP 协议实现从数据库搭建、配置编写到 AI 自然语言交互的完整闭环。MCP 协议降低了 AI 接入传统数据设施的门槛,使复杂的 SQL 编写和数据处理工作可以通过自然语言高效完成。

目录

  1. 引言
  2. 一、MCP 服务器发现与配置
  3. 二、数据库基础设施构建
  4. 2.1 创建数据库
  5. 2.2 表结构设计
  6. 2.3 初始化测试数据
  7. 2.4 数据验证
  8. 三、MCP 连接配置与环境启动
  9. 3.1 JSON 配置详解
  10. 3.2 服务连接确认
  11. 四、AI 驱动的复杂数据查询
  12. 4.1 自然语言指令
  13. 4.2 执行过程与工具调用
  14. 4.3 结果产出
  15. 4.4 SQL 逻辑反查
  16. 五、AI 驱动的数据写入操作
  17. 5.1 插入指令
  18. 5.2 执行反馈
  19. 5.3 写入验证
  20. 总结

更多推荐文章

查看全部
  • PyCharm 高效使用指南:从安装到插件配置全解析
  • 前端表单验证策略与最佳实践
  • OpenCV Python 基础入门教程
  • 用 Prompt 写出更可读的代码
  • Enterprise Architect 16 简介与安装指南
  • Flask 工厂模式与蓝图设计:构建可扩展大型应用架构
  • 微信指挥 AI 员工:QClaw 本地部署与实战指南
  • AI 热榜深度解读:5 大重点方向与行业风向变化
  • 《Agent Runtime 工程化》第十一章 源码研读方法:11.3 读项目入口
  • 大语言模型 (LLM) 入门学习路线图
  • C++ 进阶:unordered_set 与 unordered_map 原理及哈希表模拟实现
  • 基于 FPGA 的深度强化学习框架实现超音速闭环智能流动控制实验
  • 深度对比 vLLM、SGLang 与 llama.cpp:大模型推理引擎选型指南
  • SDXL Prompt Styler 提示词增强工具使用指南
  • C++ 异常:从基础用法到避不开的坑
  • 《Agent Runtime 工程化》第七章 权限与安全边界:7.4 npm 供应链风险
  • 医疗 AI 编程与培训技能树分析报告(2025 版)
  • AR 健身教练“形随心动”:基于 Rokid CXR-M SDK 的实战开发
  • OpenClaw 本地部署配置飞书机器人指南
  • 使用 Trae IDE 与 MCP Server 将 Figma 设计稿转为前端代码

相关免费在线工具

  • 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