写点什么

基于 Nacos + Higress 的 MCP 开发新范式,手把手教程来了!

  • 2025-07-29
    浙江
  • 本文字数:1926 字

    阅读完需:约 6 分钟

作者:子葵


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 mcp
复制代码

Higress 部署

使用 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: v1kind: ConfigMapmetadata:  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 服务做统一管理,对外提供统一的服务发现、动态变更等能力。

发布于: 刚刚阅读数: 2
用户头像

阿里云云原生 2019-05-21 加入

还未添加个人简介

评论

发布
暂无评论
基于 Nacos + Higress 的 MCP 开发新范式,手把手教程来了!_阿里云_阿里巴巴云原生_InfoQ写作社区