作者:正己
背景
随着人工智能的迅猛发展,AI Agent 正日益深入人们的生活与工作场景。特别是自去年 11 月 MCP 协议发布以来,AI Agent 对外部数据和工具的调用能力得到了显著提升,展现出更强的自主性与实用性。然而,在享受 MCP 工具带来便利的同时,用户也面临一系列现实挑战:
服务选择与配置复杂:目前市面上存在成千上万的 MCP 服务器,用户需根据具体任务自行筛选合适的服务器,并手动配置至 AI Agent。这一过程不仅繁琐,还可能显著降低使用效率,影响整体体验。
Token 消耗过高:若为 AI Agent 配置过多 MCP 服务器,会导致与大模型交互时需将所有工具的完整描述信息一并发送,从而引发 token 消耗激增的问题,增加推理成本并降低响应速度。
安全与信任隐患:对于开源社区提供的、需本地部署的 MCP 服务器,用户常面临安全性质疑:该服务器是否含有漏洞?是否存在数据泄露风险?缺乏权威的安全评估机制,使得用户在使用时难有充分信任保障。
这些问题在一定程度上制约了 MCP 生态的普及与 AI Agent 的广泛应用,亟需系统性的解决方案来提升可用性、效率与安全性。
Nacos社区的解决方案:Nacos MCP Router + Nacos MCP Registry
针对当前 AI Agent 在使用 MCP 协议过程中面临的挑战,Nacos 社区推出了一款重磅开源产品 ------ Nacos MCP Router(以下简称 Router)。Router 是一个遵循 MCP 协议的标准 MCP Server,其核心能力是根据用户任务的语义描述和关键词,智能地从 MCP 注册中心中筛选出最匹配的 MCP Server,并将这些候选工具提供给大模型进行决策。
通过引入 Router,用户不再需要手动为不同任务配置不同的 MCP Server,也无需在海量的 MCP 服务中费力筛选。AI Agent 只需统一接入 Router 这一个 MCP Server,极大简化了集成与管理复杂度。
更重要的是,Router 显著优化了 token 使用效率。初始阶段,AI Agent 仅需向大模型传递 Router 自身的轻量级工具描述,避免了全量工具信息的冗余传输。在实际执行过程中,Router 会动态匹配并仅返回与当前任务相关的 MCP 工具描述,从而大幅减少上下文长度,有效缓解因工具描述过多导致的 token 消耗问题,降低推理成本,提升响应速度。
此外,MCP Server 的安全性问题也日益凸显。目前大多数开源 MCP Server 依赖本地部署,并通过标准输入输出(stdio)协议暴露功能,存在潜在的数据泄露、进程污染等安全风险。为此,Router 提供了关键的代理与协议转换能力:支持将基于 stdio 的 MCP Server 一键转换为更安全、更可控的 SSE 或 streamable HTTP 协议,并结合 Docker 容器化部署,实现服务的隔离运行。通过这一机制,用户可将原本不安全的 stdio 服务部署在独立的容器环境中,有效阻断敏感数据外泄路径,提升整体系统的安全性和可维护性。
Nacos MCP Router 架构及原理
Router 作为 Nacos MCP 解决方案的一部分,其整体架构图如下图所示:

-
Router 作为标准 MCP Server,通过 MCP 协议与上层 MCP Client 通信,支持Local 模式(stdio 协议)和 Remote 模式(SSE 或 streamable HTTP 协议)。
-
Router 主要有两种工作模式:智能路由模式和代理模式。
- 智能路由是 Router 的全功能模式,在此模式下,Router 提供 MCP Server 自动发现、智能筛选、工具代理、协议转换、安全鉴权、工具及描述动态调试等功能。
- 代理模式是 Router 的子功能合集,主要提供协议转换、工具代理、安全鉴权、工具及描述动态调试等功能。
-
Router 以 Nacos MCP Registry 为数据源,从中获取 MCP Server 列表。用户在 Nacos 上配置 MCP Server 或依赖 SDK 自动注册 MCP 后,可以通过 Router 消费 MCP Server。
工作原理之智能路由模式
智能路由模式下,Router 是一个标准 MCP Server,提供 3 个 MCP 工具:
- search_mcp_server:根据任务描述及关键字智能筛选 MCP Server;
- add_mcp_server:初始化指定的 MCP Server;如果是 stdio 协议,执行安装及初始化逻辑;如果是 SSE 或 streamable HTTP 协议,执行建连及初始化逻辑;
- use_mcp_tool:使用目标 MCP Server 的某个工具,Router 会工具代理请求至目标MCP Server。
架构示意图如下:

智能路由模式的工作流程如下:
-
Router 启动,从 Nacos MCP Registry 获取 MCP Server 列表,并把相关描述存入向量数据库中;
-
Agent 初始化和大模型建立会话时,告诉大模型 Router 的工具列表(前文 3 个);
-
用户通过 Agent 发起任务,大模型根据用户任务描述,选择使用 search_mcp_server,构造参数发起工具调用,查找可用的 MCP Server;
-
Router 根据工具调用参数,查询可用的 MCP Server 列表,返回相关对最高的 5 个;
-
大模型选择合适的 MCP Server 调用 add_mcp_server 工具,初始化目标 MCP Server;
-
Router 初始化目标 MCP Server,并返回目标 MCP Server 的工具列表;
-
大模型选择目标 MCP Server 工具,构造参数,调用 Router 的 use_mcp_tool 工具,发起工具调用;
-
Router 代理 MCP 工具请求至目标 MCP Server,并将结果返回给 Agent;
-
大模型拿到查询数据,整理最终结果。
工作原理之代理模式
代理模式相对简单一些,代理模式产生的初衷是把 stdio 协议的 MCP Server 一键转为 SSE 或 streamableHTTP 协议的 MCP Server,同时也能通过容器技术为用户提供隔离的 MCP 运行环境。

Nacos MCP Router部署实践
总体原则

- Nacos、Router 均为容器化部署,隔离计算资源
- Nacos、Router 多副本部署,提升稳定性
- Router 采用 SLB 提供负载均衡能力并对外暴露服务
- 推荐采用 streamableHTTP 协议,提供无状态 MCP Server
架构拓扑

为减少复杂性,本次部署基于阿里云容器平台 ACS,因为 ACS 的 Serverless 形态交付模式帮用户免去了 K8s 底层资源管理的复杂性。
创建 Nacos 及 Nacos MCP Router 集群
目前 Nacos MCP Router 已经支持 helm 一键部署,包括 Router 依赖的 Nacos 集群,并且能自动创建 SLB 对外暴露服务,首先要确保已正确安装并配置 helm 和 kubectl。方便起见我们在阿里云 ACS 上部署 Nacos 及 Router,部署脚本如下:
bash
git clone https://github.com/nacos-group/nacos-mcp-router.git
cd nacos-mcp-router/helm
bash randomize_values.sh
helm install nacos-mcp-router . -n nacos-mcp --create-namespace
命令执行成功后,等待集群初始化完成。部署完成后如下图所示,包括 3 节点 Nacos、Mysql 及 Router。


注册 MCP Server 到 Nacos
- 登录 Nacos 控制台:集群部署完成后,我们需要在 Nacos 中注册相关的 MCP Server。在 ACS 控制台上找到 Nacos 的外网 SLB,即可访问 Nacos 控制台,注册 MCP Server。

- 初始化控制台密码:首次登陆 Nacos 控制台需要初始化密码,这里要把密码初始化为 values.yaml 文件里的 NACOS_PASSWORD 的值。

- 注册 Local MCP Server。


通过 Router 的代理模式把 stdio 协议 MCP Server 转为 streamableHTTP 协议
前面讲过 Router 支持 MCP 协议转换,本节讲述以代理模式部署 Router,并代理 stdio 协议 MCP Server,对外暴露 streamableHTTP 协议,以 MCP Server fetch 为例:
- 部署 fetch
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fetch-mcp
spec:
replicas: 1
selector:
matchLabels:
app: fetch-mcp
template:
metadata:
labels:
app: fetch-mcp
spec:
containers:
- name: fetch-mcp
image: "nacos/nacos-mcp-router:latest"
env:
- name: TRANSPORT_TYPE
value: streamable_http
- name: MODE
value: "proxy"
- name: PROXIED_MCP_NAME
value: "fetch"
- name: PROXIED_MCP_SERVER_CONFIG
value: '{"mcpServers":{"fetch":{"command":"uvx","args":["mcp-server-fetch"]}}}'
- name: AUTO_REGISTER_TOOLS
value: "false"
---
apiVersion: v1
kind: Service
metadata:
name: fetch-mcp
spec:
type: ClusterIP
selector:
app: fetch-mcp
ports:
- name: http
port: 8000
targetPort: 8000
使用 kubectl 部署:
kubectl apply -f nacos-mcp-router-proxy-deployment.yaml -n nacos-mcp
- 部署完成后可以看到 fetch-mcp 的接入信息:

- 在 Nacos 控制台中把 fetch 注册为 streamable 协议的 MCP Server 即可。

通过 cherry studio 使用 Router
- 配置 cherry studio MCP 服务器,选择 streamable 协议,地址为 Router 的公网地址


- 使用 Router 自动发现 MCP。

未来规划
Nacos MCP Router 未来要做的事情还有很多,近期重点集中在安全性、稳定性、智能化三个方面:
- 安全性:MCP 统一鉴权管理
- 稳定性:工具调用限流、可观测
- 智能化:虚拟 MCP 构建、MCP 工具筛选、检索准确性优化
欢迎大家一起参与共建,标星:github.com/nacos-group...