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

把 Dify 连上 MySQL:用 MCP 直接让大模型查数据库

记录通过 MCP 协议将 Dify 与 MySQL 整合的实操过程:搭建 MCP server 作为中间层,在 Dify 中安装 MCP SSE 插件并配置 Agent 工作流,使大模型能根据自然语言问题直接生成并执行 SQL 查询。文章包含完整的环境准备、建表语句、MCP server 安装与 Dify 工作流配置步骤,并针对常见连接失败、工具调用错误等问题给出排查方法。

imJackJia发布于 2026/6/30更新于 2026/8/1925 浏览
把 Dify 连上 MySQL:用 MCP 直接让大模型查数据库

最近在折腾 Dify 的时候,试着通过 MCP 协议把 MySQL 接了起来。原先我以为又要写一堆中间件,结果发现用现成的 MCP server 就能让 Agent 直接跑 SQL,过程比想象中简单。下面是我踩过一遍的记录,给有类似需求的同学参考。

环境准备

Python 版本至少 3.8。后边还会用到 Docker,所以也先装好。

Dify 我用的是 1.1.0,从 GitHub 直接拉:

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

然后进目录改一下 .env.example 复制成 .env,用 Docker Compose 启动:

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

如果环境比较干净,装 Docker 可以照这个来(CentOS/RHEL 系):

dnf update
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker

需要走代理的话,在 /etc/systemd/system/docker.service.d/http-proxy.conf 加上:

[Service]
Environment="HTTP_PROXY=http://proxy_ip:port"
Environment="HTTPS_PROXY=http://proxy_ip:port"
Environment="NO_PROXY=localhost,127.0.0.1"

然后 systemctl daemon-reload 和 restart docker。

Dify 启动后访问 http://localhost:3000,第一次会引导设置管理员账号。默认 API 端口是 5000,需要改的话在 .env 里调。

MySQL 建表

我新建了一个数据库 test,字符集 utf8mb4。

CREATE DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

下面这几张表模拟了一个简易的学校管理系统:

-- 教师表
CREATE TABLE `teachers` (
  `id` varchar(255) NOT NULL COMMENT ,
  `name` ()  COMMENT ,
  `gender` enum(,)    COMMENT ,
  `subject` ()  COMMENT ,
  `title` ()  COMMENT ,
  `phone` ()  COMMENT ,
  `office` ()  COMMENT ,
  `wechat` ()   COMMENT ,
  `isHeadTeacher` enum(,)   COMMENT ,
   (`id`)
) ENGINEInnoDB  CHARSETutf8mb4 COMMENT;


 `classes` (
  `id` ()  COMMENT ,
  `className` ()  COMMENT ,
  `grade`   COMMENT ,
  `headTeacherId` ()  COMMENT ,
  `classroom` ()  COMMENT ,
  `studentCount`   COMMENT ,
  `remark` ()   COMMENT ,
   (`id`),
   `headTeacherId`  (`headTeacherId`)  `teachers` (`id`)   CASCADE   CASCADE
) ENGINEInnoDB  CHARSETutf8mb4 COMMENT;


 `students` (
  `id` ()  COMMENT ,
  `name` ()  COMMENT ,
  `gender` enum(,)    COMMENT ,
  `birthDate` datetime  COMMENT ,
  `classId` ()  COMMENT ,
  `phone` ()  COMMENT ,
  `email` ()  COMMENT ,
  `height`   COMMENT ,
  `weight`   COMMENT ,
  `healthStatus` enum(,,)    COMMENT ,
   (`id`),
   `classId`  (`classId`)  `classes` (`id`)   CASCADE
) ENGINEInnoDB  CHARSETutf8mb4 COMMENT;


 `courses` (
  `id` ()  COMMENT ,
  `courseName` ()  COMMENT ,
  `credit`   COMMENT ,
  `teacherId` ()  COMMENT ,
  `semester` ()   COMMENT ,
  `type` enum(,)    COMMENT ,
   (`id`)
) ENGINEInnoDB  CHARSETutf8mb4 COMMENT;


 `scores` (
  `id` ()  COMMENT ,
  `studentId` ()  COMMENT ,
  `courseId` ()  COMMENT ,
  `score`   COMMENT ,
  `examDate`   COMMENT ,
  `usualScore`    COMMENT ,
  `finalScore`    COMMENT ,
   (`id`),
   `studentId`  (`studentId`)  `students` (`id`)   CASCADE,
   `courseId`  (`courseId`)  `courses` (`id`)   CASCADE
) ENGINEInnoDB  CHARSETutf8mb4 COMMENT;
'教师 ID'
varchar
255
NOT NULL
'教师姓名'
'男'
'女'
NOT NULL
DEFAULT
'男'
'性别'
varchar
255
NOT NULL
'教授科目'
varchar
255
NOT NULL
'职称'
varchar
255
NOT NULL
'联系电话'
varchar
255
NOT NULL
'办公室位置'
varchar
255
DEFAULT
NULL
'微信'
'true'
'false'
DEFAULT
'false'
'是否为班主任'
PRIMARY KEY
=
DEFAULT
=
=
'教师表'
-- 班级表
CREATE TABLE
varchar
255
NOT NULL
'班级 ID'
varchar
255
NOT NULL
'班级名称'
int
NOT NULL
'年级'
varchar
255
NOT NULL
'班主任 ID'
varchar
255
NOT NULL
'教室位置'
int
NOT NULL
'学生人数'
varchar
255
DEFAULT
NULL
'备注信息'
PRIMARY KEY
CONSTRAINT
FOREIGN KEY
REFERENCES
ON
DELETE
ON
UPDATE
=
DEFAULT
=
=
'班级表'
-- 学生表
CREATE TABLE
varchar
255
NOT NULL
'学号'
varchar
255
NOT NULL
'学生姓名'
'男'
'女'
NOT NULL
DEFAULT
'男'
'性别'
NOT NULL
'出生日期'
varchar
255
NOT NULL
'班级 ID'
varchar
255
NOT NULL
'联系电话'
varchar
255
NOT NULL
'电子邮箱'
int
NOT NULL
'身高 (cm)'
int
NOT NULL
'体重 (kg)'
'良好'
'一般'
'较差'
NOT NULL
DEFAULT
'良好'
'健康状况'
PRIMARY KEY
CONSTRAINT
FOREIGN KEY
REFERENCES
ON
DELETE
=
DEFAULT
=
=
'学生表'
-- 课程表
CREATE TABLE
varchar
255
NOT NULL
'课程 ID'
varchar
255
NOT NULL
'课程名称'
int
NOT NULL
'学分'
varchar
255
NOT NULL
'授课教师 ID'
varchar
255
DEFAULT
NULL
'学期'
'必修'
'选修'
NOT NULL
DEFAULT
'选修'
'课程类型'
PRIMARY KEY
=
DEFAULT
=
=
'课程表'
-- 成绩表
CREATE TABLE
varchar
255
NOT NULL
'成绩记录 ID'
varchar
255
NOT NULL
'学生 ID'
varchar
255
NOT NULL
'课程 ID'
int
NOT NULL
'综合成绩'
date
NOT NULL
'考试日期'
int
DEFAULT
'0'
'平时成绩'
int
DEFAULT
'0'
'期末成绩'
PRIMARY KEY
CONSTRAINT
FOREIGN KEY
REFERENCES
ON
DELETE
CONSTRAINT
FOREIGN KEY
REFERENCES
ON
DELETE
=
DEFAULT
=
=
'成绩表'

插入一些示例数据,比如:

INSERT INTO `teachers` (`id`, `name`, `gender`, `subject`, `title`, `phone`, `office`, `wechat`, `isHeadTeacher`) VALUES ('T001', '张建国', '男', '数学', '教授', '13812345678', '博学楼 301', 'lily_teacher', 'true');
-- 其他数据按需补上

搭 MCP Server

Dify 通过 MCP 调用 MySQL 需要一个中间层,MCP server 把自然语言转换成的工具调用转发成 SQL。我用了 wenb1n-dev/mysql_mcp_server_pro 这个实现。

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

编辑 .env,填好数据库连接信息。然后装依赖:

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

启动:

uv run server.py

服务起来后,会有一个 SSE 端点,默认在 http://server_ip:9000/sse。

Dify 里配置插件

进入 Dify 的插件市场,搜索并安装两个插件:

  • Agent 策略 (支持 MCP 工具)
  • MCP SSE 插件

安装后,在插件管理中找到 MCP SSE,点击'已授权',填入 MCP server 的地址:

{"mysql_mcp_server_pro": {"url": "http://server_ip:9000/sse"}}

注意 JSON 不要有多余空格,不然会报配置格式错误。

创建工作流

新建一个 Chatflow 类型的工作流。在画布里先删掉默认的 LLM 节点,然后拖入一个 Agent 节点。

在 Agent 配置中:

  • 策略 选 ReAct (Support MCP Tools)。这个策略对 MCP 工具的兼容性不错。
  • 工具列表 点添加,选 通过 SSE 发现和调用 MCP 工具,这时会出现从 MCP server 发现的工具列表,勾上与 MySQL 相关的那些。
  • 指令 写一段提示词,告诉模型什么时候用工具、表结构什么样。我写了个简版:
使用中文回复。当用户提问中涉及学生、教师、成绩、班级、课程等实体时,使用 MySQL MCP 进行数据查询和操作。
数据库 test,表结构如下:
- teachers (id, name, gender, subject, title, phone, office, wechat, isHeadTeacher)
- classes (id, className, grade, headTeacherId, classroom, studentCount, remark)
- students (id, name, gender, birthDate, classId, phone, email, height, weight, healthStatus)
- courses (id, courseName, credit, teacherId, semester, type)
- scores (id, studentId, courseId, score, examDate, usualScore, finalScore)

然后把最大迭代次数设成 3,最后'连接直接回复'选 Agent.text。

跑几个测试

配置完保存,立刻就能在测试面板里提问了。我试了这几个:

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

返回结果都符合预期。看看 Agent 的轨迹,它会先调用 MCP 工具把自然语言转成 SQL,抛给 MySQL 执行,再把结果组织成中文回答。对简单查询直接出结果,复杂一点的(比如总成绩排名)也能自己拼聚合查询。

容易出现的问题

连接超时
最常见的是防火墙没开 3306 或者 MCP server 地址配错。先在本机 curl http://server_ip:9000/sse 看通不通,再查 MySQL 服务是否正常运行。

找不到工具
检查插件安装状态,确认 Agent 策略选了 ReAct,并且 MCP SSE 插件里的 URL 配置正确。同时确保 MCP server 正在运行,否则 Dify 发现不了工具。

SQL 执行错误
多发生在表名拼错或字段不存在。这时去优化提示词里的表结构说明,最好把字段列清楚,让模型有准确上下文。如果数据库结构变了,记得同步更新工作流的指令。


整个流程走下来,MCP 负责让 Agent 安全地使用外部工具,省去了自己写 Action 或中间接口的麻烦。不过目前这种方案对提示词质量要求比较高,指令写得越具体,生成的 SQL 越准确。如果你也想把结构化数据丢给 Dify 用,不妨试试这套组合。

目录

  1. 环境准备
  2. MySQL 建表
  3. 搭 MCP Server
  4. Dify 里配置插件
  5. 创建工作流
  6. 跑几个测试
  7. 容易出现的问题
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 前端水印与反爬的实现思路
  • AI 编程 Spec Coding 标准化工作流详解
  • 大模型 API 注册与调用实战
  • C++ 虚函数与虚基类详解:原理、用法与实战
  • 汇川机器人软件 RobotLab 常规操作
  • LLL 与 BKZ 算法:理论、实现与优化
  • C++ 搜索引擎通用工具模块:文件读取与中文分词实现
  • 大模型基本技术:架构、训练与推理优化详解
  • Whisper Diarization 语音识别与说话人分离入门指南
  • OpenClaw:开源 AI 智能体框架的技术解析与实战部署
  • HTML 标签详解:构建网页骨架的核心语法与用法
  • 软件开发并非易事:低代码与零基础的真相
  • 高空长航时无人机热管理系统中抗辐照 MCU 的可靠性验证与应用
  • 大模型幻觉问题治理:技术体系、工程实践与未来演进
  • 算法的本质:现代视角下的深度解析
  • Ubuntu 24.04 安装 NVIDIA 驱动及 CUDA 开发环境完整指南
  • 基于 Spring Boot 和 WebSocket 的实时聊天室系统
  • Qt 与 Web 混合编程:CEF 与 QCefView 深度解析
  • LLM 大模型开源教程推荐:Maxime Labonne 主导的 llm-course 项目
  • Spring AI 支持 Agent Skills 模块化能力指南

相关免费在线工具

  • 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