在上一篇博客《使用 Spring AI Alibaba MCP 结合 Nacos 实现企业级智能体应用》中,我们探讨了如何利用 Nacos 实现 MCP Server 的分布式注册与发现,解决了服务的高可用问题。
然而,在真实的企业环境中,我们面临着另一个巨大的挑战:存量系统 。企业内已经存在大量的微服务应用,它们对外提供标准的 HTTP/RESTful 接口(如订单服务、天气服务、用户服务等)。如果为了让 AI 调用这些能力,要求开发人员去修改原有的业务代码,添加
@Tool注解,重新打包发布,这不仅工作量巨大,还引入了回归测试的风险。有没有一种方案,可以零代码改造 ,直接将现有的 Restful 服务"变身"为 MCP Server?
答案是肯定的。本文将介绍 Spring AI Alibaba MCP Gateway。它是一个中间代理层,能够基于 Nacos 的服务注册信息,将普通的 Restful 服务动态转换为标准的 MCP 协议服务。
Spring AI Alibaba MCP Gateway 的设计初衷就是为了解决存量应用的 AI 化改造问题。它的核心价值在于:
- 零代码改造:无需修改原有业务代码,无需引入任何 AI 相关的 SDK。
- 协议转换:自动将 MCP 协议请求转换为对后端 HTTP/Dubbo 服务的调用。
- 动态更新 :在 Nacos 中新增或删除 MCP 服务配置,网关端无需重启即可实时感知。
我们将通过一个完整的案例,演示如何将一个普通的天气查询 Restful 服务,通过 MCP Gateway 暴露给 AI 客户端。
1. 准备存量服务:Restful 天气服务
首先,我们模拟一个已有的微服务应用 mcp-nacos-restful。这个应用非常简单,它只负责提供两个标准的 RESTful 接口(改造前面的工具):
GET /weather/quality: 获取空气质量GET /weather/forecast: 获取天气预报
该应用已经按照常规 Spring Boot 微服务的方式,注册到了 Nacos 注册中心。

注意:这个服务完全不知道 MCP 的存在,它只是一个普通的 Web 应用。
2. 创建 MCP 网关
接下来,我们创建一个全新的 Spring Boot 应用作为 MCP Gateway。它的职责是:作为 MCP Server 面对 AI 客户端,同时作为 HTTP Client 面对后端的 Restful 服务。
Maven 依赖
在 pom.xml 中引入核心依赖。我们需要 spring-ai-alibaba-starter-mcp-gateway 来启用网关功能。
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MCP Server WebMvc 支持 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
<version>1.1.2</version>
</dependency>
<!-- Spring AI Alibaba MCP Gateway 核心依赖 -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-mcp-gateway</artifactId>
<version>1.1.2.2</version>
</dependency>
<!-- DashScope 依赖,用于后续连接大模型 -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
<version>1.1.2.2</version>
</dependency>
</dependencies>
配置文件
在 application.yml 中,我们需要配置两件事:一是网关自身的 MCP 服务信息,二是 Nacos 的地址以便发现后端服务。
yaml
spring:
application:
name: mcp-gateway-server
ai:
mcp:
server:
name: mcp-nacos-gateway-example
version: 1.0.0
enabled: true
protocol: sse
type: sync
instructions: "Nacos MCP Gateway - 聚合多个 MCP Server 的工具网关"
sse-message-endpoint: /mcp/message
capabilities:
tool: true
resource: false
prompt: false
completion: false
dashscope:
api-key: "sk-***********"
alibaba:
# MCP Gateway 配置
mcp:
gateway:
enabled: true
registry: nacos
# 配置要发现和聚合的 MCP Server 服务名称
nacos:
service-names:
- mcp-nacos-restful # SSE 协议的 MCP Server
# Nacos 注册中心配置
nacos:
server-addr: 192.168.0.201:8848
namespace: 0178b20f-f8c5-4182-9d41-f744f6328c48
username: nacos
password: z123
logging:
level:
com.alibaba.cloud.ai.mcp: DEBUG
3.在 Nacos 控制台配置 MCP Server
这是最关键的一步。虽然网关已经启动并监听了 Nacos,但它还不知道如何将 mcp-nacos-restful 的 HTTP 接口映射为 MCP 工具。我们需要在 Nacos 控制台的 MCP 管理 页面进行配置。
创建 MCP Server :在 Nacos 中新建一个 MCP Server,服务名填写 mcp-nacos-restful。

添加 Tools :在该 Server 下添加工具定义。
我们需要配置两个工具,分别对应后端的两个接口:
工具 1:getAirQuality


工具 2:getWeatherForecastByLocation


配置完成后,MCP Gateway 会感知到这些配置,并自动将其转换为 MCP 协议下的可用工具。
4.改造 MCP Client 客户端
最后,我们需要一个 AI 客户端来调用这个网关。与上一篇博客不同,这次我们不再需要 distributedSyncMcpClient,因为网关本身就是标准的 MCP Server。
依赖调整:
- 移除
spring-ai-alibaba-starter-mcp-distributed - 移除
json-schema-validator
YAML 配置调整 :
Client 只需要直连网关的地址即可,无需感知后端的 Nacos 细节。
yaml
spring:
application:
name: mcp-client
main:
web-application-type: none
ai:
dashscope:
api-key: "sk-********"
mcp:
client:
enabled: true
name: my-mcp-client
version: 1.0.0
request-timeout: 30s
type: sync
sse:
connections:
server1:
url: http://localhost:8085/ # 直连网关地址
我们可以直接使用标准的 ToolCallbackProvider,因为网关屏蔽了底层的复杂性。
java
@Bean
public CommandLineRunner predefinedQuestions(ChatClient.Builder chatClientBuilder,
ToolCallbackProvider tools, // 使用默认的 Provider
ConfigurableApplicationContext context) {}
5.测试与效果
启动所有服务:
- Restful 服务 (
mcp-nacos-restful) - MCP 网关 (
mcp-gateway-server) - MCP 客户端 (
mcp-client)
观察日志:



通过 Spring AI Alibaba MCP Gateway,我们成功实现了一个非侵入式的 AI 集成方案:
- 存量应用:完全不需要改动代码,继续提供标准的 Restful 接口。
- 网关层:利用 Nacos 作为配置中心,动态管理工具映射,实现了"配置即上线"。
- 客户端:对 AI 而言,网关就是一个标准的 MCP Server,调用体验丝滑。
这种架构非常适合企业内部的旧系统改造,让传统的微服务架构能够以最小的成本接入大模型生态。