作者:子葵
Naocs 3.0 中已经支持和 Higress 配合使用实现存量 Http 转化为 MCP 服务,3.0.1 及以上版本在支持存量转化的基础上同时支持同步 Nacos 中已经注册的原生的 MCP 服务,并在 Higress 上进行暴露,完成了对所有 Remote Server 类型的代理访问支持。

通过结合 Spring AI Alibaba,FastMCP 等框架,可以实现应用自动注册到 Nacos 中,并通过 Higress 自动将注册的应用对外暴露给 Client 侧访问。此文档从 0 到 1 完成 Higress + Nacos 配合实现 REST API 转 MCP 和透明代理暴露标准 MCP 服务。
环境准备
创建独立的 Docker 网络
lua
docker network create mcp
Higress 部署
使用 Docker 部署 Higress。
bash
docker run -d --rm --name higress-ai -v ${PWD}:/data \
-p 8001:8001 -p 8080:8080 -p 8443:8443 --network mcp \
higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest
部署 Redis。
css
docker run -d --rm --name higress-redis -p 6379:6379 --network mcp higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/redis-stack-server:7.4.0-v3
配置 MCP Server 的全局参数。
arduino
vi ./configmaps/higress-config.yaml
修改配置文件。
makefile
apiVersion: v1
kind: ConfigMap
metadata:
name: higress-config
namespace: higress-system
creationTimestamp: "2000-01-01T00:00:00Z"
resourceVersion: "1"
data:
higress: |-
mcpServer:
sse_path_suffix: /sse # SSE 连接的路径后缀
enable: true # 启用 MCP Server
redis:
address: higress-redis:6379 # Redis服务地址。这里需要使用本机的内网 IP,不可以使用 127.0.0.1
downstream:
# 以下配置无需修改,此处省略
受 Docker 运行环境的限制,非 Linux 操作系统在修改 yaml 文件之后,需要等待一段时间才能让新的配置生效。如果希望立即生效的话,可以使用以下命令重启 higress-ai 容器:
Nacos 部署
通过 Docker 直接部署。
ini
docker run --name nacos \
-e MODE=standalone \
-e NACOS_AUTH_TOKEN=your_token_base64 \
-e NACOS_AUTH_IDENTITY_KEY=your_key \
-e NACOS_AUTH_IDENTITY_VALUE=your_value \
-p 8081:8080 \
-p 8848:8848 \
-p 9848:9848 \
--network mcp \
-d nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v3.0.1
配置 Higress 连接到 Nacos MCP Registry
在 Higress 服务来源中增加 Nacos 3.x 服务来源。
打开 Higress 控制台,部署主机地址 :8001,点击服务来源添加,并添加 Nacos3.x 服务来源,地址填写 nacos。

服务部署和验证
REST API 转 MCP
进入 Nacos 控制台,访问部署主机 ip:8081,点击 MCP Regsitry 并创建 MCP Server。


添加 Tool,Tool 名称为 get_weather,参数为 city,协议转化配置为:
json
{
"requestTemplate": {
"url": "/v3/weather/weatherInfo?key=yourkey",
"argsToUrlParam": true,
"method": "GET"
}
}
并发布为最新版本, 通过 sse ednpoint 直接访问 http:// 宿主机 host:8080/mcp/amap/sse。

在 3.0.0 基础上,3.0.1 支持在模版中引用 Nacos 配置,并且可以通过动态修改配置实现对模版的动态控制。

通过 Nacos 动态配置能力,动态更新模版中的值,动态轮转后端访问 token,动态控制网关访问后端服务的参数。
新建配置文件 amap_key,分组为 data 的配置,配置内容为:
json
{
"data": "your_key"
}
并在模板中直接进行引用。

保存为最新版本,通过上面的 endpoint 进行访问。

访问成功,修改配置中的 key 的值为非法值。

访问失败。
通过 Spring AI Alibaba 实现自动注册和自动暴露到 Higress
克隆 sping ai alibaba examples 仓库。
bash
git clone https://github.com/springaialibaba/spring-ai-alibaba-examples.git
进入 nacos mcp example 目录。
bash
cd ./spring-ai-alibaba-examples/spring-ai-alibaba-mcp-example/spring-ai-alibaba-mcp-nacos-example/server/mcp-nacos-registry-example
修改配置文件中 Nacos 的用户名密码为自己设置的用户名和密码。
css
vi ./src/main/resources/application.yml
启动项目。
arduino
mvn spring-boot:run
启动之后,在 Nacos 中查看注册的 MCP 服务。

Higress 会自动发现注册的 MCP 服务并产生透明代理规则,可以直接通过 Higress 访问 MCP 服务。通过 inspector 应用调试通过 Higress 暴露的 MCP 服务。

总结
在新版本的 Higress 和 Nacos 中,Higress 通过 Nacos 做统一发现实现存量应用的零改造适配 MCP 协议,并且能够实现 MCP 服务的自动代理,Higress 作为 MCP 网关对外提供统一的 MCP 暴露,Nacos 作为 MCP Regsitry 对 MCP 服务做统一管理,对外提供统一的服务发现、动态变更等能力。