【AI智能体】Dify 开发与集成MCP服务实战操作详解

目录

一、前言

二、Dify 介绍

2.1 Dify是什么

2.2 MCP 介绍

2.2.1 什么是MCP

2.2.2 MCP核心特性

2.3 Dify中开发与使用MCP介绍

2.3.1 MCP Server开发与使用

2.4 dify 开发MCP Server优势

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

3.1 Dify MCP 插件说明

3.2 安装mcp-server插件

3.3 创建新应用

3.3.1 工作流开始节点增加输入变量

3.3.2 增加和配置大模型节点

3.3.3 效果测试

3.4 mcp-server发布与使用

3.5 配置MCP 发现工具

3.6 创建智能体应用

3.6.1 创建智能体

3.6.2 配置提示词

3.6.3 引用 mcp服务发现工具

3.6.4 效果测试

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

4.1 魔塔平台集成MCP

4.2 VSCode集成MCP服务

五、写在文末


一、前言

MCP ,即模型上下文协议(Model Context Protocol, MCP),由 Anthropic 公司(Claude 大模型母公司)在 2024 年 11 月推出的开放协议,旨在标准化大型语言模型与外部数据源和工具之间的交互方式。MCP 被形象地比喻为 AI 领域的"USB-C 接口",因为它提供了连接各类服务的统一框架。从而增强模型的实时交互和任务执行能力。Dify提供了一套完整的工具链,支持从提示词工程(Prompt Engineering)到应用发布的全流程,而且基于Dify平台,应用开发者可以定制化自己的企业MCP服务,通过暴露Endpoint之后,应用中就可以方便的进行集成使用,从而大大减少开发MCP的过程,本篇将详细结束如何基于Dify开发MCP服务并集成使用。

二、Dify 介绍

2.1 Dify是什么

Dify 是一个开源的大模型应用开发平台,旨在帮助开发者快速构建、部署和管理基于大型语言模型(LLM)的 AI 应用。它提供了一套完整的工具链,支持从提示词工程(Prompt Engineering)到应用发布的全流程,适用于企业级 AI 解决方案和个人开发者项目。

官网入口:Dify: Production-Ready AI Agent Builder

中文站入口:Dify:企业级 AI Agent 开发平台

2.2 MCP 介绍

2.2.1 什么是MCP

MCP ,即模型上下文协议(Model Context Protocol, MCP),由 Anthropic 公司(Claude 大模型母公司)在 2024 年 11 月推出的开放协议,旨在标准化大型语言模型与外部数据源和工具之间的交互方式。MCP 被形象地比喻为 AI 领域的"USB-C 接口",因为它提供了连接各类服务的统一框架。从而增强模型的实时交互和任务执行能力。

2.2.2 MCP核心特性

MCP 具备如下核心特点:

  • 标准化集成

    • MCP统一了不同AI模型(如Claude、GPT等)与外部工具(如数据库、API、浏览器等)的交互方式,避免了传统定制化API开发的重复劳动

  • 双向通信

    • 不同于传统AI只能被动接收数据,MCP支持AI主动检索信息并执行操作(如更新数据库、触发工作流),实现真正的“代理式AI”

  • 动态上下文管理

    • MCP允许AI在会话中持续携带上下文信息(如用户偏好、历史记录),使多步骤任务(如“查询天气→推荐行程→预订酒店”)能自动串联执行

  • 安全与灵活性

    • MCP支持本地或云端部署,通过OAuth 2.1认证和数据沙箱机制保障敏感信息的安全访问

2.3 Dify中开发与使用MCP介绍

在 Dify 中,对于MCP可以分MCP Server的开发和MCP服务的集成两部分,这两种分别对应到实际应用中两种不同的使用场景。

2.3.1 MCP Server开发与使用

mcp-server 插件由 Dify 社区贡献,是一款扩展类型的插件,在dify的插件市场中通过mcp关键字可以搜到。

安装该插件后,可将任何 Dify 应用转换为兼容 MCP 的服务器端点,供外部 MCP 客户端直接访问。在实际业务中,其完整的开发使用流程如下:

  • 将 Dify 作为 MCP 工具暴露:
    • 将你的 Dify 应用程序转变为单个 MCP 工具,Cursor、Claude Desktop、Cline、Windsurf 甚至其他 Dify 实例等客户端都可调用
  • 利用 Dify Endpoint :
    • 创建应用程序端点后,将获得 MCP 客户端可以用来连接的唯一 URL。
  • 运行 MCP 服务:
    • 该插件会自动在 Dify 的插件环境中启动 HTTP 服务,通过 HTTP 和 SSE 协议处理来自 MCP 客户端的请求。这涵盖了从协议握手到功能发现以及工具执行的所有内容。
  • 应用集成:
    • 比如在其他的客户端工具,像魔搭、Cursor、VSCode等就可以直接访问该端点进行使用,或者在程序中集成使用。

2.4 dify 开发MCP Server优势

在 Dify 平台上开发 MCP(Model Context Protocol)Server 具有显著优势,特别是在构建灵活、可扩展的 AI 智能体应用方面。以下是其主要优势:

1)标准化接口,提升开发效率

  • 统一交互协议:MCP 提供标准化的客户端-服务器通信协议,使得 Dify 可以无缝集成各类外部工具(如数据库、API、文件系统等),无需为每个工具单独适配接口。

  • 拖拽式编排:Dify 的可视化工作流编辑器结合 MCP Server,开发者只需简单拖拽即可完成功能集成,大幅降低开发门槛。

2)灵活扩展,支持多场景应用

  • 动态工具发现:MCP Server 支持动态发现新工具,Dify 应用可自动识别并使用新增功能,无需重新部署。

  • 跨平台兼容:MCP Server 可对接多种 AI 客户端(如 Claude Desktop、Cursor IDE),一套 MCP 服务可同时支持 Dify 和其他 AI 平台。

3)高效数据流转,增强 AI 能力

  • RAG(检索增强生成)优化:通过 MCP Server,Dify 可轻松接入企业知识库、数据库等,提升 AI 生成内容的准确性和实时性。

  • 自动化任务执行:结合 Zapier 等 MCP 服务,Dify 可实现跨应用自动化(如自动发送邮件、更新 CRM 数据),提高业务效率。

4)安全与解耦设计

  • 数据本地化:MCP Server 可在企业 VPC 内独立部署,确保敏感数据不外流。

  • 解耦架构:MCP 服务与 Dify 应用解耦,更新工具只需修改 MCP Server,无需调整 Dify 主程序。

5)生态整合 & 社区支持

  • 丰富插件市场:Dify 提供 MCP 相关插件(如 MCP SSEZapier MCP),简化集成流程。

  • 活跃开发者社区:GitHub 上有大量开源 MCP Server 实现(如 Python SDK、Node.js 版本),加速自定义开发。

Dify 开发 MCP Server 的核心优势在于 标准化、灵活性、高效集成和低成本运维,特别适合企业级 AI 智能体应用的快速构建。无论是自动化任务、知识库增强,还是多工具协同,Dify + MCP 的组合都能提供强大支持,推动 AI 应用的规模化落地。

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

接下来我们通过实际操作演示如何在Dify中开发MCP Server并进行集成使用。

3.1 Dify MCP 插件说明

mcp-server插件,可以将我们在Dify上面构建的应用直接发布成为一个符合MCP标准的服务端点

这款由Dify社区贡献的Extension插件,安装后能够让你的任何Dify应用变身为MCP Server,允许外部兼容MCP协议的客户端直接访问,这为Dify 应用的集成和共享提供了极大的便利。插件的核心功能如下:

  1. 将MCP应用暴露为MCP工具

    1. 它能将你的整个Dify应用(无论简单或复杂)抽象成一个单一的MCP工具,外边外部MCP客户端(如cursor、cline、甚至dify自身)发现和调用。

  2. 利用Dify Endpoint功能生成访问入口

    1. 当你为应用创建Endpoint之后,会得到一个专属的URL,外部MCP客户端可以通过这个URL直接连接到你的应用。

  3. 提供标准的MCP服务

    1. 插件会在Dify环境中自动运行一个HTTP服务,该服务基于HTTP和SSE协议,能够高效处理外部MCP客户端的请求,包括协议握手、能力发现(告诉客户端做什么)以及实际的工具调用。

3.2 安装mcp-server插件

如下,通过主页右上角的插件按钮,进入dify插件市场,搜索MCP相关插件,找到该插件并点击安装即可(安装过程会根据网络情况不同而有一定耗时)

等待安装完成之后,在个人的插件列表页面就能看到了

3.3 创建新应用

mcp-server配置的时候需要关联一个具体的应用,先创建一个新的应用,这里使用工作流,如下:

3.3.1 工作流开始节点增加输入变量

开始节点增加一个输入参数,作为用户的输入

3.3.2 增加和配置大模型节点

增加一个大模型节点,接收来自开始节点用户的输入,传递到系统提示词中构成完整的传递给大模型的提示词,这里让大模型模仿输入的author的风格写一首诗,参考下面的配置

大模型节点之后增加一个结束节点,结束节点的输入变量为大模型的输出参数

3.3.3 效果测试

点击右上角的发布更新

然后点击左侧的运行

通过下面的运行结果可以看到工作流配置的是没问题的

3.4 mcp-server发布与使用

选择上述安装完成的mcp-server插件,点击右侧+号

在下面设置API端点的表单中填写端点名称,并选择上一步创的那个工作流配置进去

最下面的那个参数需要重点关注一下,这个参数的格式一般是json格式,参考下面的参数配置进去:

{"name":"poem","description":"模仿输入的作者风格写诗歌","inputSchema":{"title":"poem","type":"object","properties":{"author":{"title":"author","description":"作者","type":"string"}},"required":["author"]}
}

参数说明:

  • Properties : 列出应用接收的所有参数及其类型,本示例只有一个参数,author;

  • Description: 用于向MCP Client说明此应用的主要功能,帮助系统在需要的时候自动发现并调用;

  • Required : 声明调用应用时必须提供的参数。对于聊天类应用(Agent / ChatFlow),参数通常是必须的;

将上面的参数配置到json输入框中保存,保存配置后,会自动生成Endpoint URL,我们在后续使用的就是GET 后面的那一串URL地址。

3.5 配置MCP 发现工具

在前面的步骤中安装了插件MCP Server,并关联了工作流能力,且暴露了端点,相当于是一个公共服务能力,如何在客户端中发现这个MCP Server并且正确调用呢,这就需要MCP Client的应用中集成mcp的服务发现能力,在dify的工具市场中,需要安装一个MCP SSE的服务发现工具,主要是配置授权相关信息,如下点击安装:

安装完成后,在下面的工具一栏中可以看到自己安装的工具列表

将下面的授权配置拷贝进去

如下,拷贝进去之后点击保存

保存成功,出现右侧的已授权效果说明配置成功

3.6 创建智能体应用

该应用可以理解为客户端应用,将利用MCP的服务发现工具调用上面发布的MCP Server,参考下面的步骤。

3.6.1 创建智能体

新建一个智能体类型的应用

3.6.2 配置提示词

在输入编排中添加如下提示词

调用mcp工具回答用户问题,先获取工具列表,再选中可用的工具,最后返回工具结果中的诗歌原文以及解析内容

3.6.3 引用 mcp服务发现工具

在编排界面下面的工具选项中,选择上一步配置的发现和调用MCP的工具,将其中的两项能力添加进去

3.6.4 效果测试

当输入作者的名字时,可以看到大模型会先走本地的工具调用,如果没有其他问题的话,将会看到如下类似的效果

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

基于Dify开发的MCP Server并暴露出来端点之后,除了Dify自身的应用可以使用之外,也可以在其他的客户端集成使用,接下来在其他客户端集成使用。

4.1 魔塔平台集成MCP

在dify上面开发的自定义mcp服务,当sse地址暴露出来之后,就可以在其他的客户端进行集成和使用了,这里我们在魔塔平台做一下测试,魔塔入口:ModelScope 魔搭社区

进入魔搭mcp测试页面:MCP Playground

在弹出的输入框中填写名称,配置前面dify中生成的sse地址

点击保存配置

配置完成后,在左侧的实验场中就会为你的这个MCP服务生成一些测试用例

在实验场提供的模拟测试用例中,比如随机选择第一个模仿李白的风格写一首诗,通过输出结果可以看到,MCP Server的工具已经被触发调用了

通过上面的操作过程,可以看到mcp-server插件提供了一种非常便捷的方式,能够将我们自己在dify中构建的应用转化为MCP Server,提供给内外部各种客户端调用。这无疑是大大增强了 Dify应用的通用性和集成能力。

尽管目前配置 APP Input Schema的JSON格式还需要一些手动操作,略显繁琐,但是相比从0开始搭建服务接口,已经简化了很多。

4.2 VSCode集成MCP服务

在VSCode中安装Cline插件,然后在Cline的MCP配置中参照下面的方式进行配置

提一个问题,模拟李白的风格写一首诗

可以看到效果与魔塔上面的类似,先调用了在Cline中配置的MCP,最后生成了一首诗歌,其他的客户端工具也是类似,有兴趣的同学可以继续尝试。

五、写在文末

本文通过案例操作,详细介绍了基于Dify配置MCP Server,并发布使用的详细过程,通过这种方式,可以让应用开发者更好更专注的面向业务开发,而只需要做简单的集成即可完成对MCP的服务能力的使用,本篇到此结束,感谢观看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90240.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

django filter按两个属性 去重

在Django中,如果你想基于两个属性去重,可以使用distinct()方法并结合annotate()和Count()来实现。这种方法通常用在查询集中,尤其是在你需要统计基于某些字段的唯一值时。 示例 假设你有一个Person模型,它有两个字段:f…

PHP高级进阶:突破编程边界,开启技术新征程

目录一、PHP 高级函数的深度剖析1.1 回调函数的高级应用1.2 递归函数的优化技巧二、面向对象编程的深化2.1 抽象类与接口的实际运用2.2 设计模式在 PHP 中的实现三、PHP 与数据库交互的高级技术3.1 数据库连接池的使用3.2 事务处理与数据一致性四、性能优化与调试4.1 代码性能分…

cx_Freeze python 打包详解

优点:有时比 PyInstaller 更好处理外部 .pyd做法:安装 cx_Freezeshpip install cx_Freeze新建 setup.py:pythonfrom cx_Freeze import setup, Executablebuild_exe_options {"packages": ["apscheduler.triggers.interval&qu…

Java字符串不可变性:从安全哲学到性能艺术的完美平衡

目录 引言 一、什么是String的不可变性? 二、解剖String的“防弹衣”:底层实现机制 1. final的三重防御体系 2. 方法实现的精妙设计 3. 构造函数的防御性编程 三、为什么String必须不可变?设计哲学的五大支柱 1. 字符串常量池&#x…

多服务器批量发布软件

当需要同时发布程序到多个服务器的时候,常规是通过jekins了但是喜欢了手动档,直接写了个简单批量发布软件,程序编译发布后,直接加载配置,选择对应的服务器,直接电机发布即可,基本可以媲美jekins…

基于.Net Core开源的库存订单管理系统

今天给大家推荐一套开源的库存订单管理系统。 项目简介 该项目是基于Asp.Net Core Mvc开发的库存订单管理系统,主要实现模块有仓库、产品、供应商、客户、采购订单、销售订单、发货、收货等等,该项目是单体架构,技术栈也不是最新的&#xf…

Django学习之旅--第13课:Django模型关系进阶与查询优化实战

在Django开发中,模型关系设计与查询性能直接决定了系统的扩展性和效率。当业务场景从简单的数据存储升级为复杂的关联分析(如订单统计、用户行为分析)时,基础的模型关系和查询方式已无法满足需求。本节课将深入讲解模型关系的高级…

简单理解现代Web应用架构:从简单到企业级

在开发Web应用程序时,理解如何构建一个既安全又高效的系统至关重要。本文将通过介绍从简单的三层架构到复杂的企业级架构的演变过程,帮助您更好地理解这些概念。1. 基础架构:React Node.js MySQL前端(React)&#xf…

修改 Lucide-React 图标样式的方法

修改 Lucide-React 图标样式的方法 使用 lucide-react 时&#xff0c;你可以通过多种方式修改图标的样式。以下是几种常用的方法&#xff1a; 1. 通过 className 属性 import { Home } from lucide-react;function MyComponent() {return <Home className"text-blue-50…

神经架构搜索革命:从动态搜索到高性能LLM的蜕变之路

本文将揭示如何通过神经架构搜索技术&#xff08;NAS&#xff09;自动发现最优网络结构&#xff0c;并将搜索结果转化为新一代高性能大型语言模型的核心技术。我们的实验证明&#xff0c;该方法在同等计算资源下可实现80%的性能飞跃&#xff01;第一部分&#xff1a;神经架构搜…

【LeetCode 热题 100】78. 子集——(解法三)位运算

Problem: 78. 子集 题目&#xff1a;给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1…

XCKU035‑1SFVA784C Xilinx FPGA KintexUltraScale AMD

XCKU035‑1SFVA784C 属于 Xilinx Kintex UltraScale 系列&#xff0c;基于领先的 20 nm FinFET 技术制程&#xff0c;旨在为中高端应用提供卓越的性能与功耗平衡。该器件采用 784‑ball Fine‑pitch BGA&#xff08;SFVA784&#xff09;封装&#xff0c;速度等级‑1&#xff0…

Encore.ts:下一代高性能 TypeScript 后端框架的崛起

在 Node.js 生态系统中&#xff0c;后端框架的选择直接影响 API 的性能、开发体验和可维护性。近年来&#xff0c;Elysia.js、Hono、Fastify 等框架凭借各自的优化策略崭露头角&#xff0c;而 Encore.ts 则凭借 Rust TypeScript 混合架构&#xff0c;在性能上实现了质的飞跃。…

【IP地址】IP归属地查询驱动企业实时战略调整

动态市场感知与资源调度优化​ IP归属地的实时分析为企业提供了市场需求的动态变化图。 基于实时数据处理框架&#xff0c;企业可将IP归属地数据与用户访问量、转化率等指标关联计算&#xff0c;生成区域市场活跃度热力图。 当某区域IP访问量在1小时内激增300%且停留时长提升至…

[Bug | Cursor] import error: No module named ‘data‘

import error: No module named ‘data’ Folder Structure root folder data folder dataloader.py src folder train.py <- where we try to import the dataloader.pyFailed Script ROOT_DIR Path(__file__).parent.parent os.chdir(ROOT_DIR) print(f"Using root…

#Linux权限管理:从“Permission denied“到系统安全大师

引入 Linux 作为多用户系统&#xff0c;权限是系统安全的第一道防线。不合理的权限设置可能导致&#xff1a; 敏感文件泄露&#xff08;如数据库密码被读取&#xff09;误删核心数据&#xff08;目录写权限失控&#xff09;权限漏洞被利用&#xff08;如 SUID 提权攻击&#…

电脑重置一次对电脑伤害大吗

在日常使用电脑的过程中&#xff0c;很多用户或多或少都遇到过系统卡顿、软件冲突、病毒入侵等问题。当电脑变得“越来越慢”或频繁出错时&#xff0c;一些用户会考虑“重置电脑”&#xff0c;也就是将电脑恢复到出厂设置。但不少人心中也有疑问&#xff1a;重置电脑一次&#…

CSP-J系列【2024】P11229 [CSP-J 2024] 小木棍题解

题目描述小 S 喜欢收集小木棍。在收集了 n 根长度相等的小木棍之后&#xff0c;他闲来无事&#xff0c;便用它们拼起了数字。用小木棍拼每种数字的方法如下图所示。现在小 S 希望拼出一个正整数&#xff0c;满足如下条件&#xff1a;拼出这个数恰好使用 n 根小木棍&#xff1b;…

C# 继承 虚方法

继承 虚方法 &#xff08;重写&#xff09; virtual 虚方法的关键字 override 重写的关键字 练习&#xff1a; 继承 继承&#xff1a;很多类有相似的数据 相同的属性 相同的方法 也有不同的 这个时候就可以使用继承 让多个类去继承自某个具有相同数据的基类(父类) 这…

Java 堆(优先级队列)

文章目录优先级队列模拟实现优先级队列向下调整建堆向上调整建堆堆的删除priorityQueue构造方法大根堆和小根堆的向上调整比较方法扩容面试题堆排序优先级队列 priorityqueue&#xff1a;底层是一颗完全二叉树 小根堆&#xff1a;根比左右孩子都小大根堆&#xff1a;根比左右…