Dify应用实战(17) - 使用MCP服务

今天我们将要继续企业应用之旅,让Dify变成一个超级中间站,能将开源的大几千MCP服务为我所用。

学习完成,你将会让自己的Dify也拥有更专业的使用MCP的能力。

**01.**准备环节

我们之前详细学习了MCP所有关键的内容,是时候来表演了。

不过Dify是一个服务端运行的系统,它不像本地可以为MCP服务去准备运行环境。如果让Dify集成stdio方式的MCP,那改动就有点大了。

但是现存海量的MCP服务,绝大多数都是stdio方式,所以关键一点就是打通这个使用方式上的差异。

因此使用一个叫mcp-proxy的工具,就来的如此的顺理成章。(如果听不懂stdio的话,请复习前面的博文)

大模型的得力干将MCP(5) - 应用场景和发展方向,窥探先机,不容错过

为了不影响本地电脑的环境配置等,我们同样以容器的方式,去运行这个mcp-proxy。

根据它的说明文档,有两个地方需要修改为自己的。

  1. 重新打包一下镜像,加入uv运行环境。新建一个mcp-proxy.Dockerfile文件,内容如下:

图片

2.以上述镜像,加入需要代理的MCP服务,我们以mysql_mcp_server为例。新建一个docker-compose.yml文件,内容如下:

图片

现在启动docker compose up -d,去容器中看到输出log如下,就说明成功了。

图片

上述步骤完成,给我们干活的MCP服务就搭好了,接着开始操作Dify。

有两个插件需要准备好。

图片

如果你在插件市场看到他们的版本低于0.0.8,请去插件介绍的github上手动下载,然后通过本地插件的方式去安装。

如果你还没有这么快要去尝试,也不用主动升级,说不定你要用的时候已经有插件市场的0.0.8版本了。(一定要听劝,不要乱尝试)

至此,所有今天需要的准备就完成了,恭喜!

**02.**动手做一做

今天为了演示,新建一个chatflow,把所有其他的干扰因素都排除。

在开始节点之后新增一个节点”Agent”。

第一步需要指定AGENT策略,点下拉箭头会出现”支持MCP工具的Agent”,点击之后会再展开,选择”FunctionCalling(Support MCP tools)”

图片

此时才开始正式配置相关参数。

第二步,模型这里选择支持FunctionCall的大模型,如qwen2.5。

第三步,工具列表这里点加号,把”通过SSE发现和调用MCP”里面包含的两个工具都加上

图片

如果是第一次配置这个工具,它会问你要授权,填入刚才docker提供MCP Proxy的服务地址和端口

1
{"mysql_mcp": {"url": "http://192.168.0.231:8066/sse","headers": {}, "timeout": 50, "sse_read_timeout": 300}}

保存时没有报错,说明就成功了。

第四步,MCP 服务配置的框内填入提供MCPProxy的地址,如下

1
2
3
4
5
6
7
8
9

{
"mysql_mcp": {
"url": "http://192.168.0.231:8066/sse",
"headers": {},
"timeout": 50,
"sse_read_timeout": 300
}
}

图片

最后把剩余的,指令,查询和最大迭代次数修改完就OK了,见上图。

见证奇迹的时刻到来了。我们进行测试,结果如下:

图片

除了运行时间长点,没毛病。本地测试环境,大模型运行效率不高。嘿嘿!

总结

今天学习了将MCP服务引入Dify系统,从而打通了大模型与更强大扩展工具之间的联系。你的Dify应用将会有更多更好的能力做出更酷的事情来。