一、概述
前面几篇文章写很多MCP应用,基本上一个dify工作流使用一个MCP应用。
那么一个dify工作流,同时使用多个MCP应用,是否可以呢?答案是可以的。
先来看一下效果图

说明:
这里使用了问题分类器,用来判断用户的问题,应该调用哪个MCP应用
AGENT1~4,分别对应一个MCP应用,例如:public-ip-mcp-server,mysql8-mcp-server,desensitization-mcp-server,searxng-mcp-server
针对mysql查询输出的内容,会进行脱敏处理。
二、问题分类器
定义
通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。
场景
常见的使用情景包括客服对话意图分类、产品评价分类、邮件批量分类等。
在一个典型的产品客服问答场景中,问题分类器可以作为知识库检索的前置步骤,对用户输入问题意图进行分类处理,分类后导向下游不同的知识库查询相关的内容,以精确回复用户的问题。
设置
对于比较精确的条件,一般使用条件分支。但是对于我这种场景,条件比较模糊,所以需要使用问题分类器
这里定义了3个分类:
公网ip相关问题
mysql 数据库相关查询,涉及学生、教师、成绩、班级、课程等
其他问题
效果如下:

说明:
公网ip相关问题,会直接调用MCP应用public-ip-mcp-server
mysql相关问题,会调用MCP应用mysql8-mcp-server
其他问题,会调用MCP应用searxng-mcp-server,这个是一个联网搜索引擎,你可以理解为百度,想搜什么都可以。
三、环境说明
dify版本
这里使用的是最新版本1.4.0,如果你的版本没有这么高,1.3.0以上版本也可以。
mcp插件
确保已经安装了以下插件:
Agent 策略(支持 MCP 工具)
MCP SSE / StreamableHTTP
确保插件版本,已经升级到最新版本
mcp应用
这里的所有MCP应用,统一使用Streamable HTTP模式,全部部署在k8s里面。
当然,使用docker运行也是可以的。
mcp插件设置
点击插件MCP SSE / StreamableHTTP,输入MCP 服务配置

完整内容如下:
{
"mysql8-mcp-server": {
"transport": "streamable_http",
"url": "http://mysql8-mcp-server-svc.mcp:9000/mcp/",
"headers": {},
"timeout": 60
},
"desensitization-mcp-server": {
"transport": "streamable_http",
"url": "http://desensitization-mcp-server-svc.mcp:9000/mcp/",
"headers": {},
"timeout": 60
},
"public-ip-mcp-server": {
"transport": "streamable_http",
"url": "http://public-ip-mcp-server-svc.mcp:9000/mcp/",
"headers": {},
"timeout": 60
},
"searxng-mcp-server": {
"transport": "streamable_http",
"url": "http://searxng-mcp-server-svc.mcp:9000/mcp/",
"headers": {},
"timeout": 60
}
}
注意:这里的url使用的是k8s内部地址,如果使用的是docker方式运行,请根据实际情况修改。
四、public-ip-mcp-server设置
public-ip-mcp-server核心代码如下:
server.py
from fastmcp import FastMCP
import json
import requests
mcp = FastMCP("public-ip-address")
@mcp.tool()
def get_public_ip_address() -> str:
"""
获取公网ip地址
返回:
str: 当前网络的公网ip地址
"""
response = requests.get("http://ip-api.com/json")
content = json.loads(response.text)
return content["query"]
if __name__ == "__main__":
mcp.run(transport="streamable-http", host="0.0.0.0", port=9000, path="/mcp")
Agent配置
Agent 1详细配置如下:

MCP服务配置
{
"public-ip-mcp-server": {
"transport": "streamable_http",
"url": "http://public-ip-mcp-server-svc.mcp:9000/mcp/",
"headers": {},
"timeout": 60
}
}
指令
使用MCP工具,获取服务器公网ip
最后直接回复,注意选择变量Agent1 text


最低0.47元/天 解锁文章
594






