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 () ,
office () ,
wechat (),
isHeadTeacher ENUM(,) ,
(id)
) ENGINEInnoDB CHARSETutf8mb4;
classes (
id () COMMENT ,
className () COMMENT ,
grade COMMENT ,
headTeacherId () COMMENT ,
classroom () COMMENT ,
studentCount COMMENT ,
remark (),
(id),
(headTeacherId) teachers(id)
) ENGINEInnoDB CHARSETutf8mb4;
students (
id () COMMENT ,
name () ,
gender ENUM(,) ,
birthDate DATETIME ,
classId () ,
phone () ,
email () ,
height COMMENT ,
weight COMMENT ,
healthStatus ENUM(,,) ,
(id),
(classId) classes(id)
) ENGINEInnoDB CHARSETutf8mb4;
courses (
id () COMMENT ,
courseName () ,
credit ,
teacherId () ,
semester (),
type ENUM(,) ,
(id),
(teacherId) teachers(id)
) ENGINEInnoDB CHARSETutf8mb4;
scores (
id () ,
studentId () ,
courseId () ,
score ,
examDate ,
usualScore ,
finalScore ,
(id),
(studentId) students(id),
(courseId) courses(id)
) ENGINEInnoDB CHARSETutf8mb4;


