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

Dify 与 MySQL 集成实战:基于 MCP 协议的数据交互方案

Dify 结合 MCP 协议实现 MySQL 数据交互,通过部署 MCP Server 桥接大语言模型与数据库。涵盖环境搭建、Dify 工作流配置、Agent 策略选择及常见故障排查。重点在于使用 ReAct 策略确保工具调用稳定性,并通过自然语言指令驱动 SQL 生成,实现高效的数据查询与分析。

kaikai发布于 2025/12/4更新于 2026/10/2591 浏览
Dify 与 MySQL 集成实战:基于 MCP 协议的数据交互方案

Dify 与 MySQL 集成实战:基于 MCP 协议的数据交互方案

在数字化时代,将大语言模型(LLM)的能力与关系型数据库结合,能极大拓展应用边界。Dify 作为 LLM 应用开发平台,通过 MCP(Model Context Protocol)协议与 MySQL 整合,让开发者能够以自然语言驱动数据查询与分析。本文将深入探讨这一集成的搭建过程、配置细节及常见问题处理。

环境准备与基础安装

1. 环境要求

确保开发环境已安装 Python 3.8+ 版本,并具备 Docker 和 Docker Compose 支持。若使用 Rocky Linux 9.5 等系统,需先配置好网络代理及 Docker 仓库源。

2. 部署 Dify

从官方 GitHub 仓库克隆代码并启动服务:

git clone https://github.com/langgenius/dify.git --branch 1.1.0
cd dify/docker
cp .env.example .env
docker compose up -d

启动后访问 http://localhost:3000 完成管理员账号初始化。默认 API 地址为 localhost:5000,如需修改可在 .env 文件中调整 API_SERVER_HOST 等变量。

3. 构建 MySQL 测试库

新建数据库 test,并创建班级、课程、学生、成绩、教师五张表。注意 SQL 语句中的空格规范,避免语法错误。

CREATE DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE test;

CREATE TABLE teachers (
    id VARCHAR(255) NOT NULL COMMENT '教师 ID',
    name VARCHAR(255) NOT NULL COMMENT '姓名',
    gender ENUM('男','女') DEFAULT '男',
    subject VARCHAR(255) NOT NULL,
    title VARCHAR(255) NOT NULL,
    phone VARCHAR(255),
    office VARCHAR(255),
    PRIMARY KEY (id)
) ENGINEInnoDB  CHARSETutf8mb4;


=
DEFAULT
=
-- 其他表结构类似,请确保外键约束正确

录入测试数据时,请保证 INSERT INTO 语句格式规范,字段值与类型匹配。

核心步骤:搭建 MCP Server

要实现 Dify 调用 MySQL,需要中间件桥接。我们使用开源的 mysql_mcp_server_pro。

1. 获取代码

git clone https://github.com/wenb1n-dev/mysql_mcp_server_pro.git
cd mysql_mcp_server_pro

2. 配置依赖与环境

安装必要的 Python 包:

pip install mcp mysql-connector-python uvicorn python-dotenv starlette

编辑 .env 文件,填入 MySQL 连接信息(Host, Port, User, Password, Database)。

3. 启动服务

uv run server.py

确认服务监听端口(如 9000),后续需在 Dify 中配置此地址。

Dify 端配置流程

1. 安装插件

在 Dify 插件市场或本地加载以下两个关键插件:

  • Agent 策略(支持 MCP SSE 发现和调用工具)
  • MCP SSE 插件

GitHub 资源参考:

  • https://github.com/junjiem/dify-plugin-agent-mcp_sse
  • https://github.com/junjiem/dify-plugin-tools-mcp_sse

2. 配置 MCP SSE

进入插件管理界面,找到 MCP SSE 插件进行授权配置。填写之前启动的 MCP Server 地址:

{"mysql_mcp_server_pro":{"url":"http://192.168.1.XXX:9000/sse"}}

注意 JSON 格式中不要有多余空格,否则会导致解析失败。

3. 创建工作流

  1. 创建类型为 Chatflow 的工作流。
  2. 删除默认的 LLM 节点,拖入一个 Agent 节点。
  3. 在 Agent 配置面板中,选择 ReAct (Support MCP Tools) 策略。经验表明,FunctionCalling 策略在此场景下可能无法正确调用 MCP 工具,ReAct 更为稳定。
  4. 在工具列表中添加'通过 SSE 发现和调用 MCP 工具',并确保选中了刚才配置的 MySQL 服务。
  5. 设置提示词(Prompt),明确告知 Agent 数据库结构及查询规则。例如:
    使用中文回复。当用户提问涉及学生、成绩等实体时,调用 MySQL MCP 工具。
    表结构说明:
    - students: 包含 id, name, height, weight 等字段
    - scores: 包含 studentId, score 等字段
    ...(此处省略详细表结构定义)...
    
  6. 设置最大迭代次数为 3,防止死循环。输出变量绑定为 Agent.text。

测试与验证

工作流发布后,进入测试界面输入自然语言问题,观察 Agent 是否生成正确的 SQL 并返回结果。

示例 1: 列出身高大于等于 168cm 的所有学生。 示例 2: 哪个班级的总成绩最好?

如果返回结果符合预期,说明集成成功。若遇到报错,请检查 Agent 生成的 SQL 是否符合 MySQL 语法。

常见问题排查

1. 连接超时

  • 原因:防火墙拦截或 IP/端口配置错误。
  • 解决:检查 MySQL 服务器防火墙是否开放 3306 端口;确认 MCP SSE 配置中的 URL 地址与服务器实际 IP 一致;使用 telnet 测试连通性。

2. 工具调用失败

  • 原因:Agent 策略选择不当或插件未生效。
  • 解决:务必使用 ReAct 策略;检查插件是否已成功激活;确认 MCP Server 日志无异常。

3. SQL 执行错误

  • 原因:提示词对表结构描述不清,导致生成的 SQL 字段名不匹配。
  • 解决:优化 Prompt,明确字段名称和数据类型;定期同步数据库变更到工作流配置中。

通过以上步骤,即可实现 Dify 与 MySQL 的深度集成,利用 AI 能力简化复杂的数据查询任务。

目录

  1. Dify 与 MySQL 集成实战:基于 MCP 协议的数据交互方案
  2. 环境准备与基础安装
  3. 1. 环境要求
  4. 2. 部署 Dify
  5. 3. 构建 MySQL 测试库
  6. 核心步骤:搭建 MCP Server
  7. 1. 获取代码
  8. 2. 配置依赖与环境
  9. 3. 启动服务
  10. Dify 端配置流程
  11. 1. 安装插件
  12. 2. 配置 MCP SSE
  13. 3. 创建工作流
  14. 测试与验证
  15. 常见问题排查
  16. 1. 连接超时
  17. 2. 工具调用失败
  18. 3. SQL 执行错误

更多推荐文章

查看全部
  • RAG 工程实践拦路虎之一:PDF 格式解析杂谈
  • 数据结构:常见排序算法详解
  • 基于 SpringBoot 的影视周边推荐系统设计与实现
  • AI 生成图片提示词:新手入门指南与最佳实践
  • 2026 牛客寒假算法基础集训营 5 题解(BDFGJ)
  • MCP 协议详解:与 Function Call 区别及使用方法
  • 卷积神经网络 CNN 经典架构解析与 PyTorch 实战
  • 金仓 KES V9 兼容 MongoDB 的运维替代思路
  • Java SpringBoot+Vue3+MyBatis 英语知识应用网站系统架构设计
  • MCP Server 案例:Excel 表格一键生成可视化图表 HTML 报告
  • 技术拆解:用 Web Audio API 实现音乐可视化动效
  • 华为 OD 机试真题:机器人活动区域
  • LangChain 框架核心模块与功能调用实战指南
  • iOS 语音播放中听筒与扬声器切换的完整实现
  • C++ AIGC 吞吐量优化实战:编译与运行时技巧提升 300%
  • 数据结构入门:详解顺序表的实现与操作
  • DJI RoboMaster EP 机器人 Python SDK 编程入门
  • C++ 算法学习第二天:数组专题
  • LangChain 进阶实战:利用 LLM 与 Agents 构建自主决策智能体
  • AI 提示词工程指南:从入门原理到实战模板

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online