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

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

基于 MCP 协议的 Dify 与 MySQL 深度整合方案,通过搭建 MCP Server 和配置 Agent 策略,实现自然语言到 SQL 查询的转换。内容涵盖环境准备、表结构定义、插件安装、工作流配置及常见问题排查,助力开发者构建智能数据应用。

奇形怪状发布于 2026/3/15更新于 2026/8/1745 浏览
Dify 与 MySQL 深度整合实战:基于 MCP 协议的数据交互

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

背景与目标

在数字化时代,将大语言模型(LLM)的能力落地到具体业务数据中是开发者的常见需求。Dify 作为一款强大的 LLM 应用开发平台,通过 MCP(Model Context Protocol)协议与 MySQL 数据库结合,能够让我们用自然语言直接查询和分析结构化数据。这种整合不仅降低了 SQL 编写的门槛,还让 AI 具备了处理复杂业务逻辑的能力。

本文将详细介绍如何从零搭建这一环境,包括 Dify 部署、MySQL 表结构初始化、MCP Server 配置以及 Dify 工作流编排,最后通过实际测试验证效果并排查常见问题。

环境准备

1. 基础依赖

确保开发环境已安装 Python 3.8+、Docker 和 Docker Compose。建议使用 Linux 系统(如 Rocky 9.5 或 Ubuntu),以保证兼容性。

2. 安装 Dify

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

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

若遇到镜像拉取问题,可配置 Docker 代理。在 /etc/systemd/system/docker.service.d/ 下创建 http-proxy.conf 文件,填入代理地址后重启 Docker 服务即可。

启动成功后,访问 http://localhost:3000 进行首次管理员账号设置。

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 COMMENT '科目',
    title VARCHAR(255) NOT NULL COMMENT '职称',
    phone VARCHAR(255) NOT NULL,
    office VARCHAR(255) NOT NULL,
    wechat VARCHAR(255),
    isHeadTeacher ENUM('true','false') DEFAULT 'false',
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 班级表
CREATE TABLE classes (
    id VARCHAR(255) NOT NULL COMMENT '班级 ID',
    className VARCHAR(255) NOT NULL COMMENT '班级名称',
    grade INT NOT NULL COMMENT '年级',
    headTeacherId VARCHAR(255) NOT NULL COMMENT '班主任 ID',
    classroom VARCHAR(255) NOT NULL COMMENT '教室',
    studentCount INT NOT NULL COMMENT '人数',
    remark VARCHAR(255),
    PRIMARY KEY (id),
    FOREIGN KEY (headTeacherId) REFERENCES teachers(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 学生表
CREATE TABLE students (
    id VARCHAR(255) NOT NULL COMMENT '学号',
    name VARCHAR(255) NOT NULL,
    gender ENUM('男','女') DEFAULT '男',
    birthDate DATETIME NOT NULL,
    classId VARCHAR(255) NOT NULL,
    phone VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    height INT NOT NULL COMMENT '身高 cm',
    weight INT NOT NULL COMMENT '体重 kg',
    healthStatus ENUM('良好','一般','较差') DEFAULT '良好',
    PRIMARY KEY (id),
    FOREIGN KEY (classId) REFERENCES classes(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 课程表
CREATE TABLE courses (
    id VARCHAR(255) NOT NULL COMMENT '课程 ID',
    courseName VARCHAR(255) NOT NULL,
    credit INT NOT NULL,
    teacherId VARCHAR(255) NOT NULL,
    semester VARCHAR(255),
    type ENUM('必修','选修') DEFAULT '选修',
    PRIMARY KEY (id),
    FOREIGN KEY (teacherId) REFERENCES teachers(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 成绩表
CREATE TABLE scores (
    id VARCHAR(255) NOT NULL,
    studentId VARCHAR(255) NOT NULL,
    courseId VARCHAR(255) NOT NULL,
    score INT NOT NULL,
    examDate DATE NOT NULL,
    usualScore INT DEFAULT 0,
    finalScore INT DEFAULT 0,
    PRIMARY KEY (id),
    FOREIGN KEY (studentId) REFERENCES students(id),
    FOREIGN KEY (courseId) REFERENCES courses(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

录入测试数据后,确保各表关联正常。

搭建 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. 配置环境变量

编辑 .env 文件,填入 MySQL 的连接信息(IP、端口、用户名、密码)。注意不要留多余空格,否则会导致连接失败。

3. 安装依赖

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

4. 启动服务

uv run server.py

服务启动后,默认监听 SSE 接口,等待 Dify 调用。

Dify 工作流配置

1. 安装插件

在 Dify 后台进入「插件管理」,安装以下两个关键插件:

  • Agent 策略(支持 MCP 工具):用于调度 Agent 行为。
  • MCP SSE:用于通过 SSE 协议发现并调用外部工具。

插件源码参考 GitHub 仓库,确保版本兼容。

2. 配置 MCP SSE

进入 MCP SSE 插件配置页,填写之前启动的 MCP Server 地址:

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

保存后,Dify 应能识别到 MySQL 相关的工具列表。

3. 创建工作流

  1. 选择「Chatflow」类型创建工作流。
  2. 删除默认的 LLM 节点,拖入一个「Agent」节点。
  3. 在 Agent 配置面板中,选择 ReAct (Support MCP Tools) 策略。经验证,该策略对 MCP 工具的支持比 FunctionCalling 更稳定,能避免找不到 call_tool 方法的问题。
  4. 在工具列表中,添加刚才配置的 MCP 服务器工具。
  5. 设置提示词(System Prompt),明确告知 Agent 数据库结构及查询规则。例如:

    使用中文回复。当用户提问涉及学生、成绩等实体时,必须使用 MySQL MCP 工具查询。表结构包含 teachers, classes, students, courses, scores。

4. 模型选择建议

本地部署的大模型(如 Deepseek 14B)推理速度较慢,可能影响体验。建议接入云端 API(如阿里百炼云)以获得更快的响应速度和更好的理解能力。

测试与验证

完成配置后,在工作流测试界面输入自然语言问题进行验证:

  • 场景一:列出身高大于等于 168cm 的所有学生。
  • 场景二:列出体重大于等于 60kg 的学生。
  • 场景三:哪个学生成绩最好?
  • 场景四:总成绩最好的是哪个班级?

观察 Agent 是否自动转换为正确的 SQL 语句并返回结果。如果输出符合预期,说明整合成功。

常见问题排查

1. 连接失败

若提示'连接超时'或'无法找到服务器',请检查:

  • 防火墙是否开放了 MySQL 端口(默认 3306)。
  • MCP SSE 配置中的 IP 地址是否正确,且网络可达。
  • MySQL 服务是否正常运行(systemctl status mysql)。

2. 工具调用错误

若提示'找不到工具',通常是因为:

  • 未选择正确的 Agent 策略(务必选 ReAct)。
  • MCP SSE 插件未正确授权或地址配置有误。
  • 工具列表未刷新,尝试重新保存配置。

3. SQL 执行错误

若返回'语法错误'或'表不存在':

  • 检查提示词中是否准确描述了表结构,特别是字段名和关系。
  • 确认数据库中表名是否与提示词一致。
  • 优化提示词,增加对变量引用的约束,例如明确指定'使用变量 score 作为查询条件'。

通过以上步骤,你可以构建一个基于 Dify 和 MCP 的智能数据查询应用,实现自然语言驱动的数据分析。

目录

  1. Dify 与 MySQL 深度整合实战:基于 MCP 协议的数据交互
  2. 背景与目标
  3. 环境准备
  4. 1. 基础依赖
  5. 2. 安装 Dify
  6. 3. 初始化 MySQL 数据库
  7. 搭建 MCP Server
  8. 1. 获取代码
  9. 2. 配置环境变量
  10. 3. 安装依赖
  11. 4. 启动服务
  12. Dify 工作流配置
  13. 1. 安装插件
  14. 2. 配置 MCP SSE
  15. 3. 创建工作流
  16. 4. 模型选择建议
  17. 测试与验证
  18. 常见问题排查
  19. 1. 连接失败
  20. 2. 工具调用错误
  21. 3. SQL 执行错误
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 前端四年裸辞求职经历与面试复盘
  • 微信小程序自定义 tabBar 实现方案
  • 机器人 MIT 电机混合扭矩模式控制详解
  • 大模型书籍精选:从理论到工程实践的快速选型指南
  • Linux 服务器配置 SFTP 完整指南与安全实践
  • 数据结构:常见排序算法详解与代码实现
  • VS Code 内置 Git 分支操作实战指南
  • Java 零基础完整入门教程
  • C++ 继承机制详解:访问控制、同名隐藏与派生类默认成员函数
  • GFPGAN 跨平台部署与人脸图像修复实战指南
  • AR 滤镜触发机制:基于特定图案识别激活特效
  • 基于 skywalking-python 的 Python 应用分布式追踪实战
  • 基于 Z-Image Turbo 的电商海报极速生成实战
  • C++ 类与对象:封装特性的实现与实战应用
  • 无人机视觉语言导航概述:概念、定义与应用场景
  • 2026 年十大 AI 编程工具实测与选型指南
  • C++ 虚函数与纯虚函数:多态的核心实现基石
  • Linux 下基于 Socket 的 HTTP 服务器实现与协议解析
  • 利用 DeepSeek 与云端算力快速构建响应式个人主页
  • PySLAM 视觉定位库:Python 环境搭建与核心功能解析

相关免费在线工具

  • 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