存量服务零改造接入 MCP?Spring AI Alibaba MCP Gateway 架构深度解析

张开发
2026/4/8 12:08:57 15 分钟阅读

分享文章

存量服务零改造接入 MCP?Spring AI Alibaba MCP Gateway 架构深度解析
当 AI 智能体浪潮席卷而来企业面临的最大难题不是如何开发新能力而是如何让跑了多年的老系统也能被 AI 调用。一、困局AI 时代的老系统之痛很多团队在推进 AI 落地时都会遇到一个绕不开的坎公司里那些跑了三五年的核心业务系统——订单服务、用户中心、库存查询——对外暴露的都是标准的 HTTP 或 Dubbo 接口。这些系统稳定运行多年代码结构复杂牵一发而动全身。现在业务方提了个需求把这些服务能力开放给 AI Agent 调用。摆在技术团队面前的有三条路方案改造成本风险周期老系统直接集成 MCP SDK高极高需重新测试发版2-4 周用 Higress 等网关做协议转换中中需运维介入1-2 周独立代理层零侵入老系统低低独立部署1-3 天Spring AI Alibaba MCP Gateway 走的正是第三条路。它的核心思路很清晰用一个独立的 Java 代理应用挡在老系统和 AI 客户端之间老系统什么都不用改代理层负责把 MCP 协议翻译成老系统能听懂的 HTTP/Dubbo 调用。二、MCP Gateway 到底是什么用一句话概括MCP Gateway 是一个协议翻译官 服务注册中心的组合体。它做了两件事向上接收 MCP 客户端的请求暴露标准的 MCP 协议接口向下把 MCP 请求翻译成对后端 HTTP/Dubbo 服务的实际调用而连接上下两层的桥梁是Nacos 的 MCP Server Registry。整个架构可以这样理解┌─────────────────────────────────────────────┐ │ MCP Client (AI Agent) │ │ Claude / Cursor / 自定义客户端 │ └──────────────────┬──────────────────────────┘ │ MCP 协议 ▼ ┌─────────────────────────────────────────────┐ │ Spring AI Alibaba MCP Gateway │ │ ┌───────────────────────────────────────┐ │ │ │ MCP Server (协议接收 解析) │ │ │ └───────────────────┬───────────────────┘ │ │ │ │ │ ┌───────────────────▼───────────────────┐ │ │ │ Protocol Translator (协议转换引擎) │ │ │ │ - 解析 request template │ │ │ │ - 组装 HTTP/Dubbo 调用 │ │ │ │ - 处理 response template │ │ │ └───────────────────┬───────────────────┘ │ │ │ │ │ ┌───────────────────▼───────────────────┐ │ │ │ Nacos Registry (服务发现 负载均衡) │ │ │ └───────────────────┬───────────────────┘ │ └──────────────────────┼──────────────────────┘ │ HTTP / Dubbo ▼ ┌─────────────────────────────────────────────┐ │ 存量业务系统零改造 │ │ 订单服务 / 用户中心 / 库存查询 ... │ └─────────────────────────────────────────────┘最关键的一点老系统完全不知道自己被 AI 调用了。它收到的就是一个普通的 HTTP 请求和以前浏览器或 App 发来的没有任何区别。三、为什么需要 Nacos 做中间层你可能会问直接在 Gateway 里写死后端服务的地址不行吗当然可以但那就失去了动态的意义。引入 Nacos 作为 MCP Server 的注册中心解决了三个实际问题3.1 服务动态上下线老系统扩容、缩容、迁移IP 地址变了怎么办有了 NacosGateway 自动感知实例变化不需要重启不需要改配置。3.2 负载均衡同一个服务有多个实例请求打到哪个Nacos 内置的负载均衡策略自动处理不需要 Gateway 自己实现。3.3 配置集中管理MCP 工具的元信息名称、描述、参数定义存在哪里Nacos 3.0 提供了专门的 MCP Server 管理页面可视化配置一目了然。四、核心机制协议转换是怎么做到的这是整个 Gateway 最核心的部分。4.1 请求模板Request Template当你在 Nacos 中注册一个 MCP Tool 时需要告诉 Gateway收到这个工具的调用请求后应该怎么去调后端服务。这个怎么调的规则就是通过 request template 来定义的{requestTemplate:{url:/api/v3/weather/query?city{{ .args.city }}key{{ .config.credentials.api_key.data }},method:GET,argsToUrlParam:true}}这段配置的含义{{ .args.city }}从 MCP 调用参数中提取 city 字段拼接到 URL 中{{ .config.credentials.api_key.data }}从 Nacos 配置中读取 API Keymethod: GET以 GET 方式发起请求4.2 响应模板Response Template后端服务返回的数据格式和 MCP 客户端期望的格式往往不一致。response template 负责做这个映射{responseTemplate:{body:{\temperature\: {{ .value.temperature }}, \weather\: \{{ .value.weather }}\}}}4.3 完整调用链路一次完整的 MCP 调用经过 Gateway 时经历了以下步骤1. MCP Client 发起 tools/call 请求 ↓ 2. Gateway 接收请求解析出 tool name 和 arguments ↓ 3. 从 Nacos 查找该 tool 对应的 request template ↓ 4. 从 Nacos 获取后端服务的实例列表通过负载均衡选出一个目标实例 ↓ 5. 将 template 中的变量替换为实际参数组装成 HTTP 请求 ↓ 6. 发起 HTTP 调用获取后端服务响应 ↓ 7. 根据 response template 转换响应格式 ↓ 8. 将转换后的结果返回给 MCP Client整个过程对老系统完全透明。五、Nacos 2.x vs 3.x版本差异说明Spring AI Alibaba MCP Gateway 同时兼容 Nacos 2.x 和 3.x 两个版本但获取 MCP 注册信息的方式有所不同能力Nacos 2.xNacos 3.xMCP 注册信息获取通过 ConfigService 读取配置通过 MCP 专用 OpenAPI管理界面无需手动配置提供可视化 MCP 管理页面动态更新支持支持体验更友好建议如果是新项目优先使用 Nacos 3.x管理界面能大幅降低配置出错率。六、实战从零搭建 MCP Gateway6.1 引入依赖在 Spring Boot 项目中添加以下依赖dependencies!-- Spring WebGateway 基础依赖 --dependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactId/dependency!-- Spring AI Alibaba MCP Gateway --dependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-mcp-gateway/artifactIdversion1.0.0.3-SNAPSHOT/version/dependency!-- Nacos MCP Server Starter --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-alibaba-starter-nacos-mcp-server/artifactIdversion1.0.0.3-SNAPSHOT/version/dependency/dependencies6.2 配置文件在application.yml中配置 Nacos 连接信息spring:ai:alibaba:mcp:nacos:server-addr:127.0.0.1:8848namespace:publicusername:nacospassword:nacosgateway:# 指定需要代理的服务名称service-names:-order-service-user-service-weather-api6.3 启动服务mvn spring-boot:run启动后Gateway 会自动连接 Nacos读取已注册的 MCP Server 配置并对外暴露标准的 MCP 端点。6.4 验证使用 MCP Inspector 或任意 MCP Client 连接 Gateway 地址即可看到已注册的 Tools 列表并可以直接调用。七、与 Higress 方案的对比在 MCP 网关选型时很多团队会纠结用 Spring AI Alibaba MCP Gateway 还是 Higress维度Spring AI Alibaba MCP GatewayHigress MCP Server 插件技术栈JavaSpring 生态Go云原生网关部署方式独立 Spring Boot 应用网关插件需部署 Higress协议模板完全兼容 Higress 格式原生支持适用场景Java 技术栈团队轻量级部署已有 Higress 基础设施运维成本低Java 开发者可独立维护需要网关运维能力两者不是替代关系而是互补关系。如果你的团队已经是 Java 技术栈且不想引入额外的网关组件MCP Gateway 是更轻量的选择。八、注意事项与最佳实践8.1 当前限制Java 版本 SDK 暂不支持 Streamable HTTP 传输模式协议转换目前仅支持 HTTP 和 Dubbo 两种后端协议8.2 安全建议敏感信息如 API Key应通过 Nacos 配置中心管理不要硬编码在 template 中Gateway 对外暴露的 MCP 端点建议加上认证鉴权8.3 性能优化合理设置 Nacos 配置监听间隔避免频繁拉取对于高频调用的 Tool可以考虑在 Gateway 层增加缓存九、总结Spring AI Alibaba MCP Gateway 解决了一个非常实际的问题如何让跑了多年的老系统在不改一行代码的前提下也能被 AI Agent 调用。它的架构设计有几个值得借鉴的思路零侵入老系统不需要任何改造降低接入门槛动态感知基于 Nacos 实现服务自动发现运维友好协议兼容Request/Response Template 设计与 Higress 完全兼容迁移成本低Java 闭环让 Java 团队可以在自己熟悉的技术栈内完成 AI 能力建设对于正在推进 AI 落地的企业来说这或许是一条阻力最小的路径。 福利时间如果你正在备战面试或者想要学习其他知识给大家推荐一个宝藏知识库作者整理了一些列 Java 程序员需要掌握的核心知识有需要的自取不谢。知识库地址https://farerboy.com/

更多文章