透过 Dify 集成看 MCP 的优点和局限

最近 MCP 火的一塌糊涂,似乎不拥抱就赶不上时代一样,然而我做了个服务测了下,似乎宣传>应用…

TL;DR

文章有点长,先说结论:

  • MCP 三个关键词:自动发现、标准化以及解耦合
  • MCP 是 For Agent 的产物,非 Agent 下似乎没什么用处,比如在工作流中使用
  • MCP 在应用上类似 Dify/Coze 等的插件,然而成熟度还差一些
  • 或许 MCP 更适合 Cursor/VS Code/Claude Desktop 等本地 IDE 集成的 Agent

有了 MCP 能干什么?

最近公司培训,看到同事用 Cursor 借助 MCP 协议使用 Agent 调用第三方工具做 Red Teaming,觉得好玩于是测试了下(实际上只是看了下代码测了下流程,Cursor 的 Agent 模式是付费项目,我并不想花 20 刀就为“玩一下”)。

工作原理其实很简单:

img

似乎任何一个 Agent 应用都能干类似的事,MCP 并没有太大价值?

那我们再换一个问题,这次的问题不再是一个查询类问题,而是需要入参才能执行的一个任务。

img

这时候,你会发现如果要实现这个需求,就需要让 Agent 能知道其可用的工具,以及这些工具如何去使用。以往,我们需要编写一系列工具,在应用侧告诉大模型有哪些工具以及如何去使用,大模型再通过 function call 调用工具获取结果。

而在 MCP 架构下,应用可以自动发现并告诉大模型有哪些工具。

为了实现这个功能,MCP 定义了两个组件:

  • MCP Server:明面上是服务端,然而更像一个功能汇聚服务…在里面去定义有哪些工具(函数)可以使用,以及参数是什么
  • MCP Client:和 MCP Server 交互的工具,在上图中内嵌在了 IDE 中

以上面的场景为例,在 Cursor 中可以通过 JSON 添加 MCP Server 配置,内容如下:

{
  "mcpServers": {
    "EnkryptAI-MCP": {
      "command": "uv",
      "args": [
        "--directory",
        "PATH/TO/enkryptai-mcp-server",
        "run",
        "src/mcp_server.py"
      ],
      "env": {
        "ENKRYPTAI_API_KEY": "YOUR ENKRYPTAI API KEY"
      }
    }
  }
}

可以看到,MCP Server 其实就是用 uv(一个 Python 包管理器) run 了一个本地的 python 脚本,而这个脚本的作用就是调用其他的云端 API 服务…

细看的话,和其他代码不一样的地方在于,他调用了 mcp 的库,把函数封注册成工具,这样 Client 来调用时就能自动获取到支持的功能列表

另外代码中也对函数的输入和输出做了很多标准化的描述。有了这样的规范,可以做到工具只开发一套,兼容 MCP 的应用都可以直接使用,而无需重复造轮子。这也是 MCP 的第二个价值,标准化

img

至此,MCP 101 已经过完一半,总结两个关键词:**自动发现;标准化。**Dify 下怎么对接 MCP 服务?在上面的示例中,实际上 MCP Server 是由 MCP Client(Cursor) 来本地启动的,这要求 Client 和 Server 在同一台主机上(两者通过 stdio 通信),为了支持跨主机的通信,MCP 有另一个通信模式叫 SSE(Server-Sent Events)。
SSE 底层跑的还是 HTTP,只是上层有自己的通信规范,可以理解为造了个标准的 API。
再回到标题,如果要让 Dify 对接 MCP Server,其实只需要完成下面两件事:在外部服务器部署支持 SSE 的 MCP Server在 Dify 上安装支持 SSE 的 MCP Client(插件)
img
MCP Server 配置及启动我参照一个 Weather 的 MCP SSE 项目,用 Github Copilot 将我司的 AI Security API 改成了 SSE 版本的 MCP Server,启动:uv run src/mcp_server.pyINFO: Started server process [4093949]INFO: Waiting for application startup.INFO: Application startup complete.INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)看到状态为 Running 且在监听端口之后,就可以在 Dify 中进行测试啦。

插件安装及配置

在 Dify 1.x 版本下,插件商店搜索 MCP,安装下列插件:

img

配置 MCP Server,参考配置如下,指一下 MCP Server 的 URL 即可:
{ "PANW-AI-Security": { "url": "http://10.10.50.144:8080/sse" }}配置截图:

img

调用示例:

img

从使用上看 MCP 和 Dify 的插件有些类似,但稍微简单点,比如 Agent 可以自动去获取有哪些工具可用,在工具调用失败时还会自动检查当前可用工具有哪些,然后再次进行尝试。MCP 和 Dify Plugin 的对比在写 SSE Server 的时候,发现有些理念和 Dify Plugin 有点类似,但又有些区别,分别用图片和文字描述下。**从功能上来说,最终目的是一样的,让大模型调用外部服务;**从架构上来说,如果要让大模型调用外部组件,插件可以一跳直达外部服务,而使用 MCP 则需要外挂一个 MCP Server 做中转。
img如果再复杂一点,假如让 Agent 调用多个服务,这时候你会发现两个很像,只是 MCP 把能力集中在了外部,而在 Dify 下能力集中在插件中。这或许这就是 MCP 的第三个价值:与应用解耦。img早期 Dify 的插件内置在发行版中,如果要更新、新增插件需要改动项目文件。Dify 1.0 之后可以把插件“外置”,通过 dify-plugin-daemon 来管理和运行,这实际上是一种解耦,只不过这些插件只适用于 Dify 生态,其他平台不能直接拿来使用。 如果使用 MCP 架构,理论上来说一套 MCP Server 可以给多个 AI 平台使用,没有太多的适配成本。另外如果要对服务进行更新,只需要更改 MCP Server 侧的代码即可,应用本身可以不用动。
说完了优点,再说说 MCP “弱”的地方。1. 无处安放的 Key/Token你会发现,在第一个 Cursor 的示例中,调用外部服务的 API Key 直接写在了配置文件的环境变量中,总感觉这类敏感信息需要有个安全的地方存放。在做第二个 Dify SSE 对接的时候,Key 需要直接放在运行代码的地方,也就是 MCP Server 所在位置,查了很多文档,大家要么直接写在环境变量里,要么直接写在代码里…(说到这里,未来应该会有一些 MCP Manager 方案出来做这些事)还有一种形式是放在 Client 侧,以 Header 或者 HTTP 请求参数的形式传递给 MCP Server,然而这部分并没有规范。另外,Client 侧如何妥善保存密钥也是个问题,无论 VS Code/Cursor 还是 Dify 的社区 MCP 插件,都是明文直接放在 JSON 中…相比之下,Dify Plugin 的设计就很好,变量属性为 secret-input 时都会隐蔽保存。2. 认证怎么做?官方的一些示例中,会在 Server 设置一个 Key(如上面所说,无处安放),然后 Client 通过 Header 等形式传输同样的 Key 以达到认证的目的,这未免显得有点粗糙(官方有很多和认证相关的 issue,应该会补齐这部分功能)。而在 Dify 下 Plugin 和 Dify 就是一体的,不需要考虑组件间的信任。3. 安全隐患因架构决定 MCP Server 侧的东西可以是动态的,如果有居心叵测之人修改/增加了 MCP Server 中的函数,模型又自动调用了这些模块,风险自不用我说。(已经有安全团队 Demo 通过 MCP tool 的 description、隐藏的提示词、虚假报错信息等诱导大模型执行特定操作…)相比之下 Dify 的 Plugin 好歹会有官方验证,升级也需要用户干预,虽然不那么自动,但风险相对更小一些。(魔搭社区、smithery 等很多平台已经有成型的 MCP 商店了,有些还集成了安全扫描功能,一定程度上可以解决来源和安全问题)4. MCP Server 管理及运行在当前的实现下,通常一个 MCP Server 对应一个服务商的多个服务,如果一个 Agent 需要使用 20 个服务商的服务,那需要配置 20 个 MCP Server,不同 MCP Server 可能会有不同的依赖环境,不同的配置,不同的认证方式,这些还都是通过 json 文件去定义…不确定官方会不会有一个集中式的管理、运行和接入服务,反正社区是有人在做了。5. 在 Dify 下,仅能用于 Agent,不能应用于工作流。虽说 Agent 是未来 AGI 的方向,但实际在应用时,工作流也有其优势,并不是所有场景都适合用 Agent 实现,而目前在工作流下 MCP 并没什么用。引用一个 Anthropic 《Building effective agents》中的 Checklist:img你会发现日常 AI 应用中,很多时候并不需要用到 Agent,用 Agent 效果不一定更好,但 Token 肯定消耗更多(老黄狂喜):RAG 应用,做个知识检索,贴出结果和参考链接就 OK 了联网检索,工作流+工具+LLM 也能做要多功能,直接做成多个机器人就行了,不同机器人走不同的工作流,不需要 Agent 来判断用户想干什么再去选择不同的工具,用户自己会选…再看目前最亮眼的 Agent 应用,就是类似 Manus 一样的代码开发系统,满足上面的各种说明:节省(程序员)成本;足够复杂,需要自动试错和纠错;只要开放接口,Agent 可以自己去运行慢慢调试…
说到这里,似乎感觉 MCP 就像是 Anthropic 为了自家代码开发 Agent 打造的一样… 开发类 Agent 就是要调用很多工具,而标准化这些工具的调用,很能受益这类 Agent。技术上来说,Dify 等平台其实可以做一个专用于 Workflow 的 MCP Client 插件,自动获取 MCP Server 的参数列表,然后将其变成表单供应用使用,不知道未来会不会有这样的东西出现。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

<think>嗯,用户想了解DifyMCP在IT领域的比较或信息。首先,我需要明确DifyMCP各自是什么。根据提供的引用,Dify似乎是一个工作流编排平台,而MCP是Model Context Protocol,可能是一种协议或框架。用户可能希望知道它们的功能、应用场景以及如何协同工作。 首先,我需要整理引用中的信息。引用1提到Dify Workflows MCP Server是一个TypeScript实现的MCP服务器,将Dify工作流作为工具暴露出来,供其他系统调用。这说明DifyMCP集成Dify工作流通过MCP被外部使用。引用2则说Dify深度集成MCP用于灾害应急响应,涉及地理数据处理、分布式部署,并与本地管理部门合作验证接口兼容性、网络降级方案多语言告警。这说明它们的结合应用在灾害响应中,处理复杂的数据系统需求。 接下来,我需要区分DifyMCP各自的角色。Dify作为工作流平台,专注于流程编排自动化,而MCP可能是提供模型上下文管理的协议,帮助不同系统或工具之间的通信数据交换。用户可能想知道它们各自的定义、功能、应用场景以及如何比较或协同工作。 用户的问题可能源于需要选择技术栈或了解两者在项目中的角色。比如,他们是否竞争关系,还是互补的。根据引用,Dify使用MCP来暴露工作流,说明MCP作为协议,Dify作为应用平台,两者协同工作。因此比较的重点应放在它们的不同角色集成方式。 需要进一步确认MCP的全称是否Model Context Protocol,是否还有其他含义,但根据引用,应该就是这个。然后,需要解释Dify作为工作流工具,MCP作为协议,它们如何互补。例如,Dify处理工作流设计,MCP处理模型上下文的管理,使得工作流可以跨系统调用。 用户可能需要知道它们的核心功能差异、适用场景、技术架构等。在回答中,应分点比较,并给出应用实例,如引用中的灾害应急响应案例,说明它们如何共同解决实际问题。 此外,用户可能还想了解实际应用中的技术挑战,比如接口兼容性、多语言支持、极端网络处理等,这些在引用2中提到的验证点,可以作为集成时的考虑因素。 总结回答结构:先分别介绍DifyMCP,然后比较它们的定位、核心功能、应用场景、技术特点,最后给出应用案例集成注意事项。确保使用正确的中文术语,并引用提供的资料来支持观点。</think>### Dify vs MCP 技术背景解析 #### 1. **Dify 核心定位** Dify 是一个专注于**工作流编排**的低代码/无代码平台,支持将复杂业务流程(如数据处理、AI模型调用、服务集成)通过可视化方式配置为可复用的工作流模块。其技术特点包括: - 支持多模态工具集成(如地理信息系统、AI模型接口) - 提供分布式部署能力,适应高并发场景 - 内置维吾尔语/汉语双语支持等本地化特性 典型应用案例:洪水演进模型优化中,Dify 实现了毫米级地理数据与气象预测模型的动态耦合[^2]。 #### 2. **MCP 协议本质** Model Context Protocol (MCP) 是**模型上下文管理协议**,定义了一套标准化的接口规范: ```typescript // 示例:MCP服务暴露工作流的接口定义 interface WorkflowService { executeWorkflow(workflowId: string, context: ModelContext): Promise<ExecutionResult>; } ``` 核心价值在于实现: - 异构系统的工具化封装 - 模型运行上下文(输入/输出/状态)的标准化传递 - 跨语言调用支持(如 TypeScript 实现的 MCP 服务器[^1]) #### 3. **协同关系对比** | 维度 | Dify | MCP | |------------|-------------------------------|---------------------| | **定位** | 工作流执行引擎 | 协议标准/通信框架 | | **技术层级**| 应用层 | 协议层 | | **核心输出**| 可运行的工作流实例 | 标准化API接口 | | **典型部署**| Kubernetes集群 | 微服务中间件 | #### 4. **集成实践要点** 在灾害应急系统案例中,二者协同需关注: 1. **数据接口验证**:Dify工作流输入输出需满足MCP定义的`ModelContext`结构[^2] 2. **网络容错设计**:MCP服务器需实现断点续传降级熔断机制 3. **多语言支持**:双语告警需同时兼容Dify工作流模板MCP协议扩展字段
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值