本文介绍Dify 对接 Nacos MCP Registry的具体操作。
背景介绍
Dify 是一个面向 AI 时代的开源大语言模型(LLM)应用开发平台,致力于让复杂的人工智能应用构建变得简单高效,目前已在全球范围内形成显著影响力,其 GitHub 仓库 Star 数截至 2025 年 6 月已突破 100,000+,目前,Dify 已经成为 LLMOps 领域增长最快的开源项目之一。
Nacos 3.0 版本实现了MCP Registry 管理功能,可以对所有的MCP Server 进行集中式的管理。基于 Nacos MCP Server Registry,你可以实现以下功能:
-
多种类型的 MCP Server 自动注册和动态发现。
-
MCP Server相关描述,工具描述动态修改并生效,MCP Tools 动态开关。
-
存量的微服务 API 实现 0 代码改动转化成 MCP 服务。
Dify 应用通过接入 Nacos MCP 插件,即可实时感知 Nacos 中配置的所有 MCP Server,享受以上 MCP 企业级特性,大大降低了 Dify 应用中 MCP Server 的接入和管理成本。同时,Nacos MCP 插件还能帮助模型按需挑选并路由 MCP 服务,有效降低模型调用的 Token 消耗。

操作步骤
步骤一:将 MCP Server 注册到 Nacos MCP Registry
-
通过MSE Nacos 部署链接部署 MSE Nacos 3.0 企业版实例。
-
通过以下方式,将您的MCP Server 注册到 Nacos MCP Registry 中:
-
控制台上手动注册,请参见创建标准MCP服务。
-
通过框架自动注册,请参见动态注册MCP服务。
-
存量的微服务API实现0代码改动转化成MCP服务,请参见创建HTTP转化MCP服务。
-
-
注册完成后,即可在MSE Nacos 控制台 MCP Registry页面中看到注册的 MCP Server信息。
MCP Registry 服务列表展示各 MCP 服务的名称、当前发布版本、MCP 协议类型、服务类型(如标准 MCP 服务或HTTP 转化 MCP 服务)及支持能力等信息,并提供编辑和删除操作。
步骤二:Dify 应用 Nacos MCP 插件配置
目前,Nacos 官方 MCP 插件 Nacos MCP 已经登录 Dify 官方市场。完成 MCP Server 在 Nacos 上的注册之后,为了让 Dify 应用能够访问到Nacos中注册的 MCP Server,我们需要安装并配置 Nacos MCP 插件。
-
在 Dify 官方插件市场中搜索 Nacos MCP 插件,安装后配置 Nacos Server 的访问地址和访问凭证。
在搜索结果中选择插件标识为
nacos/nacos_mcp的 Nacos MCP 插件并安装。在设置授权弹窗中,填写Nacos 服务端地址(如
xxx.com:8848)、Nacos 用户名和Nacos 密码;如需访问阿里云 MSE Nacos,还需填写阿里云 AccessKey和阿里云 SecretKey。完成后单击保存。 -
完成插件配置之后,我们即可在 Dify 应用中使用该插件动态发现 Nacos MCP Registry 中的 MCP Server。
-
以 开发 AI 导购助手为例,假设我们在 Nacos MCP Registry 中注册了一个
goods-mcp-server服务,功能是根据用户需求返回对应的商品列表。我们在 Dify 中创建一个 Agent 应用并配置 Nacos MCP 插件中以下的工具:-
查询 MCP Server 列表 (
list_mcp_servers) -
查找特定的 MCP Server 的工具列表 (
list_mcp_server_tools) -
列出用户预配置的 MCP Server 的工具列表 (
list_mcp_server_tools_by_user)
-
-
模型会根据实际的任务,首先查询可用的 MCP Server 列表,并根据自己的需要,智能挑选依次调用Nacos MCP 的三个工具来完成任务的执行。
在编排页面的提示词区域输入
你是一个AI导购助手,在工具区域开启以下三个工具:nacos_mcp 查询 MCP Server 列表、nacos_mcp 查找特定 MCP Server 的工具列表、nacos_mcp 调用 MCP Server 工具。 -
单击部署,让我们在对话中体验下。
在对话框中输入"我想要去露营,需要准备什么物品"并发送,AI 导购依次调用
list_mcp_servers、list_mcp_server_tools(请求 goods-mcp-server,返回工具getGoods及其参数定义)和call_mcp_tool(调用getGoods,传参arg0='露营')三次 MCP 工具调用,最终回复"去露营需要准备的物品有:帐篷,炉具,睡袋,照明设备,餐具,净水设备和防晒用品。" -
查看调用历史,大模型通过调用Nacos MCP 插件的三个工具,顺利完成了对于
goods-mcp-server的调用。
步骤三:Dify 基于 Nacos MCP 实现 MCP Server 路由
用户可以随时在 Nacos MCP Registry 中注册和修改 MCP Server 相关信息,Dify 应用通过 Nacos MCP 插件可以实时的感知 Nacos 中注册的 MCP Server 服务,并根据任务实现对于 MCP 的路由,而无需对 Dify 应用进行重新编辑和部署。
以AI导购为例,在上线之后,我们觉得单纯推荐物品的逻辑有些单薄,我们希望他除了推荐物品之外,还可以进一步的给出每类物品在各个平台上的最低价格以及对应的商品链接,相关的价格查询逻辑已经由price-mcp-server进行了实现。在不依赖Nacos的情况下,添加一个全新的MCP Server我们需要重新对Dify应用进行部署,而现在,我们只需要在Nacos中注册对应的price-mcp-server即可。
-
通过自动注册或者手动配置的方式在 Nacos 注册
price-mcp-serverMCP 服务。注册完成后,在 MCP Registry 页面可查看已注册的 MCP 服务列表,包括
price-mcp-server和goods-mcp-server,协议类型为 mcp-sse,服务类型为标准MCP服务,能力类型为 TOOL。注册完成后,在 price-mcp-server 服务详情页可查看基本信息:服务类型为标准MCP服务,MCP协议类型为 mcp-sse,访问路径为
/sse,命名空间为 public,服务端口为 80,service 为DEFAULT_GROUP / price-mcp-server。MCP 工具区域包含一个已开启的 ComparePrice 工具,工具描述为"根据传入的商品类名,返回查找到的每个平台的该类商品的最低价格以及对应的商品名称和链接,并额外给出这些不同平台中价格最低的以及价格最高的商品列表,以及这些商品的最低价和最高价",参数为arg0(类型 String,描述为"商品类名")。 -
再次调用AI导购。
用户输入"我要去露营,帮我推荐下装备,并给下价格",AI 导购依次调用
list_mcp_servers、list_mcp_server_tools、call_mcp_tool工具,推荐了帐篷、炉具、睡袋、照明设备、餐具、净水设备、防晒装备共 7 类露营装备,并给出帐篷的多平台价格对比:淘宝骆驼帐篷 250.06 元、京东京造帐篷 239.0 元、拼多多 JEEP 帐篷 119.8 元、天猫牧高笛帐篷 176.12 元。可以发现,在给出推荐的商品列表之外,AI 导购进一步的利用了
price-mcp-server来进行了价格的查询和比较,而无需重新部署。此外,查看模型的工作链路,我们看到模型首先查询了所有可用的 MCP 服务列表,根据任务判断需要调用
goods-mcp-server以及price-mcp-server, 再去查找了具体的 Tools 信息。已使用 list_mcp_servers 请求 {"list_mcp_servers": {"page_no": 1, "page_size": 5}} 响应 {"list_mcp_servers": "{\"result\": {\"mcp_server_list\": [{\"description\": \"goods-mcp-server\", \"name\": \"goods-mcp-server\"}, {\"description\": \"price-mcp-server\", \"name\": \"price-mcp-server\"}], \"pageNumber\": 1, \"pagesAvailable\": 1, \"totalCount\": 2}}"} 已使用 list_mcp_server_tools 请求 {"list_mcp_server_tools": {"mcp_server_name": "goods-mcp-server;price-mcp-server"}} 响应 {"list_mcp_server_tools": "{\"result\": [{\"name\": \"goods-mcp-server\", \"tools\": {\"meta\": null, \"nextCursor\": null, \"tools\": [{\"annotations\": null, \"description\": \"根据关键字查找相关的商品的列表\", \"inputSchema\": {\"additionalProperties\": false, \"properties\": {\"arg0\": {\"type\": \"string\"}}, \"required\": [\"arg0\"], \"type\": \"object\"}, \"name\": \"getGoods\"}]}}, {\"name\": \"price-mcp-server\", \"tools\": {\"meta\": null, \"nextCursor\": null, \"tools\": [{\"annotations\": null, \"description\": \"根据传入的商品类名, 返回查找到的每个平台的该类商品的最低价格以及对应的商品名称和链接, 并额外给出这些不同平台的商品中价格最低的以及价格最高的商品列表, 以及这些商品的最低价和最高价\", \"inputSchema\": {\"additionalProperties\": false, \"properties\": {\"arg0\": {\"description\": \"商品类名\", \"type\": \"string\"}}, \"required\": [\"arg0\"], \"type\": \"object\"}, \"name\": \"ComparePrice\"}]}}]}"} -
如果我们只希望获取物品的列表,则模型只会查询
goods-mcp-server的工具列表。模型依次调用
list_mcp_servers获取可用服务列表(返回 goods-mcp-server 和 price-mcp-server),再仅对 goods-mcp-server 调用list_mcp_server_tools,获得工具getGoods(根据关键字查找相关商品列表)。当 MCP 数量和 Tools 数量较多时,可以显著减少模型 Token 消耗。
Dify 基于 Nacos MCP 实现 MCP Server 动态调优
在实践中,为了实现更好的路由效果,MCP 本身以及工具的描述是否精准也是重要因素。通过 Nacos MCP 插件接入的 MCP 服务,支持在 MCP 运行时对 MCP 的工具描述和工具开关进行动态调整,根据实际需要向 Dify 应用暴露可用工具进行调优。
在MSE控制台的编辑MCP服务页面,可在MCP工具区域的白屏编辑模式下修改工具描述。例如ComparePrice工具的描述为"根据传入的商品类名,返回查找到的每个平台的该类商品的最低价格以及对应的商品名称和链接,并额外给出这些不同平台的商品中价格最低的以及价格最高的商品列表,以及这些商品的最低价和最高价",同时可配置工具参数(如arg0/String/商品类名)及工具开关状态。
关于 Nacos MCP 插件的接入和使用方式,请参见Nacos MCP 插件使用文档。