免费做初中试卷的网站,我的网站为什么打不开,北京网站建设公司华网,深圳网站建设公司服务流程前言
在当前大语言模型#xff08;LLM#xff09;应用开发的浪潮中#xff0c;MCP#xff08;Model Context Protocol#xff09;协议正在成为连接 AI 模型与本地数据设施的关键桥梁。本文将以 MySQL 数据库为例#xff0c;详细拆解如何通过 MCP 协议让 AI 模型直接操作关…前言在当前大语言模型LLM应用开发的浪潮中MCPModel Context Protocol协议正在成为连接 AI 模型与本地数据设施的关键桥梁。本文将以 MySQL 数据库为例详细拆解如何通过 MCP 协议让 AI 模型直接操作关系型数据库涵盖从服务器发现、数据库架构设计、数据初始化、MCP 配置文件编写到复杂自然语言查询与写入的全过程。第一部分MCP 服务器的发现与配置获取在进行任何数据交互之前首要任务是确立连接协议与服务源。通过蓝耘 MCP 广场开发者可以快速检索并获取所需的 MCP 服务器配置。在搜索栏输入mysql关键字系统会立即检索出相关的 MCP 服务器资源。如下图所示搜索结果中清晰展示了 MySQL 对应的 MCP 服务卡片。点击选中该 MCP 服务器后界面会跳转至详细的配置详情页。此页面至关重要它提供了后续在客户端如 VSCode CodeBuddy 插件中配置连接所需的 JSON 结构与参数说明包括环境依赖和启动命令。第二部分数据库基础设施构建在配置 MCP 连接之前必须确保底层的 MySQL 数据库环境已经就绪并且存在可供操作的数据实体。以下操作展示了如何从零开始构建一个名为lanyun的数据库实例。2.1 创建数据库首先通过数据库管理工具连接到 MySQL 实例并执行基础的 DDL数据定义语言命令来创建数据库。createdatabaselanyun;uselanyun;create database lanyun;语句用于并在存储系统中初始化一个新的命名空间随后use lanyun;命令将当前的会话上下文切换至该数据库确保后续的建表与数据插入操作均作用于正确的范围内。下图展示了该命令执行前的界面状态此时尚未建立数据库连接。执行上述 SQL 语句后控制台反馈执行成功。此时一个名为lanyun的数据库已经存在于 MySQL 实例中。本次演示环境的基础配置参数如下用户root拥有最高权限适合测试环境数据库名lanyun服务端口3306MySQL 默认标准端口2.2 数据表结构设计Schema Design为了验证 MCP 的复杂查询能力需要构建一个包含关联关系的业务数据模型。这里设计了三张核心表users用户、products商品和orders订单它们之间通过外键构成典型的电商业务模型。请执行以下 SQL 语句来创建表结构-- 用户表CREATETABLEIFNOTEXISTSusers(idINTPRIMARYKEYAUTO_INCREMENTCOMMENT用户ID,usernameVARCHAR(50)NOTNULLUNIQUECOMMENT用户名,emailVARCHAR(100)UNIQUECOMMENT邮箱,phoneVARCHAR(20)UNIQUECOMMENT手机号,ageTINYINTUNSIGNEDCOMMENT年龄,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT创建时间)ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT用户信息表;-- 商品表CREATETABLEIFNOTEXISTSproducts(idINTPRIMARYKEYAUTO_INCREMENTCOMMENT商品ID,nameVARCHAR(100)NOTNULLCOMMENT商品名称,priceDECIMAL(10,2)NOTNULLCOMMENT商品价格,stockINTNOTNULLDEFAULT0COMMENT库存,categoryVARCHAR(50)COMMENT商品分类,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT创建时间)ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT商品信息表;-- 订单表CREATETABLEIFNOTEXISTSorders(idINTPRIMARYKEYAUTO_INCREMENTCOMMENT订单ID,user_idINTNOTNULLCOMMENT用户ID,product_idINTNOTNULLCOMMENT商品ID,quantityINTNOTNULLDEFAULT1COMMENT购买数量,total_priceDECIMAL(10,2)NOTNULLCOMMENT订单总价,statusTINYINTNOTNULLDEFAULT1COMMENT订单状态1-待付款2-已付款3-已发货4-已完成5-已取消,create_timeDATETIMEDEFAULTCURRENT_TIMESTAMPCOMMENT创建时间,FOREIGNKEY(user_id)REFERENCESusers(id),FOREIGNKEY(product_id)REFERENCESproducts(id))ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT订单信息表;技术细节解析引擎选择所有表均指定ENGINEInnoDB这是为了支持事务处理ACID和行级锁定对于订单系统至关重要。字符集使用utf8mb4字符集能够兼容包括 Emoji 在内的所有 Unicode 字符。约束设计users表中username、email、phone均设置了UNIQUE唯一约束防止重复注册。orders表通过FOREIGN KEY严格定义了引用完整性确保订单必须归属于存在的用户和存在的商品。数据类型价格字段使用DECIMAL(10,2)而非FLOAT以避免浮点数计算时的精度丢失问题。状态字段使用TINYINT节省存储空间。执行上述 DDL 语句后数据库表结构初始化完成。2.3 初始化测试数据为了让 MCP 能够检索到有意义的内容需要向表中预置一定量的模拟数据。2.3.1 插入用户数据插入 10 条典型的用户记录涵盖不同的年龄段和联系方式。INSERTINTOusers(username,email,phone,age)VALUES(zhangsan,zhangsanexample.com,13800138000,25),(lisi,lisiexample.com,13800138001,30),(wangwu,wangwuexample.com,13800138002,22),(zhaoliu,zhaoliuexample.com,13800138003,28),(sunqi,sunqiexample.com,13800138004,35),(zhouba,zhoubaexample.com,13800138005,26),(wujian,wujianexample.com,13800138006,29),(chenshi,chenshiexample.com,13800138007,32),(yangjiu,yangjiuexample.com,13800138008,24),(huangshi,huangshiexample.com,13800138009,31);执行结果如下图所示显示 10 行数据受影响且无重复键错误。2.3.2 插入商品数据插入 8 条商品数据涵盖手机、电脑、家电等不同分类并设置不同的价格梯队。INSERTINTOproducts(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 条订单记录覆盖各种订单状态待付款、已完成、已取消等。INSERTINTOorders(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*FROMusersLIMIT10;查询结果如下可以清晰地看到之前插入的 10 位用户信息包含 ID、用户名、邮箱等字段。至此数据库层面的准备工作全部完成数据状态健康且结构完整。第三部分MCP 连接配置与环境启动接下来的核心步骤是在 VSCode 中配置 MCP 客户端这里使用 CodeBuddy 插件使其能够通过标准协议与 MySQL 数据库通信。3.1 JSON 配置详解在 VSCode 的 CodeBuddy 配置文件中输入以下 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 如下SELECTu.usernameAS用户姓名,u.phoneAS手机号,p.nameAS商品名称,o.statusAS订单状态,o.create_timeAS订单创建时间,u.ageAS用户年龄-- 排序需要可根据需求决定是否保留在查询结果中FROMorders oJOINusers uONo.user_idu.idJOINproducts pONo.product_idp.idWHEREu.age28-- 用户年龄大于28岁ANDp.price3000-- 商品价格大于3000元ANDo.create_time2025-01-01 00:00:00-- 订单创建时间在2025年1月1日之后ANDo.status!5-- 订单状态不是已取消ORDERBYu.ageDESC,-- 先按用户年龄降序o.create_timeASC;-- 再按订单创建时间升序这段 SQL 逻辑严密使用了JOIN正确关联了三张表。WHERE子句精准对应了所有自然语言中的筛选条件。ORDER BY正确实现了复合排序逻辑。将此 SQL 语句直接在 MySQL 客户端中执行结果如下图所示。对比可以发现数据库直接查询的结果与 MCP 导出的 Excel 数据完全一致证明了 MCP 在处理复杂业务逻辑时的可靠性。第五部分AI 驱动的数据写入操作除了查询ReadMCP 同样支持数据写入Write操作。以下演示如何通过自然语言批量插入新用户。5.1 插入指令发送如下指令请基于MySQL数据库执行以下数据插入操作1. 目标表users用户表2. 插入字段username用户名、email邮箱、phone手机号、age年龄3. 插入数据 -(qianer,qianerexample.com,13800138010,33)-(songsan,songsanexample.com,13800138011,38)-(lixsi,lixsiexample.com,13800138012,29)-(wangwu_new,wangwu_newexample.com,13800138013,40)-(chenliu,chenliuexample.com,13800138014,35)4. 执行要求 - 确保SQL语法符合MySQL规范字段和值匹配无误 - 执行插入操作后返回插入结果如受影响行数、是否成功 - 若存在重复数据如用户名/手机号/邮箱重复给出错误处理建议5.2 执行反馈MCP 服务器接收指令并将其转换为INSERT语句执行。界面反馈显示操作成功完成。5.3 写入验证最后回到 MySQL 数据库进行验证。由于之前的测试数据 ID 到 10新插入的数据 ID 应从 11 开始。执行验证 SQL-- 查询新增的5个用户ID从11开始对应本次插入SELECT*FROMusersWHEREid11;结果如下图所示5 条新用户数据已精确无误地存入数据库中且字段对应关系完全正确。总结通过上述流程本文详细展示了如何利用蓝耘 MCP 广场提供的 MySQL MCP 服务器实现从数据库搭建、配置编写到 AI 自然语言交互的完整闭环。MCP 协议极大地降低了 AI 接入传统数据设施的门槛使得复杂的 SQL 编写和数据处理工作可以通过自然语言指令高效完成。对于希望探索更多 MCP 应用场景的开发者可以访问蓝耘控制台体验更多服务https://console.lanyun.net/#/register?promoterCode0131