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

MySQL 与 MCP 集成:从环境构建到 AI 驱动的数据交互

MySQL 数据库与 MCP 协议集成的完整流程。涵盖服务器配置、数据库基础设施构建(建库建表)、测试数据初始化、MCP 客户端连接配置,以及通过自然语言进行复杂查询和数据写入的操作演示。验证了 AI 模型直接操作关系型数据库的可行性与准确性。

AiEngineer发布于 2026/2/7更新于 2026/10/167.9K 浏览
MySQL 与 MCP 集成:从环境构建到 AI 驱动的数据交互

前言

在当前大语言模型(LLM)应用开发的浪潮中,MCP(Model Context Protocol)协议正在成为连接 AI 模型与本地数据设施的关键桥梁。本文将以 MySQL 数据库为例,详细拆解如何通过 MCP 协议让 AI 模型直接操作关系型数据库,涵盖从服务器发现、数据库架构设计、数据初始化、MCP 配置文件编写到复杂自然语言查询与写入的全过程。

第一部分:MCP 服务器的发现与配置获取

在进行任何数据交互之前,首要任务是确立连接协议与服务源。通过 MCP 服务市场,开发者可以快速检索并获取所需的 MCP 服务器配置。

在搜索栏输入 mysql 关键字,系统会立即检索出相关的 MCP 服务器资源。搜索结果中清晰展示了 MySQL 对应的 MCP 服务卡片。

[图片]

点击选中该 MCP 服务器后,界面会跳转至详细的配置详情页。此页面至关重要,它提供了后续在客户端(如编辑器插件)中配置连接所需的 JSON 结构与参数说明,包括环境依赖和启动命令。

[图片]

第二部分:数据库基础设施构建

在配置 MCP 连接之前,必须确保底层的 MySQL 数据库环境已经就绪,并且存在可供操作的数据实体。以下操作展示了如何从零开始构建一个名为 lanyun 的数据库实例。

2.1 创建数据库

首先,通过数据库管理工具连接到 MySQL 实例,并执行基础的 DDL(数据定义语言)命令来创建数据库。

CREATE DATABASE lanyun;
USE lanyun;

CREATE DATABASE lanyun; 语句用于并在存储系统中初始化一个新的命名空间,随后 USE lanyun; 命令将当前的会话上下文切换至该数据库,确保后续的建表与数据插入操作均作用于正确的范围内。

下图展示了该命令执行前的界面状态,此时尚未建立数据库连接。

[图片]

执行上述 SQL 语句后,控制台反馈执行成功。此时,一个名为 lanyun 的数据库已经存在于 MySQL 实例中。

[图片]

本次演示环境的基础配置参数如下:

  • 用户:root(拥有最高权限,适合测试环境)
  • 数据库名:lanyun
  • 服务端口:3306(MySQL 默认标准端口)
2.2 数据表结构设计(Schema Design)

为了验证 MCP 的复杂查询能力,需要构建一个包含关联关系的业务数据模型。这里设计了三张核心表:users(用户)、products(商品)和 orders(订单),它们之间通过外键构成典型的电商业务模型。

请执行以下 SQL 语句来创建表结构:

-- 用户表
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='订单信息表';

技术细节解析:

  1. 引擎选择:所有表均指定 ENGINE=InnoDB,这是为了支持事务处理(ACID)和行级锁定,对于订单系统至关重要。
  2. 字符集:使用 utf8mb4 字符集,能够兼容包括 Emoji 在内的所有 Unicode 字符。
  3. 约束设计:
    • users 表中,username、email、phone 均设置了 UNIQUE 唯一约束,防止重复注册。
    • orders 表通过 FOREIGN KEY 严格定义了引用完整性,确保订单必须归属于存在的用户和存在的商品。
  4. 数据类型:
    • 价格字段使用 DECIMAL(10,2) 而非 FLOAT,以避免浮点数计算时的精度丢失问题。
    • 状态字段使用 TINYINT,节省存储空间。

执行上述 DDL 语句后,数据库表结构初始化完成。

[图片]

2.3 初始化测试数据

为了让 MCP 能够检索到有意义的内容,需要向表中预置一定量的模拟数据。

2.3.1 插入用户数据

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

执行结果如下图所示,显示 10 行数据受影响,且无重复键错误。

[图片]

2.3.2 插入商品数据

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

执行状态如下,商品信息已成功存入数据库。

[图片]

2.3.3 插入订单数据

这是最关键的一步,因为它建立了用户与商品之间的联系。插入 15 条订单记录,覆盖各种订单状态(待付款、已完成、已取消等)。

INSERT INTO `orders` (`user_id`, `product_id`, `quantity`, `total_price`, `status`) VALUES
(1, 1, 1, 4999.00, 4), -- 张三购买小米 14 Pro,已完成
(1, 6, 1, 2499.00, 2), -- 张三购买索尼耳机,已付款
(2, 2, 1, 5999.00, 3), -- 李四购买华为 Mate 60 Pro,已发货
(3, 3, 1, 12999.00, 1), -- 王五购买苹果 MacBook Pro,待付款
(4, 4, 1, 8999.00, 4), -- 赵六购买联想拯救者,已完成
(5, 5, 1, 3799.00, 2), -- 孙七购买大疆无人机,已付款
(6, 7, 2, 1798.00, 3), -- 周八购买 2 台小米净化器,已发货
(7, 8, 1, 399.00, 1), -- 吴九购买美的电饭煲,待付款
(8, 1, 2, 9998.00, 4), -- 陈十购买 2 台小米 14 Pro,已完成
(9, 2, 1, 5999.00, 5), -- 杨九购买华为 Mate 60 Pro,已取消
(10, 3, 1, 12999.00, 2), -- 黄十购买苹果 MacBook Pro,已付款
(2, 6, 1, 2499.00, 4), -- 李四购买索尼耳机,已完成
(3, 7, 1, 899.00, 3), -- 王五购买小米净化器,已发货
(4, 8, 3, 1197.00, 1), -- 赵六购买 3 个美的电饭煲,待付款
(5, 5, 2, 7598.00, 2); -- 孙七购买 2 台大疆无人机,已付款

该操作不仅填充了数据,还隐式验证了外键约束的正确性(即 user_id 和 product_id 必须存在于前两张表中)。

[图片]

2.4 数据验证

在接入 MCP 之前,手动执行一条查询语句以确保数据落盘无误。

SELECT * FROM `users` LIMIT 10;

查询结果如下,可以清晰地看到之前插入的 10 位用户信息,包含 ID、用户名、邮箱等字段。

[图片]

至此,数据库层面的准备工作全部完成,数据状态健康且结构完整。

第三部分:MCP 连接配置与环境启动

接下来的核心步骤是在编辑器中配置 MCP 客户端,使其能够通过标准协议与 MySQL 数据库通信。

3.1 JSON 配置详解

在配置文件中,输入以下 JSON 代码。这段代码定义了一个名为 mysql 的 MCP 服务器实例。

{
  "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: 'npx':表示使用 Node.js 的包执行器来运行 MCP 服务器。
  • args: 指定了要执行的具体包名 @kevinwatt/mysql-mcp,-y 参数用于自动确认安装提示。这个包本身就是一个实现了 MCP 协议的中间件,负责将 AI 的自然语言指令或函数调用转化为 MySQL 协议包。
  • env (环境变量):这是最关键的部分,定义了连接数据库所需的凭证。
    • MYSQL_HOST: 数据库主机地址(此处需替换为实际 IP 或 hostname)。
    • MYSQL_PORT: 端口,与前文配置的 3306 一致。
    • MYSQL_USER / MYSQL_PASS: 认证信息。
    • MYSQL_DB: 指定连接 lanyun 数据库。

下图展示了将代码填入配置文件时的界面状态。

[图片]

3.2 服务连接确认

配置保存后,插件会自动尝试启动 MCP 服务器。当连接成功建立时,界面会给予明确的反馈。

[图片]

MCP 架构的优势在于其透明性。在下图中,系统清晰地展示了 MCP 服务器的运行状态和可用工具列表,表明 AI 现在已经具备了'看到'并'操作'该数据库的能力。

[图片]

第四部分:AI 驱动的复杂数据查询

环境搭建完毕后,现在进入实际应用阶段。我们将演示如何通过自然语言让 AI 执行复杂的多表关联查询,并进行数据导出。

4.1 自然语言指令

向 MCP 客户端发送以下包含复杂逻辑的自然语言请求:

1. 查询目标:用户姓名、手机号、购买的商品名称、订单状态、订单创建时间 
2. 筛选条件: 
   - 用户年龄大于 28 岁 
   - 商品价格大于 3000 元 
   - 订单创建时间在 2025 年 1 月 1 日之后 
   - 订单状态不是'已取消'(status≠5) 
3. 排序需求:先按用户年龄降序,再按订单创建时间升序 

这个请求涉及到了 users、products、orders 三张表的连接(JOIN),以及多重 WHERE 子句和复合 ORDER BY 排序。

4.2 执行过程与工具调用

AI 接收到指令后,首先通过 MCP 协议获取数据库 Schema,然后构建查询逻辑。下图展示了 AI 正在调用 MCP 工具获取数据,并生成 Python 代码以处理数据导出。

[图片]

4.3 结果产出

AI 不仅执行了查询,还利用 Python 环境将结果生成为 Excel 文件。下图展示了生成的 Excel 表格内容,数据结构清晰,完全符合查询要求。

[图片]

4.4 SQL 逻辑反查

为了验证 AI 操作的准确性,我们可以查看其生成的底层 SQL 代码。AI 构建的 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 -- 用户年龄大于 28 岁
AND p.price > 3000 -- 商品价格大于 3000 元
AND o.create_time >= '2025-01-01 00:00:00' -- 订单创建时间在 2025 年 1 月 1 日之后
AND o.status != 5 -- 订单状态不是已取消
ORDER BY u.age DESC, -- 先按用户年龄降序
o.create_time ASC; -- 再按订单创建时间升序

这段 SQL 逻辑严密:

  1. 使用了 JOIN 正确关联了三张表。
  2. WHERE 子句精准对应了所有自然语言中的筛选条件。
  3. ORDER BY 正确实现了复合排序逻辑。

将此 SQL 语句直接在 MySQL 客户端中执行,结果如下图所示。对比可以发现,数据库直接查询的结果与 MCP 导出的 Excel 数据完全一致,证明了 MCP 在处理复杂业务逻辑时的可靠性。

[图片]

第五部分:AI 驱动的数据写入操作

除了查询(Read),MCP 同样支持数据写入(Write)操作。以下演示如何通过自然语言批量插入新用户。

5.1 插入指令

发送如下指令:

请基于 MySQL 数据库执行以下数据插入操作: 
1. 目标表:`users`(用户表) 
2. 插入字段:`username`(用户名)、`email`(邮箱)、`phone`(手机号)、`age`(年龄) 
3. 插入数据: 
   - ('qianer', '[email protected]', '13800138010', 33) 
   - ('songsan', '[email protected]', '13800138011', 38) 
   - ('lixsi', '[email protected]', '13800138012', 29) 
   - ('wangwu_new', '[email protected]', '13800138013', 40) 
   - ('chenliu', '[email protected]', '13800138014', 35)
4. 执行要求: 
   - 确保 SQL 语法符合 MySQL 规范,字段和值匹配无误 
   - 执行插入操作后,返回插入结果(如受影响行数、是否成功) 
   - 若存在重复数据(如用户名/手机号/邮箱重复),给出错误处理建议 
5.2 执行反馈

MCP 服务器接收指令并将其转换为 INSERT 语句执行。界面反馈显示操作成功完成。

[图片]

5.3 写入验证

最后,回到 MySQL 数据库进行验证。由于之前的测试数据 ID 到 10,新插入的数据 ID 应从 11 开始。

执行验证 SQL:

-- 查询新增的 5 个用户(ID 从 11 开始,对应本次插入)
SELECT * FROM `users` WHERE id >= 11;

结果如下图所示,5 条新用户数据已精确无误地存入数据库中,且字段对应关系完全正确。

[图片]

总结

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

对于希望探索更多 MCP 应用场景的开发者,可以访问相关控制台体验更多服务。

目录

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

更多推荐文章

查看全部
  • CS144 课程 C++ 核心知识点总结
  • 使用 TRAE CN 与 MasterGo MCP 实现设计稿转前端代码
  • 低配环境运行 Qwen3Guard-Gen-WEB 的 CPU 部署实战指南
  • Milvus 实战:Attu 可视化安装与 Python 整合指南
  • CPP Summit 2020 学习笔记:系统架构与设计
  • 系统架构与设计:空间、角色与开发流程
  • 主流大模型架构全景 | GPT/LLaMA/DeepSeek/Qwen 深度对比
  • OpenClaw 本地部署与 AI Agent 开发指南
  • Open-Lovable 网页克隆工具本地部署与远程访问方案
  • 大模型提示工程技术分类详解:单一、多重及外部工具应用
  • Java 动态代理:JDK 与 CGLIB 实现与取舍
  • 使用 cpolar 远程部署 Open-Lovable 实现网页克隆
  • Coze 智能体核心资源详解:插件、知识库与数据库实战
  • Kiro AI 助手完整使用指南
  • Function Call、Skill 和 MCP:AI 工具链的三层抽象
  • 鸿蒙金融理财全栈实战:生态合作与数据变现优化
  • Coze 与 Dify 对比:AI 智能体开发平台选型指南
  • AI 辅助前端 UI 设计工具 UI UX Pro Max 实战指南
  • Coze 智能体的手、脑、记忆:插件、知识库与数据库
  • 基于阿里开源 CoPaw 在魔搭创空间搭建个人 AI 助理

相关免费在线工具

  • 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