作者:子葵
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 網路
docker network create mcpHigress 部署
使用 Docker 部署 Higress。
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。
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 的全局參數。
vi ./configmaps/higress-config.yaml修改配置文件。
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 直接部署。
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,協議轉化配置為:
{
"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 的配置,配置內容為:
{
"data": "your_key"
}並在模板中直接進行引用。

保存為最新版本,通過上面的 endpoint 進行訪問。

訪問成功,修改配置中的 key 的值為非法值。

訪問失敗。
通過 Spring AI Alibaba 實現自動註冊和自動暴露到 Higress
克隆 sping ai alibaba examples 倉庫。
git clone https://github.com/springaialibaba/spring-ai-alibaba-examples.git進入 nacos mcp example 目錄。
cd ./spring-ai-alibaba-examples/spring-ai-alibaba-mcp-example/spring-ai-alibaba-mcp-nacos-example/server/mcp-nacos-registry-example修改配置文件中 Nacos 的用戶名密碼為自己設置的用戶名和密碼。
vi ./src/main/resources/application.yml啟動項目。
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 服務做統一管理,對外提供統一的服務發現、動態變更等能力。