跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQLAI

Dify 与 MySQL 深度融合:基于 MCP 协议的数据交互实践

Dify 与 MySQL 通过 MCP 协议实现深度整合,利用大语言模型能力进行自然语言转 SQL 查询。教程涵盖环境搭建、Dify 部署、MySQL 表结构初始化、MCP SSE 插件配置及 Agent 工作流设计。重点演示了如何配置 ReAct 策略支持 MCP 工具调用,并通过实际测试验证身高、体重、成绩等复杂查询场景。解决了连接失败、工具调用错误及 SQL 执行异常等常见问题,为开发者提供了一套完整的 AI 应用与数据库交互方案。

JavaCoder发布于 2026/3/16更新于 2026/6/2540 浏览
Dify 与 MySQL 深度融合:基于 MCP 协议的数据交互实践

Dify 与 MySQL 深度融合:基于 MCP 协议的数据交互实践

引言:技术融合

在当今数字化时代,数据管理与人工智能技术的融合日益紧密。Dify 作为一款强大的大语言模型应用开发平台,通过 MCP(模型上下文协议)与 MySQL 这一广泛使用的关系型数据库进行整合,为开发者们打开了一扇通往高效数据处理与智能应用开发的新大门。这种整合不仅能充分发挥 Dify 在自然语言处理和 AI 应用构建方面的优势,还能借助 MySQL 出色的数据存储和管理能力,实现更复杂、更智能的数据驱动型应用开发。

认识主角:Dify、MCP 与 MySQL

(一)Dify:大语言模型应用开发利器

Dify 是一款极具创新性的开源大语言模型(LLM)应用开发平台,它将后端即服务(Backend as Service, BaaS)与 LLMOps 理念巧妙融合,为开发者打造了一个便捷高效的 AI 应用开发环境。其低代码/无代码开发模式是一大亮点,通过直观的可视化界面,开发者只需简单的拖拽和配置操作,就能轻松定义 Prompt(提示词)、上下文以及插件等关键要素,无需在底层技术细节中耗费过多精力,这使得开发门槛大幅降低。

Dify 还采用了模块化设计,各个模块功能明确、接口清晰,开发者可以根据具体的项目需求,灵活选择并组合使用这些模块。在功能组件方面,Dify 提供了丰富多样的选择,涵盖 AI 工作流、RAG 管道、Agent、模型管理等多个领域,全面支持从应用原型设计到实际生产部署的整个过程。同时,Dify 对多种主流大型语言模型提供了良好的支持,包括 OpenAI 的 GPT 系列、Claude3 等。

(二)MCP:连接的桥梁

MCP,即模型上下文协议(Model Context Protocol),在 Dify 与 MySQL 的整合中扮演着至关重要的桥梁角色。作为一项新兴的开放协议,MCP 为大语言模型与外部应用之间搭建了一条双向通信通道,让模型能够便捷地发现、理解并安全调用各种外部工具或 API。

在 Dify 通过 MCP 整合 MySQL 的场景中,MCP 主要发挥了两方面关键作用。一方面,它提供了统一的协议支持,使得 Dify 中的大语言模型能够以标准化的方式与 MySQL 进行交互。另一方面,MCP 还具备强大的工具调用能力,允许 Dify 根据用户的需求和指令,动态地调用 MySQL 相关的工具和功能,实现对数据库中数据的查询、更新、插入等操作。

(三)MySQL:经典数据库

MySQL 作为一款开源的关系型数据库管理系统,在数据存储和管理领域拥有着广泛的应用和卓越的声誉。它具备高度的可靠性和稳定性,能够在各种复杂的环境下稳定运行。在性能方面,MySQL 表现出色,采用了高效的索引和查询优化技术,能够快速处理大规模数据和高并发的访问请求。此外,MySQL 还具备出色的可扩展性,支持水平和垂直扩展,能够满足不断变化的业务需求。

准备工作:搭建融合舞台

(一)环境搭建

在开始整合 Dify 与 MySQL 之前,需要确保开发环境准备就绪。主要涉及 Python 环境以及相关插件的安装,建议使用 Python 3.8 及以上版本。为了实现 Dify 与 MySQL 之间基于 MCP 的通信和数据交互,还需要安装一些关键的插件和依赖库。

(二)安装与配置 Dify

安装步骤:

首先,通过官方 GitHub 仓库获取 Dify 的源代码。打开终端,执行以下命令进行克隆:

git clone https://github.com/langgenius/dify.git --branch 1.1.0 

安装过程需要依赖 Docker 和 Docker Compose。在 Rocky Linux 9.5 系统上,安装 Docker 的命令如下:

# 设置代理
export http_proxy="http://192.168.1.xxx:7897"
export https_proxy="http://192.168.1.xxx:7897"
export no_proxy="localhost,127.0.0.1"
# 更新源
sudo dnf update
# 添加 docker 安装包仓库
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
# 安装 docker compose
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# docker 设置为开机自启动
sudo systemctl enable --now docker

设置 docker 的下载镜像代理: 在 /etc/systemd/system/docker.service.d 目录新增文件 http-proxy.conf,内容如下:

[Service]
Environment="HTTP_PROXY=http://192.168.1.xxx:7897"
Environment="HTTPS_PROXY=http://192.168.1.xxx:7897"
Environment="NO_PROXY=localhost,127.0.0.1"

重载配置并重启 docker:

systemctl daemon-reload
systemctl restart docker
systemctl status docker

在 Dify 项目目录下,通过 Docker Compose 来启动 Dify 服务:

cp .env.example .env
docker compose up -d

验证安装是否成功:

docker compose ps

此命令会在后台启动 Dify 的所有相关服务,包括前端、后端以及必要的中间件服务。

基础配置:

启动完成后,通过浏览器访问 Dify 的前端界面,默认地址为 http://localhost:3000。首次访问时,需要进行一些基础配置,如设置管理员账号和密码等信息。

接着,配置 Dify 的服务器地址和端口。若采用默认配置,服务器地址即为 localhost,端口为 5000。若需修改,可在 Dify 项目目录下的 .env 文件中修改 API_SERVER_HOST 和 API_SERVER_PORT 等环境变量。

(三)安装与配置 MySQL

安装流程:略

准备表结构和数据:新建数据库 test。

CREATE DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 班级表
CREATE TABLE `classes` (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班级 ID',
  `className` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班级名称',
  `grade` int NOT NULL COMMENT '年级',
  `headTeacherId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班主任 ID',
  `classroom` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教室位置',
  `studentCount` int NOT NULL COMMENT '学生人数',
  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注信息',
  PRIMARY KEY (`id`),
  KEY `headTeacherId` (`headTeacherId`),
  CONSTRAINT `headTeacherId` FOREIGN KEY (`headTeacherId`) REFERENCES `teachers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='班级表';
  1. 课程表
CREATE TABLE `courses` (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程 ID',
  `courseName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程名称',
  `credit` int NOT NULL COMMENT '学分',
  `teacherId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '授课教师 ID',
  `semester` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '学期',
  `type` enum('必修','选修') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '选修' COMMENT '课程类型',
  `prerequisite` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '先修课程 ID',
  PRIMARY KEY (`id`),
  KEY `teacherId` (`teacherId`),
  CONSTRAINT `teacherId` FOREIGN KEY (`teacherId`) REFERENCES `teachers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程表';
  1. 成绩表
CREATE TABLE `scores` (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '成绩记录 ID',
  `studentId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学生 ID',
  `courseId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程 ID',
  `score` int NOT NULL COMMENT '综合成绩',
  `examDate` date NOT NULL COMMENT '考试日期',
  `usualScore` int DEFAULT '0' COMMENT '平时成绩',
  `finalScore` int DEFAULT '0' COMMENT '期末成绩',
  PRIMARY KEY (`id`),
  KEY `studentId` (`studentId`),
  KEY `courseId` (`courseId`),
  CONSTRAINT `courseId` FOREIGN KEY (`courseId`) REFERENCES `courses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `studentId` FOREIGN KEY (`studentId`) REFERENCES `students` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成绩表';
  1. 学生表
CREATE TABLE `students` (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学号',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学生姓名',
  `gender` enum('男','女') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '男' COMMENT '性别',
  `birthDate` datetime NOT NULL COMMENT '出生日期',
  `classId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班级 ID',
  `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '联系电话',
  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '电子邮箱',
  `emergencyContact` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '紧急联系人电话',
  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '家庭住址',
  `height` int NOT NULL COMMENT '身高 (cm)',
  `weight` int NOT NULL COMMENT '体重 (kg)',
  `healthStatus` enum('良好','一般','较差') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '良好' COMMENT '健康状况',
  PRIMARY KEY (`id`),
  KEY `classId` (`classId`),
  CONSTRAINT `classId` FOREIGN KEY (`classId`) REFERENCES `classes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生表';
  1. 教师表
CREATE TABLE `teachers` (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教师 ID',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教师姓名',
  `gender` enum('男','女') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '男' COMMENT '性别',
  `subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教授科目',
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '职称',
  `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '联系电话',
  `office` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '办公室位置',
  `wechat` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '微信',
  `isHeadTeacher` enum('true','false') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT 'false' COMMENT '是否为班主任',
  PRIMARY KEY (`id`,`office`) USING BTREE,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='教师表';

录入数据示例:

INSERT INTO `teachers` (`id`,`name`,`gender`,`subject`,`title`,`phone`,`office`,`wechat`,`isHeadTeacher`) VALUES ('T001','张建国','男','数学','教授','13812345678','博学楼 301','lily_teacher','true');
-- 其他 INSERT 语句类似处理

关键步骤:Dify 与 MySQL 的牵手过程

(一)安装必要插件

在 Dify 平台中,要实现通过 MCP 整合 MySQL,首先需要安装两个关键插件:Agent 策略(支持 MCP 工具)和 MCP SSE。

  • Agent 策略集合(支持 MCP SSE 发现和调用工具):https://github.com/junjiem/dify-plugin-agent-mcp_sse
  • MCP SSE(通过 HTTP with SSE 传输使用 MCP 协议来发现和调用工具):https://github.com/junjiem/dify-plugin-tools-mcp_sse

(二)配置 MCP SSE

插件安装完成后,需要对 MCP SSE 进行配置,以建立与 MySQL 服务的连接。具体操作如下:

  1. 在 Dify 的插件管理界面中,点击已安装的 MCP SSE 插件。
  2. 点击'已授权',配置 mcp mysql server 的 sse 地址:
{"mysql_mcp_server_pro":{"url":"http://192.168.1.XXX:9000/sse"}}

注意:不要留空格,否则可能报错。填写完成后点击保存。

(三)创建 Dify 工作流

进入 Dify 的工作流创建页面,选择创建工作流类型为 "Chatflow",命名为 "Dify_MySQL_Integration"。

在工作流设计画布中,删除默认的 LLM 节点,因为我们主要通过 Agent 来调用 MySQL 相关工具。从节点库中拖拽一个 "Agent" 节点到画布上。

(四)配置 Agent 策略

  1. 选择 ReAct (Support MCP Tools) 策略:将 AGENT 策略选择为 "ReAct (Support MCP Tools)"。该策略对 MCP 工具的支持较为稳定。
  2. 配置工具列表:在 Agent 配置面板的 "工具列表" 部分,选择 "通过 SSE 发现和调用 MCP 工具"。添加与 MySQL 相关的工具列表。
  3. 配置指令:设置系统提示词,引导 Agent 正确执行任务。例如:
使用中文回复。当用户提问中涉及学生、教师、成绩、班级、课程等实体时,需要使用 MySQL MCP 进行数据查询和操作,表结构说明如下:
...(此处省略详细表结构说明,参考原文档)...

设置最大迭代次数,防止无限循环。在 "连接直接回复" 部分选择变量 "Agent.text"。

(五)搭建 MCP SERVER

1. 下载代码
git clone https://github.com/wenb1n-dev/mysql_mcp_server_pro.git
2. 配置数据库

编辑 .env 文件,配置数据库连接信息。

3. 配置依赖
pip install mcp
pip install mysql-connector-python
pip install uvicorn
pip install python-dotenv
pip install starlette
4. 启动 mcp server
uv run server.py

测试与优化:让融合更完美

(一)工作流测试

完成上述配置后,就可以对创建的 Dify 工作流进行测试。

测试方式:进入 Dify 的工作流测试界面,输入实际的查询问题,例如 "哪个老师学生最多"。

工作原理:Agent 节点识别出这是一个需要查询 MySQL 数据库的任务,然后通过 MCP 协议调用相应的 MySQL 工具,将问题转化为 SQL 查询语句并执行。

结果查看:MySQL 数据库执行查询后,将结果返回给 Dify 工作流中的 Agent 节点,最终显示给用户。

测试案例:

  1. 列出身高大于等于 168cm 所有学生:符合预期。
  2. 列出体重大于等于 60kg 的学生:符合预期。
  3. 哪个学生成绩最好:符合预期。
  4. 总成绩最好的是哪个班级:符合预期。

常见问题与解决方案

(一)连接失败

错误描述:Dify 无法成功连接到 MySQL,提示 "连接超时" 或 "无法找到服务器"。

解决方案:

  • 检查网络和防火墙:确保 MySQL 服务器的防火墙开放了相应端口(默认为 3306)。
  • 确认地址和端口:仔细检查 MCP SSE 配置中填写的 MySQL 服务地址和端口。
  • 检查 MySQL 服务状态:确保 MySQL 服务正在运行。

(二)工具调用错误

错误描述:调用 MySQL 相关工具时,提示 "找不到工具" 或 "工具调用失败"。

解决方案:

  • 检查插件安装和配置:确认 Agent 策略和 MCP SSE 插件已成功安装且配置正确。
  • 选择正确的策略:将 Agent 的 AGENT 策略选择为 "ReAct (Support MCP Tools)"。
  • 核对工具列表配置:确保 MCP 服务器地址配置一致。

(三)SQL 执行错误

错误描述:返回的结果提示 SQL 执行错误,如 "语法错误" 或 "表不存在"。

解决方案:

  • 优化提示词和指令:确保指令能够准确地将用户输入转换为正确的 SQL 语句。
  • 同步数据库结构信息:定期检查 MySQL 数据库的结构变化,及时更新 Dify 工作流中的相关配置。

目录

  1. Dify 与 MySQL 深度融合:基于 MCP 协议的数据交互实践
  2. 引言:技术融合
  3. 认识主角:Dify、MCP 与 MySQL
  4. (一)Dify:大语言模型应用开发利器
  5. (二)MCP:连接的桥梁
  6. (三)MySQL:经典数据库
  7. 准备工作:搭建融合舞台
  8. (一)环境搭建
  9. (二)安装与配置 Dify
  10. 设置代理
  11. 更新源
  12. 添加 docker 安装包仓库
  13. 安装 docker compose
  14. docker 设置为开机自启动
  15. (三)安装与配置 MySQL
  16. 关键步骤:Dify 与 MySQL 的牵手过程
  17. (一)安装必要插件
  18. (二)配置 MCP SSE
  19. (三)创建 Dify 工作流
  20. (四)配置 Agent 策略
  21. (五)搭建 MCP SERVER
  22. 1. 下载代码
  23. 2. 配置数据库
  24. 3. 配置依赖
  25. 4. 启动 mcp server
  26. 测试与优化:让融合更完美
  27. (一)工作流测试
  28. 常见问题与解决方案
  29. (一)连接失败
  30. (二)工具调用错误
  31. (三)SQL 执行错误
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 快速排序算法原理及多种实现方式
  • 人工智能对上位机系统的全面重塑与影响分析
  • GLM-4.7-Flash 本地 AI 编码助手部署指南
  • FPGA 光通信开发:Aurora 64B/66B 协议使用指南
  • 大模型预训练 PT 与有监督微调 SFT 原理详解
  • 从 Copilot 到 Agentic:重构人×AI×流程的研发范式实践
  • 初阶数据结构:二叉树与堆的实现
  • VL-JEPA:视觉语言联合嵌入预测架构解析
  • 多模态基础大模型技术白皮书解读与核心挑战分析
  • 如何利用 Python 实现技术变现?四种常见途径解析
  • OpenAI 与 LangChain 集成实战指南
  • Flutter Genkit 组件适配鸿蒙系统:AI 流式响应与提示词工程
  • Python 中绕过 JSON 默认排序规则的进阶技巧
  • Python 入门教程:掌握编程基础与核心语法
  • GitHub Copilot Agent Skills 实战:打造跨项目 AI 专属工具箱
  • Flutter 跨平台开发实战指南:从基础到源码深度解析
  • OpenNebula 开源云管理平台入门指南
  • Silly Tavern 角色卡与世界书导入教程
  • 2024年AI大模型时代C端应用生态变局与产业创新价值分析
  • OpenClaw 架构解析:从 Skills、MCP、RAG、Memory 到 AI Agent

相关免费在线工具

  • 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