背景与目标
之前我们介绍过通过 MCP SSE 插件,让 Dify 能够调用外部的 MCP Server。但反过来,如果我们想把 Dify 里编排好的工作流或 Chatflow 发布出去,供 Cursor、Claude Desktop 等支持 MCP Client 的工具直接调用,该怎么做呢?
今天分享一个社区贡献的 Extension 类型插件——mcp-server。它能把任何 Dify 应用转换成符合 MCP 标准的 Server Endpoint,让外部客户端能直接访问。
它的核心能力包括:
- 暴露为 MCP 工具:将 Dify 应用抽象为单一 MCP 工具,供外部客户端(如 Cline, Windsurf 等)调用。
- 利用 Dify Endpoint 功能:创建应用 Endpoint 后获得唯一 URL,外部客户端可直接连接。
- 提供 MCP 服务:插件在 Dify 环境中自动启动 HTTP 服务,基于 HTTP 和 SSE 协议处理握手、发现及调用请求。

配置与部署
1. 安装插件
在 Dify 插件市场搜索并安装 MCP-server。安装成功后,在插件列表中即可看到它。

2. 修改环境变量
既然这个服务是对外提供的,我们需要确保它能被局域网或公网访问。这步很关键,需要修改 Dify 的 .env 文件。
你可以参考官方仓库中的 docker/.env.example 文件。重点调整以下两个参数,将默认的 localhost 替换为你的实际 IP 地址(内网或公网)。
⚠️ 注意:生产环境请务必使用安全的 IP 策略,避免直接暴露敏感接口。
原始配置示例
PLUGIN_DEBUGGING_HOST=0.0.0.0
PLUGIN_DEBUGGING_PORT=5003
EXPOSE_PLUGIN_DEBUGGING_HOST=localhost
EXPOSE_PLUGIN_DEBUGGING_PORT=5003
# If this key is changed, DIFY_INNER_API_KEY in plugin_daemon service must also be updated or agent node will fail.
PLUGIN_DIFY_INNER_API_KEY=QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1
PLUGIN_DIFY_INNER_API_URL=http://api:5001
ENDPOINT_URL_TEMPLATE=http://localhost/e/{hook_id}
修改后配置建议
PLUGIN_DEBUGGING_HOST=0.0.0.0
PLUGIN_DEBUGGING_PORT=5003
# 替换为你实际的公网 IP 或局域网 IP
EXPOSE_PLUGIN_DEBUGGING_HOST=<你的公网 IP>
EXPOSE_PLUGIN_DEBUGGING_PORT=5003
PLUGIN_DIFY_INNER_API_KEY=<保持原有密钥不变>
PLUGIN_DIFY_INNER_API_URL=http://api:5001
ENDPOINT_URL_TEMPLATE=http://<你的公网 IP>/e/{hook_id}
修改完成后重启 Docker 容器使配置生效。这样,你的 Dify 工作流就能以 MCP Server 的身份被外部工具识别和调用了。


