之前我们为大家介绍过MCP SSE插件,它能够支持MCP-server在Dify平台上的调用,从而帮助Dify与第三方平台提供的MCP-server进行无缝对接。有些小伙伴提出了疑问:既然Dify可以通过MCP SSE插件调用其他平台的MCP-server,那么Dify的工作流或Chatflow是否也能发布为MCP-server,供其他支持MCP client的工具使用呢?今天,我们将为大家介绍一款Dify插件——mcp-server,它能够实现这一功能,即将Dify的工作流或Chatflow发布为MCP-server,供其他第三方工具调用。
插件名字叫做MCP-server,我们在dify插件市场可以找到这个工具
image-20250417130824181
Mcp-server 是一个由 Dify 社区贡献的 Extension 类型插件。安装后,你可以把任何 Dify 应用转变成符合 MCP 标准的 Server Endpoint,供外部 MCP 客户端直接访问。它的主要功能包括:
- • **暴露为 MCP 工具:**将 Dify 应用抽象为单一 MCP 工具,供外部 MCP 客户端(如 Cursor、Claude Desktop、Cline,Windsurf、Dify 等)调用。
- • **利用 Dify Endpoint 功能:**用户创建应用 Endpoint 后,将获得唯一的 URL,外部 MCP 客户端可直接通过该 URL 连接。
- • **提供 MCP 服务:**插件在 Dify 插件环境中自动启动 HTTP 服务,基于 HTTP 和 SSE 协议,高效处理外部 MCP 客户端请求,包括协议握手、能力发现以及工具调用。
我们在插件市场上安装好这个插件。安装好后可以在插件列表中查找到,如下图。
image-20250417131032122
env IP地址修改
接下来我们需要配置MCP-server,这个配置的地方我们需要注意,既然这个工具是对外提供服务的,那么我们就希望在互联网或者局域网实现访问。所以我们需要修改一下dify .env文件的配置,找到你本地电脑上的.env文件,这里我们方便讲解就拿官方的
https://github.com/langgenius/dify/blob/main/docker/.env.example 给大家介绍一下修改的地方
我们搜索到.env.example 文件 1001 行找到如下配置
image-20250417131439622
我们需要把 EXPOSE_PLUGIN_DEBUGGING_HOST 、ENDPOINT_URL_TEMPLATE 这2个地方的localhost 换成你的局域网IP或者公网IP
我的公网地址是14.103.204.132
原地址
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
EXPOSE\_PLUGIN\_DEBUGGING\_HOST=14.103.204.132
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://14.103.204.132/e/{hook\_id}
我公网服务器地址修改截图如下
image-20250417131713711
修改之后,记得重启dify
chatflow案例配置介绍
上面配置完成并重启好dify工作流后。我们进入dify工作台-插件-MCP-server 配置界面
image-20250417131948177
默认这里是空的,我这里是之前配置好的,所以显示了2个。
上期文章中我们使用了dify 实现了一个PPT chatflow的制作,我们就拿上期文章的案例来做成一个mcp-server对外提供服务。
关于上期文章大家可以看这个《dify案例分享-借助插件 3 步打造惊艳 PPT 生成工作流!》
点击右上角+号,弹出配置。
image-20250417132352675
在 mcp-server 插件的配置页面,填写以下内容:
- • **端点名称:**端点 名称。
- • **App:**选择要发布为 MCP Server 的 Dify 应用。
- • **App Type:**应用类型(Chat 或 Workflow)。
- • **App Input Schema:**定义应用的输入参数,帮助外部系统理解与该应用的交互方式,格式为 JSON。可以参考我下面的截图
image-20250417132526689
其中APP 应用里面可以从我们之前dify制作好的工作流选择我们需要发布的应用(Chat 或 Workflow),我们这里选择“儿童故事绘本-ppt chatflow” 如下图
image-20250417132624826
最后一个App Input Schema 稍微麻烦点,大家可以看参考我下面的
{
"name":"pptchatflow",
"description":"儿童故事绘本-ppt chatflow",
"inputSchema":{
"title":"儿童故事绘本-ppt chatflow",
"type":"object",
"properties":{
"prompt":{
"title":"儿童故事绘本-ppt chatflow",
"description":"本工作流流(chatflow)可以实现大语言模型创建内容后调用agent 从而实现PPT的制作功能",
"type":"string"
}
},
"required":[
"prompt"
]
}
}
其实关键点在 properties 和required 属性,这2个值就是你对外提供工作流的输入参数。那么具体填什么值呢? 和你工作流输出参数有关。我们回到我的儿童故事绘本-ppt chatflow 工作流中
image-20250417133107545
我这里就一个输入参数叫做“prompt”,所以我们添加的 properties 和required 属性 值就是 prompt。这样大家就能理解了吧。
完上传配置点击保存按钮,这个时候我们就可以看到如下面画面
image-20250417133243597
显示服务正常,这样MCP-server对外提供服务了。 那么问题来了,我怎么 证明他可以使用呢?
它对外提供2个地址 get 和post请求。地址如下:
http://localhost/e/56uageiwt2ezf8e9}/sse
http://localhost/e/56uageiwt2ezf8e9}/messages/
这地方其实是有坑的。还记得前面提到我们修改.env文件把localhost 改成公网地址14.103.204.132,为什么这地方显示不出来呢?
我当时也是找了半天的原因。这个地方如果显示localhost 其实可以不用去管它。我们可以重新修改地址localhost 换成IP。
另外还有一个地方就是生产的地址56uageiwt2ezf8e9} 后面是有一个右边单括号的”}”的,这里我们也是需要去掉。修改后的地址如下
http://14.103.204.132/e/56uageiwt2ezf8e9/sse
http://14.103.204.132/e/56uageiwt2ezf8e9/messages/
我们把上述地址get 请求地址在浏览器上输入验证一下,确保客户端网络能够访问这个MCP-server
image-20250417133929184
出现了
event: endpoint
data: messages/?session\_id=a21bbc543af2402f902850ec34433ae4
这个时候证明我们网络是通的,对外是可以访问的。
Cherry Studio验证及测试
接下来我们找一个支持mcp-client工具,就拿Cherry Studio验证吧。打开电脑上安装的Cherry Studio 升级最新版本(建议)我的版本是
1.2.4
image-20250417134335249
我们找到 mcp服务器配置-点击添加服务器
image-20250417134415684
这个配置SSE 非常简单,填写名称和 sse URL地址即可
image-20250417134525835
配置完成后点击保存。
回到cherry studio 聊天对话窗口,我们选择一个带有function call的模型,这里我们就选择 火山引擎提供的deepseek-v3模型,勾选MCP- server
image-20250417134733272
聊天窗口中我们输入“
喜羊羊与灰太狼
image-20250417134822901
模型会调用 名称叫做pptchatflow 的,我们点开它 确实是调用了我们dify 之前做的额PPT生成的工作流了。
image-20250417134904534
PPT 没给我提供下载,我继续
image-20250417134951935
他也给我把PPT地址提供链接显示出来了。 这个我们需要注意的事情,我们点击链接其实是下载不了的。为什么呢?
可能小伙伴会问了, 因为我们之前的案例PPT 生成在容器内部,DIFY安全方面的考虑第三方链接是下载不到这个PPT的,如果想解决它怎么办? 聪明的小伙伴已经想到了,在上期工作流中我们生成的PPT可以借助于第三方平台,比如腾讯COS 实现PPT 的上传,然后返回PPT公网访问的下载链接地址,这样不管是在DIFY 平台上还是第三方平台上就可以实现这个链接地方访问和下载了。感兴趣小伙伴可以参考我们之前的文章来实现。这里我们就不展开了。
workflow案例配置介绍
前面给大家介绍了是chatflow配置,接下来我们在介绍一下workflow的配置,这个配置和上面的非常类似,区别地方就是我们选择
**App Type:**应用类型( Workflow)。
这里我们拿我之前的即梦AI绘画工作流给大家讲解。
image-20250417135552429
这个地方重点其实还是App Input Schema
我的配置如下
{
"name":"Dream AI Painting",
"description":"本工作流主要是使用开源jimeng-free-api项目实现即梦AI逆向API 通过http请求整合实现dify工作流上即梦AI绘画功能",
"inputSchema":{
"title":"即梦AI绘画",
"type":"object",
"properties":{
"prompt":{
"title":"即梦AI绘画",
"description":"本工作流主要是使用开源jimeng-free-api项目实现即梦AI逆向API 通过http请求整合实现dify工作流上即梦AI绘画功能",
"type":"string"
}
},
"required":[
"prompt"
]
}
}
这个地方和上面一样,我也只有一个prompt 输入参数。
配置完成后效果如下
image-20250417135805758
URL 地址和前面也是一样,这里就不在重复赘述。
最终对外提供的 URL 如下
http://14.103.204.132/e/boaavozuvj5w3dk9/sse
http://14.103.204.132/e/boaavozuvj5w3dk9/messages/
上面我们同样可以使用Cherry Studio验证及测试,具体配置就不详细展开,我们给大家看一下效果
image-20250417140106541
image-20250417140124158
我们知道我之前做的即梦AI 绘画一次性返回4张图。 这里我们就借助第三方工具cherry studio 实现DIFY 工作流生成AI绘画的功能了。
魔搭社区SSE验证及测试
前几天魔搭社区已提供了一站式SSE 托管平台,我们接下来可以在这个平台上演示一下我们的即梦AI 工作流SSE
用账号登录魔搭社区,进入首页,点击右边“MCP广场”
image-20250417140510758
image-20250417140542066
点击MCP 实验场,进入 MCP Playground
image-20250417140641504
我们点击配置按钮,添加MCP server
image-20250417140717586
image-20250417140813608
点击确定按钮完成保存设置。
image-20250417140922844
回到试验场,我们就可以测试了。
image-20250417141329830
image-20250417141359077
同样它生成了4张风格不一样的图。
我在dify工作流中也能够看到魔搭社区MCP-client端发起了调用产生了调用记录。
image-20250417141628003
以上我们就完成了魔搭社区SSE 和我们dify MCP-server 提供的即梦AI绘画工作流整合和调用了。
是不是非常简单,呵呵。
前面步骤教会大家如何配合和部署dify-mcp-server,有的小伙伴不想去折腾,我们这里也提供大家我制作好的mcp-server地址,方便大家体验和使用。当然感兴趣小伙伴最好还是自己去参考上面的文章增加搭建一下,体会很更深,也能很好的理解mcp-server和mcp-client
体验地址:
即梦AI绘画
http://14.103.204.132/e/boaavozuvj5w3dk9/sse
儿童故事绘本-ppt chatflow
http://14.103.204.132/e/56uageiwt2ezf8e9/sse
今天主要带大家了解并实现了将 Dify 的工作流或 Chatflow 发布为 MCP - server,供其他第三方工具调用的功能。借助 Dify 社区贡献的 MCP - server 插件,实现了把 Dify 应用转变为符合 MCP 标准的 Server Endpoint 的过程。本次操作涉及到 Dify 平台的使用、MCP - server 插件的安装与配置,以及对工作流输入输出参数的理解和设置等知识。整个过程虽有一些小细节需要注意,但操作本身并不复杂,感兴趣的小伙伴可以去尝试。今天的分享就到这里结束了,我们下一篇文章见。
dify案例分享-借助插件 3 步打造惊艳 PPT 生成工作流!
dify案例分享-基于database插件实现Text2sql的数据库查询图表工作流
dify独家揭秘:mcp_sse+Zapier_MCP如何打造轻量级MCPserver达成万物互联