dify-mcp-client
MCP 客户端作为一个代理策略插件。Dify 不是 MCP 服务器,而是 MCP 主机。
3dify-project
README
dify-mcp-client
MCP Client
作为 Agent 策略插件。
[!IMPORTANT] Dify 不是
MCP Server
而是MCP Host
。
工作原理
每个 MCP client
(ReAct Agent) 节点都可以连接 MCP servers
。
Tool
、Resource
、Prompt
列表被转换为 Dify 工具。- 您选择的 LLM 可以看到它们的
name
、description
、argument type
。 - LLM 基于 ReAct 循环(Reason → Act → Observe)调用工具。
[!NOTE] 此存储库中的大多数代码包含以下文件。
Dify 官方插件 / Agent 策略
https://github.com/langgenius/dify-official-plugins/tree/main/agent-strategies/cot_agent
✅ 我做了什么
- 复制
ReAct.py
并将文件重命名为mcpReAct.py
- 通过编辑
mcpReAct.yaml
和class mcpReActParams()
添加config_json
GUI 输入字段
在 mcpReAct.py 中,我添加了
- 用于 MCP 的 12 个新函数
- 用于初始化
AsyncExitStack
和event loop
的__init__()
_handle_invoke_action()
中的一些代码用于 MCP_invoke()
中的 MCP 设置和清理- 添加 SSE MCP 客户端 (v0.0.2)
- 支持多个 SSE 服务器 (v0.0.3)
[!IMPORTANT] ReAct while 循环保持不变
⚠️ 注意事项和限制
[!CAUTION] 默认情况下,此插件不实现人机回路机制,因此仅连接可靠的 mcp server。<br> 为避免这种情况,请将
max itereations
(默认值:3
)减少到1
,并在 Chatflow 中重复使用此 Agent 节点。<br> 但是,agent 内存会在 Workflow 结束时重置。<br> 使用Conversaton Variable
保存历史记录并将其传递给 QUERY。<br> 不要忘记在 INSTRUCTION 中添加诸如 "调用工具时请求用户许可" 之类的短语。
[!WARNING]
- Tools 字段不应留空。 因此选择 Dify 工具,例如“当前时间”。
如何使用此插件
🛜从 GitHub 安装插件
- 输入以下 GitHub 存储库名称
https://github.com/3dify-project/dify-mcp-client/
- Dify > PLUGINS > + Install plugin > INSTALL FROM > GitHub
⬇️从 .difypkg 文件安装插件
- 转到 Releases https://github.com/3dify-project/dify-mcp-client/releases
- 选择合适的
.difypkg
版本 - Dify > PLUGINS > + Install plugin > INSTALL FROM > Local Package File
如何处理安装插件时出现的错误?
问题:如果遇到错误消息:plugin verification has been enabled, and the plugin you want to install has a bad signature
,如何处理该问题?<br>
解决方案:将以下行添加到 /docker/.env
配置文件的末尾:
FORCE_VERIFYING_SIGNATURE=false
运行以下命令以重新启动 Dify 服务:
cd docker
docker compose down
docker compose up -d
添加此字段后,Dify 平台将允许安装所有未在 Dify Marketplace 中列出(因此未经验证)的插件。
[!TIP] Marketplace 需要审批。 如果星星⭐达到 100,我会考虑为它们制作 PR。
源代码插件部署
步骤如下。 how-to-develop-and-deploy-plugin
此插件在哪里显示?
- 安装需要几分钟
- 安装完成后,您可以在任何工作流程中将其用作 Agent 节点
- 选择 "mcpReAct" 策略(否则没有 MCP)
配置
MCP Agent 插件节点需要像这样的 config_json 来命令或 URL 以连接 MCP 服务器
{
"mcpServers":{
"name_of_server1":{
"url": "http://host.docker.internal:8080/sse"
},
"name_of_server2":{
"url": "http://host.docker.internal:8008/sse"
}
}
}
[!WARNING]
- 每个服务器的端口号应该不同,例如 8080、8008 等。
Chatflow 示例
我提供此 Dify ChatFlow 作为 .yml 用于测试 dify mcp 插件。
https://github.com/3dify-project/dify-mcp-client/tree/main/test/chatflow
下载 DSL(yml) 文件后,将其导入 Dify,您可以使用 "Everything MCP server" 测试 MCP
https://github.com/modelcontextprotocol/servers/tree/main/src/everything
如何将 stdio MCP 服务器转换为 SSE MCP 服务器
option1️⃣: 编辑 MCP 服务器的代码
如果是 fastMCP 服务器,请像这样更改
if __name__ == "__main__":
- mcp.run(transport="stdio")
+ mcp.run(transport="sse")
option2️⃣: 通过 mcp-proxy
\mcp-proxy>uv venv -p 3.12
.venv\Scripts\activate
uv tool install mcp-proxy
检查 Node.js 是否已安装以及 npx(.cmd) 路径
(Mac/Linux)
which npx
(Windows)
where npx
C:\Program Files\nodejs\npx
C:\Program Files\nodejs\npx.cmd
C:\Users\USER_NAME\AppData\Roaming\npm\npx
C:\Users\USER_NAME\AppData\Roaming\npm\npx.cmd
如果 claude_desktop_config.json 遵循以下模式,
{
"mcpServers": {
"SERVER_NAME": {
"command": CMD_NAME_OR_PATH
"args": {VALUE1, VALUE2}
}
}
}
通过此命令唤醒 stdio MCP 服务器
mcp-proxy --sse-port=8080 --pass-environment -- CMD_NAME_OR_PATH --arg1 VALUE1 --arg2 VALUE2 ...
如果您的操作系统是 Windows,请使用 npx.cmd 代替 npx。 以下是将 stdio "everything MCP server" 通过 mcp-proxy 转换为 SSE 的示例命令。
mcp-proxy --sse-port=8080 --pass-environment -- C:\Program Files\nodejs\npx.cmd --arg1 -y --arg2 @modelcontextprotocol/server-everything
同样,在另一个命令行上(如果您使用 v0.0.3 的示例 Chatflow)
pip install mcp-simple-arxiv
mcp-proxy --sse-port=8008 --pass-environment -- C:\Users\USER_NAME\AppData\Local\Programs\Python\Python310\python.exe -m -mcp_simple_arxiv
[!Warning] mcp-proxy 的附加参数。 使用时要小心。 可能存在安全风险,例如 XSS、CSRF。(默认:不允许 CORS)
--allow-origin='*'
以下是 mcp-proxy 设置日志。
(mcp_proxy) C:\User\USER_NAME\mcp-proxy>mcp-proxy --sse-port=8080 --pass-environment -- C:\Program Files\nodejs\npx.cmd --arg1 -y --arg2 @modelcontextprotocol/server-everything
DEBUG:root:Starting stdio client and SSE server
DEBUG:asyncio:Using proactor: IocpProactor
DEBUG:mcp.server.lowlevel.server:Initializing server 'example-servers/everything'
DEBUG:mcp.server.sse:SseServerTransport initialized with endpoint: /messages/
INFO: Started server process [53104]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
🔨 如何开发和部署插件
通用插件开发指南
https://github.com/3dify-project/dify-mcp-client/blob/main/GUIDE.md
Dify 插件 SDK 守护程序
在我的例子中 (Windows 11),需要下载 dify-plugin-windows-amd64.exe (v0.0.3)<br> 在此处选择与您的操作系统兼容的版本:<br> https://github.com/langgenius/dify-plugin-daemon/releases <br> 将其重命名为 dify.exe
参考
https://docs.dify.ai/plugins/quick-start/develop-plugins/initialize-development-tools
[!NOTE] 如果您拉取或下载此存储库的代码,则可以跳过此阶段
dify plugin init
初始设置如下
安装 python 模块
Python3.12+ 兼容。 Dify 插件官方安装指南使用 pip,但我使用了 uv。
uv init --python=python3.12
.venv\Scripts\activate
安装用于插件开发的 python 模块
uv add werkzeug==3.0.3
uv add flask
uv add dify_plugin
复制 env.example 并将其重命名为 .env
我将 REMOTE_INSTALL_HOST
从 debug.dify.ai
更改为 localhost
(Docker Compose 环境)
单击 bug 图标按钮以查看这些信息
更改目录
cd mcp_client
执行一次
pip install -r requirements.txt
激活 Dify 插件
python -m main
(ctrl+C 停止)
[!TIP] .env 的 REMOTE_INSTALL_KEY 经常更改。 如果您遇到类似
handshake failed, invalid key
的错误消息,请更新它。
打包成 .difypkg
./mcp_client
是我的默认根名称
dify plugin package ./ROOT_OF_YOUR_PROJECT
开发者有用的 GitHub 存储库
Dify 插件 SDK
https://github.com/langgenius/dify-plugin-sdks
MCP Python SDK
https://github.com/modelcontextprotocol/python-sdk <br>
[!TIP] 以下 MCP 客户端示例特别有用<br> https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py<br>
[!NOTE] Dify 插件具有
requirements.txt
,它会自动安装 python 模块。<br> 我在其中包含mcp
,因此您无需单独下载 MCP SDK。
推荐服务器
Crypto Price & Market Analysis MCP Server
一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。
MCP PubMed Search
用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。
mixpanel
连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

Nefino MCP Server
为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。
Vectorize
将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。
Mathematica Documentation MCP server
一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。
kb-mcp-server
一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。
Research MCP Server
这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

Cryo MCP Server
一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。