在大型语言模型(LLM)应用开发中,如何让模型安全、高效地与外部工具和数据源交互,是一个核心挑战。模型上下文协议(Model Context Protocol, MCP)正为此而生,它旨在为 LLM 与外部世界之间建立一套标准的通信规范。本文将首先解析 MCP 的核心原理,然后深入探讨在开源 LLM 应用开发平台 Dify 中,如何利用其丰富的 MCP 插件生态构建强大的 AI 应用。
理解基石:MCP 与 FastMCP
在深入 Dify 插件之前,我们首先需要理解 MCP 是什么,以及 FastMCP 如何简化了它的实现。
MCP 服务实现原理
MCP 是一种基于客户端-服务器架构的协议,它通过标准化的消息格式,让大语言模型能够发现并调用外部工具。其核心架构包含三部分:
- MCP Host: 用户的 AI 应用,如
Claude Desktop或Cursor IDE,负责接收用户指令并协调 LLM。 - MCP Client: 内嵌于
Host中的中间件,负责与MCP Server建立连接和通信。 - MCP Server: 提供具体功能的轻量级服务,它连接着数据库、API 等真实世界的数据和工具。
通信层面,MCP 协议基于 JSON-RPC 2.0 封装消息,并支持多种传输模式,如用于本地进程通信的 Stdio,以及用于远程通信的 HTTP with SSE 和 Streamable HTTP。目前,Streamable HTTP 因其灵活性和对现代网络协议的良好兼容性,成为推荐的主流传输方式。
功能上,MCP 服务器主要提供三类能力:
- 工具 (Tools): 可被调用的函数,如文件操作或 API 请求。
- 资源 (Resources): 类文件形式的数据,如数据库记录,通过 URI 标识。
- 提示 (Prompts): 预设的交互模板,用于规范 LLM 的输出。
FastMCP:Pythonic 的 MCP 框架
FastMCP 是一个高效的 MCP 协议 Python 实现框架。它将底层的 JSON-RPC 细节、Schema 构造和通信管理进行了高度抽象和封装。开发者无需关心复杂的协议细节,只需通过简单的 Python 装饰器,就能快速构建 MCP 服务。

例如,使用 @mcp.tool 装饰器可以轻松定义一个工具:
@mcp.tool
def multiply(a: float, b: float) -> float:
"""This tool multiplies two numbers."""
return a * b
FastMCP 还支持服务组合、中间件等高级特性,极大地简化了 AI 工具链的开发。
Dify 中的 MCP 插件生态
Dify 是一个开源的 LLM 应用开发平台,它深度集成了 MCP 协议,提供了一系列插件来连接和构建 MCP 服务。这些插件大致可以分为服务器端、客户端和 Agent 策略三类。

| 插件 | 介绍 | 类型 | GitHub 仓库 |
|---|---|---|---|
| Agent 策略(支持 MCP 工具) | 提供 Function Calling 和 ReAct 策略,支持 MCP 工具发现和调用。 |
基础 | dify-plugin-agent-mcp_sse |
| MCP SSE / StreamableHTTP | 作为 MCP 客户端,通过 HTTP with SSE 或 Streamable HTTP 发现和调用工具。 |
基础 | – |
| MCP Agent 策略 | 仅支持 Function Calling 策略的 Agent,用于调用 MCP 工具。 |
基础 | – |
| MCP server | 将 Dify 的工作流或对话流发布为一个 MCP 服务器。 |
基础 | dify-plugin-mcp_server |
| MCP Compatible Dify Tools | 将 Dify 内置工具的 API 转换为 MCP 兼容的 API。 |
基础 | dify-plugin-mcp_compat_dify_tools |
| 使用时配置的 MCP 工具 | 一个 MCP 客户端,其服务地址在使用时动态配置。 |
基础 | – |
| Nacos MCP | 从 Nacos 注册中心发现并调用 MCP 服务。 |
应用 | nacos-dify-plugins |
| AntV 可视化图表 | 基于 AntV 的图表生成 MCP 服务。 |
应用 | mcp-server-chart |
| HelloDB | 数据库查询助手,将数据库能力封装为 MCP 服务。 |
应用 | HelloDB Wiki |
| DataFocus | 提供幻觉可控的 Text2SQL 和 ChatBI 插件。 |
应用 | – |
核心插件使用指南
插件类型一:将 Dify 应用发布为 MCP 服务
这类插件的目标是将你在 Dify 中创建好的能力(如工作流、对话流或单个工具)暴露为标准的 MCP 服务,供其他 MCP 客户端调用。
- MCP server: 这个插件可以将一个完整的
Dify工作流或对话流封装成一个MCP服务器。配置端点后,外部应用就能像调用一个原生MCP服务一样,与你的Dify应用交互。

- MCP Compatible Dify Tools: 如果你不想暴露整个工作流,只想将
Dify的某个原生工具(如获取当前时间)发布为MCP服务,这个插件是最佳选择。

插件类型二:在 Dify 中调用外部 MCP 服务
这类插件扮演 MCP 客户端的角色,让你的 Dify 应用能够调用外部的 MCP 服务。
- MCP SSE / StreamableHTTP: 这是一个标准的
MCP客户端工具。你只需提供MCP服务的地址,它就能自动发现该服务提供的所有工具,并在Dify工作流中直接调用。
- 使用时配置的 MCP 工具: 与上一个插件功能类似,但它提供了更高的灵活性,允许在每次调用时动态配置
MCP服务地址。
插件类型三:Agent 策略
Agent 是 Dify 工作流中的大脑,它决定了如何规划和执行多步任务。MCP 策略插件赋予了 Agent 调用 MCP 工具的能力。
- Agent 策略(支持 MCP 工具): 这是功能最全面的
Agent策略插件。它同时支持Function Calling和ReAct两种模式。- Function Calling: 模型直接决定调用哪个工具并执行。
- ReAct: 模型会进行“思考-行动-观察”的循环,更适合处理复杂、需要多步推理的任务。

- MCP Agent 策略: 这是一个更轻量级的
Agent策略,它仅支持Function Calling模式。如果你的任务逻辑相对简单,直接调用工具即可完成,那么这个插件是更高效的选择。
技术细节:SSE 与 Streamable HTTP 的抉择
MCP 协议支持多种传输方式,其中 HTTP with SSE 和 Streamable HTTP 是远程通信的两种主要选择。
| 比较维度 | HTTP with SSE (Server-Sent Events) | Streamable HTTP (可流式传输的普通 HTTP/Fetch) |
|---|---|---|
| 协议层 | 基于 HTTP/1.1 长连接,封装了事件帧语法。 | 标准 HTTP,依赖分块传输编码,无固定帧格式。 |
| 通信方向 | 单向(服务器 → 客户端)。 | 可双向。 |
| 浏览器 API | EventSource 对象,内置自动重连。 |
fetch() + ReadableStream,重连需自写逻辑。 |
| 帧/消息格式 | 文本格式,支持事件分组与 ID。 | 格式自由,可传 NDJSON、二进制分片等。 |
| 心跳与重连 | 内部支持。 | 需自行实现。 |
| 典型场景 | 实时通知、日志推送。 | AI token 流式返回、大文件下载。 |
| 优劣概括 | 实现简单,但仅单向/纯文本。 | 灵活高效,但需自行处理错误恢复。 |
选择建议: 除非需要兼容旧版实现,否则应优先选择 Streamable HTTP。它更灵活,能更好地利用 HTTP/2 和 HTTP/3 的多路复用优势,是现代 MCP 应用的首选传输方案。
MCP 生态系统:服务与平台
MCP 的价值在于其生态。除了 Dify,还有许多平台和服务为 MCP 提供了支持。
阿里云与 ModelScope
阿里云和其 ModelScope 社区提供了丰富的 MCP 资源,包括:
- ModeScope MCP 广场: 聚合了大量优质的
MCP资源,拓展模型的能力边界。

- ModelScope MCP 实验场: 提供了在线环境,用于探索开源模型与
MCP Server的自由组合。

- 百炼 MCP 服务: 阿里云百炼平台提供全周期的
MCP托管与市场服务。

第三方 MCP 托管平台
如果你不想自己部署和维护 MCP 服务器,可以考虑使用第三方托管平台。
| 平台名称 | 介绍 | 链接 |
|---|---|---|
| Composio | 面向开发者的专业 MCP 托管平台,提供上百种预集成工具和企业级功能。 |
https://mcp.composio.dev/ |
| Zapier MCP | 将 MCP 接入其庞大的 7000+ 应用生态,适合快速连接各类办公和企业软件。 |
https://zapier.com/mcp |
| MCP.so | 社区驱动的 MCP 聚合平台,提供大量示例和 Playground,适合学习和实验。 |
https://mcp.so/playground |
这三者定位各不相同:Composio 强调专业托管与生产级应用;Zapier MCP 侧重于连接其庞大的应用生态,实现低代码自动化;而 MCP.so 则是学习和原型验证的绝佳社区资源。





































