背景与目标
之前我们讨论过 MCP SSE 插件,它支持 Dify 调用外部的 MCP Server。但反过来,Dify 的工作流或 Chatflow 能否发布为 MCP Server,供外部工具(如 Cursor、Claude Desktop 等)直接调用呢?答案是肯定的。通过安装社区贡献的 mcp-server 插件,我们可以将 Dify 应用转化为符合 MCP 标准的 Server Endpoint。
该插件的核心能力包括:
- 暴露为 MCP 工具:将 Dify 应用抽象为单一 MCP 工具,供外部客户端调用。
- 利用 Dify Endpoint 功能:创建应用 Endpoint 后获得唯一 URL,外部可直接连接。
- 提供 MCP 服务:插件在 Dify 环境中启动 HTTP 服务,基于 HTTP 和 SSE 协议处理握手、发现及调用请求。
插件安装
在 Dify 插件市场中搜索并安装 MCP Server 插件。安装完成后,在插件列表中即可看到已启用的状态。

环境配置
为了让外部网络能够访问到本地或内网的 Dify 服务,我们需要修改 .env 配置文件。重点在于将默认指向 localhost 的地址替换为你的局域网 IP 或公网 IP。
修改 .env 文件
找到项目根目录下的 .env 文件(参考官方示例 docker/.env.example)。我们需要关注以下两个关键配置项:
EXPOSE_PLUGIN_DEBUGGING_HOSTENDPOINT_URL_TEMPLATE
原始配置
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}
修改建议
将 localhost 替换为你实际可访问的 IP 地址。注意,这里不要硬编码具体的公网 IP,建议使用占位符以便部署时灵活调整。
PLUGIN_DEBUGGING_HOST=0.0.0.0
PLUGIN_DEBUGGING_PORT=5003
EXPOSE_PLUGIN_DEBUGGING_HOST=<your_public_ip>
EXPOSE_PLUGIN_DEBUGGING_PORT=5003
PLUGIN_DIFY_INNER_API_KEY=QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1
PLUGIN_DIFY_INNER_API_URL=http://api:5001
ENDPOINT_URL_TEMPLATE=http://<your_public_ip>/e/{hook_id}
注意:修改完环境变量后,记得重启 Docker 容器使配置生效。如果使用的是公网 IP,请确保防火墙已放行相关端口,否则外部客户端将无法建立连接。


