Dify开发与集成MCP服务完全指南

一、前言

在大语言模型(LLM)技术快速演进的今天,模型与外部工具的交互能力已成为构建实用AI应用的核心需求。Model Context Protocol(MCP) 作为连接LLM与外部数据源的标准化协议,正在逐步成为智能体开发的事实标准。而Dify作为开源的LLM应用开发平台,通过低代码/无代码的可视化编排能力,大幅降低了AI应用的构建门槛。本文将深入探讨如何在Dify中开发与集成MCP服务,从协议原理到实战部署,为开发者提供一套完整的技术方案。

二、Dify 介绍

2.1 Dify是什么

Dify是一款融合Backend-as-a-Service(BaaS)LLMOps理念的开源LLM应用开发平台,其核心定位是让开发者与非技术人员能够快速构建生产级的生成式AI应用。Dify一词源自"Define + Modify",寓意通过灵活定义与持续优化,实现AI应用的快速迭代。
官网:https://dify.ai

核心特性

  • 多模型支持:兼容GPT、Claude、Llama3等数百种专有/开源模型,支持自定义API接入
  • 低代码开发:拖拽式工作流编排,无需编码即可构建复杂AI逻辑
  • 企业级RAG引擎:支持PDF/PPT等20+文档格式的智能解析与向量存储,准确率达92%
  • Agent框架:内置50+工具(如谷歌搜索、DALL·E),支持自定义工具扩展
  • 全生命周期管理:从开发、测试、部署到监控的一站式控制台

截至2025年,Dify已服务超过18万开发者,支撑5.9万+终端用户的AI应用需求,广泛应用于智能客服、企业知识库、自动化工作流等场景。

2.2 MCP 介绍

2.2.1 什么是MCP

Model Context Protocol(MCP) 是由Anthropic提出的开放协议,旨在标准化LLM与外部工具、数据源的交互方式。其核心目标是解决三大痛点:

  • 数据孤岛:打破LLM无法直接访问实时数据或本地资源的限制
  • 开发低效:统一工具调用接口,避免为不同模型重复开发Function Calling
  • 生态碎片化:建立类似"USB接口"的通用标准,实现工具即插即用

MCP协议定义了三大核心能力:

  • Resources:静态资源(如配置文件、知识库片段)
  • Prompts:提示词模板(供LLM理解工具用途)
  • Tools:可执行工具(如文件操作、API调用)
2.2.2 MCP核心特性
特性 技术细节 优势
标准化接口 基于JSON-RPC 2.0规范,支持HTTP+SSE与Streamable HTTP传输 跨平台兼容性,支持Claude/Cursor等客户端
工具自动发现 客户端可通过list_tools方法动态获取服务端能力 无需硬编码工具定义,降低集成成本
安全会话管理 服务端生成会话ID,支持无状态模式与SSE加密连接 适合云原生部署,保障数据传输安全
流式响应 基于Server-Sent Events(SSE)实现实时数据推送 提升用户体验,支持大型结果分片返回
多语言支持 提供Python/TypeScript SDK,社区维护Java/Go实现 适配主流技术栈,降低开发门槛

2.3 Dify中开发与使用MCP介绍

2.3.1 MCP Server开发与使用

在Dify中开发MCP Server需完成以下步骤:

  1. 环境准备

    • Dify版本≥1.3.0(推荐1.4.0+)
    • 安装Docker与Docker Compose(用于部署Dify)
    • Python 3.10+(用于本地MCP Server开发)
  2. 核心开发流程

    # 基于FastMCP框架的MCP Server示例(来源:腾讯云开发者社区)
    from mcp.server.fastmcp import FastMCP
    import os
    
    mcp = FastMCP()
    
    @mcp.tool()
    def list_desktop_files() -> list:
        """获取当前用户桌面上的所有文件列表"""
        desktop_path = os.path.expanduser("~/Desktop")
        return os.listdir(desktop_path)
    
    if __name__ == "__main__":
        mcp.run(transport='streamable_http', host='0.0.0.0', port=9000)
    
  3. Dify集成配置
    在Dify控制台的插件管理中安装mcp-server插件,配置应用ID与端点URL:

    {
      "public-ip-mcp-server": {
        "transport": "streamable_http",
        "url": "http://your-dify-instance/difyapp_as_mcp_server",
        "timeout": 60
      }
    }
    

2.4 Dify开发MCP Server优势

  1. 低代码快速集成:无需编写完整的MCP协议处理逻辑,通过插件即可将现有工作流转为MCP服务
  2. 多客户端兼容:支持Claude Desktop、Cursor、Cherry Studio等主流MCP客户端
  3. 安全可控:基于Dify的权限管理体系,可限制工具调用范围(如仅允许读取特定目录)
  4. 无缝衔接RAG:可直接调用Dify知识库中的企业数据,增强工具响应的专业性
  5. 生产级部署:支持Docker/K8s部署,内置负载均衡与会话管理,满足高并发需求

三、Dify开发与集成MCP操作过程

3.1 Dify MCP 插件说明

mcp-server插件是Dify社区开发的核心扩展,其功能包括:

  • 将Dify工作流暴露为MCP工具,支持JSON-RPC接口调用
  • 自动处理协议握手、工具发现、执行结果返回全流程
  • 兼容MCP最新Streamable HTTP规范(基于PR #206)
  • 支持无状态服务器模式,适合云原生环境部署

插件地址:GitHub - dify-plugin-mcp_server

3.2 安装mcp-server插件

步骤1:部署Dify环境

# 克隆Dify仓库
git clone https://github.com/langgenius/dify.git
cd dify/docker

# 配置环境变量(关键设置)
cp .env.example .env
vim .env  # 设置FORCE_VERIFYING_SIGNATURE=false以允许第三方插件

# 启动服务
docker-compose up -d

步骤2:安装插件

  1. 访问Dify控制台(http://your-server-ip),进入插件市场
  2. 搜索mcp-server,选择版本≥0.0.6,点击安装
  3. 进入插件设置页,输入应用ID(需提前创建Dify应用)

3.3 创建新应用

3.3.1 工作流开始节点增加输入变量
  1. 进入DifyStudio,创建工作流应用
  2. 拖拽开始节点,添加输入参数:
    • 名称:user_query
    • 类型:字符串
    • 描述:用户查询内容(供LLM理解用途)
3.3.2 增加和配置大模型节点
  1. 添加LLM节点,选择模型(如GPT-4o-mini)
  2. 配置提示词模板:
    你是MCP工具调用助手,需根据用户问题决定是否调用工具:
    - 若查询文件列表,调用list_desktop_files工具
    - 其他问题直接回答
    用户问题:{{user_query}}
    
  3. 启用工具调用功能,选择已配置的MCP服务
3.3.3 效果测试

预览窗口输入测试指令:

  • 测试1:"列出我的桌面文件" → 应触发list_desktop_files工具调用
  • 测试2:"今天天气如何" → 直接返回回答

3.4 mcp-server发布与使用

  1. 创建端点
    在Dify应用设置中,进入API接入MCP服务,生成端点URL:

    https://your-dify-instance/difyapp_as_mcp_server
    
  2. 客户端配置(以Cursor为例)

    • 打开Cursor→设置AIMCP
    • 添加服务器:
      {
        "dify_mcp": {
          "url": "https://your-dify-instance/difyapp_as_mcp_server",
          "transport": "streamable_http"
        }
      }
      
    • 重启Cursor,通过指令"使用Dify工具列出桌面文件"测试调用

3.5 配置MCP 发现工具

在Dify插件设置中,配置MCP服务发现参数:

{
  "mysql8-mcp-server": {
    "transport": "streamable_http",
    "url": "http://mysql8-mcp-server-svc.mcp:9000/mcp/",
    "headers": {},
    "timeout": 60
  },
  "searxng-mcp-server": {
    "transport": "streamable_http",
    "url": "http://searxng-mcp-server-svc.mcp:9000/mcp/",
    "timeout": 60
  }
}

配置项说明:transport支持streamable_http(推荐)或ssetimeout建议设置为30-60秒

3.6 创建智能体应用

3.6.1 创建智能体

进入DifyStudio创建应用→选择智能体(Agent),命名为"多功能工具助手"

3.6.2 配置提示词
你是企业级智能助手,可调用以下MCP工具:
- mysql8-mcp-server:查询数据库(学生/教师/成绩数据)
- searxng-mcp-server:联网搜索
回答规则:
1. 必须使用工具返回结果,不可虚构信息
2. 数据库查询结果需脱敏(隐藏手机号/身份证号)
3.6.3 引用mcp服务发现工具

在智能体工具配置中,勾选MCP服务发现,选择3.5节配置的MCP服务

3.6.4 效果测试
  • 测试1:"查询高二(3)班数学平均分" → 应调用mysql8-mcp-server
  • 测试2:"2025年AI领域最新进展" → 应调用searxng-mcp-server

四、客户端集成使用Dify MCP服务

4.1 魔塔平台集成MCP

魔塔平台作为企业级AI中枢,集成Dify MCP服务步骤如下:

  1. 进入魔塔应用市场,搜索MCP客户端插件并安装
  2. 配置MCP服务器:
    • 名称:Dify-MCP
    • URL:https://your-dify-instance/difyapp_as_mcp_server
    • 认证方式:API Key(从Dify个人设置API密钥获取)
  3. 在工作流中添加MCP工具节点,选择需调用的Dify工具(如list_desktop_files

4.2 VSCode集成MCP服务

以Cursor(VSCode AI插件)为例:

  1. 安装Cursor插件:Cursor - AI Code Editor
  2. 打开设置(Ctrl+,)→ 搜索MCP添加服务器
  3. 输入配置:
    {
      "name": "Dify Workflow",
      "url": "https://your-dify-instance/difyapp_as_mcp_server",
      "transport": "streamable_http",
      "headers": {
        "Authorization": "Bearer sk-xxxxxx"  // Dify API密钥
      }
    }
    
  4. 在编辑器中输入指令:"用Dify工具分析当前项目依赖冲突",测试调用

五、总结

Dify与MCP的结合,为LLM应用开发提供了"低代码构建-标准化集成-多端复用"的完整解决方案。通过本文介绍的方法,开发者可快速将企业内部系统、本地工具转化为LLM可调用的能力,显著降低AI应用的落地门槛。

未来,随着MCP协议的持续演进与Dify插件生态的完善,我们期待看到更多创新场景:如物联网设备控制、工业软件集成、跨平台智能体协作等。建议开发者关注Dify GitHub仓库(langgenius/dify)与MCP协议规范(modelcontextprotocol/spec),及时获取更新。

Logo

全面兼容主流 AI 模型,支持本地及云端双模式

更多推荐