Spring AI Alibaba 发布企业级 MCP 分布式部署方案
作者: 影子,刘宏宇,刘军
Spring AI 通过集成 MCP 官方的 java sdk,让 Spring Boot 开发者可以非常方便的开发自己的 MCP 服务,把自己企业内部的业务系统通过标准 MCP 形式发布为 AI Agent 能够接入的工具;另一方面,开发者也可以使用 Spring AI 开发自己的 AI Agent,去接入提供各种能力的 MCP 服务。
在企业级 AI Agent 的应用与落地场景,只是能发布或者调通 MCP 服务是远远不够的,其中一个非常重要的原因就是企业级的系统部署往往都是分布式的,不论是 Agent 还是 MCP Server,作为企业内部的一个个应用,它们都是要部署在多个机器上,要支持分布式的调用(这包括流量的负载均衡、节点变更动态感知等)。这么分析起来,Agent 与 MCP 需要的分布式能力与我们熟知微服务架构基本是一致的,Spring AI MCP 只是解决了 Agent 与 MCP 服务的编码与通信协议问题,我们还需要为 MCP 服务构建起一套地址自动发现、负载均衡调用的体系,这就是 Spring AI Alibaba MCP 整体方案解决的问题,接下来我们将在这篇文章中详细展开。
企业级 MCP 部署需要的分布式能力
市面上有很多公开可用的 MCP 服务,如生活类的高德地图、天气预报等 MCP 服务,这类服务的一个特点是他们都通过公开可访问的域名地址提供服务,因此对于消费端来说只需要配置访问地址即可使用。
区别于此类公共服务,Spring AI Alibaba MCP 解决的是企业内部 MCP 服务的部署与访问架构问题,接下来我们通过一个 Agent 的开发示例,一起来看一下 Spring AI Alibaba MCP 的整体架构。
在整个系统中,我们有一个使用 Spring AI Alibaba 开发的 MCP Server 应用,它为企业内提供机票预订的服务,该应用部署在多个实例,在实例启动过程中,Spring AI Alibaba 框架会将当前 IP 实例、工具列表等元数据注册到 Nacos,机票助手是一个基于 Spring AI Alibaba 开发的智能体应用,借助 Spring AI Alibaba 封装的分布式 MCP 能力,机票助手能够动态感知 MCP 订票系统的实例变化、工具变化,并基于内置的负载均衡策略对多个 MCP 实例节点发起调用。
- 企业内部订票服务是一个独立的 MCP Server 应用,使用 Spring AI Alibaba 框架开发,具备自动注册 MCP 实例与元数据到 Nacos 注册中心的能力,目前同时兼容 Nacos2 与 Nacos3。
- 机票助手 Agent 使用 Spring AI Alibaba 框架开发,作为 MCP Client 可以自动感知下游 MCP 服务实例的动态变化,动态感知 MCP 服务元数据的变化(如工具增加、参数更新、描述更新等),能够在保证负载均衡的情况下调用后端实例。
适用业务场景
对于任何需要在企业内部构建 MCP 业务系统的开发者,都可以使用 Spring AI Alibaba MCP。
接下来,我们从企业现实情况出发,分析在不同场景下,应该如何发布自己的 MCP 服务,并将 Agent 接入 MCP 服务:
- 企业内存在大量的已有微服务应用、HTTP 接口,需要将这些应用或接口发布为 MCP 服务。
- 无需考虑存量应用,直接开发全新的 MCP 服务。
通过 MCP 接入存量业务系统
对于存量应用或接口的接入,我们推荐使用增加代理应用的模式实现平滑接入,如下架构图所示,在存量应用和 Agent 之间部署一个新应用,这个应用主要有两个职责:
- 作为 server,该应用是一个标准的 MCP server,对外发布 Agent 可以使用的 MCP Tool。
- 作为 client,该应用负责转发 MCP 请求到后端应用,它使用 HttpClient 或 Dubbo 消费后端的存量应用。
以下是一个代码片段,展示如何在新开发的 MCP Server 应用中定义 MCP 服务并代理转发到后端微服务(rest 或 dubbo):
@Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } // ...... @Autowired private RestTemplate restTemplate; @Tool(description = "获取指定订单号的订单详情") public Order getAirQuality(@ToolParam(description = "订单号") String orderId) { return restTemplate.getForObject("http://order-service/order?id" + orderId, Order.class) }
其中,restTemplate
基于 Spring Cloud Alibaba 的服务发现能力,可以动态发现后端 order-service
服务与实例地址。而 @Tool
和 @ToolParam
注解将发布为可被 Agent 使用的 MCP 工具。
开发全新 MCP
如果您不需要考虑存量的应用或服务,则整体会更简单,只需要使用 Spring AI Alibaba MCP 开发一个 MCP server,并将业务逻辑发布为 MCP tool 就可以了。
以下是使用 Spring AI Alibaba 开发的整体架构图:
完整开发指南
以下示例完整源码地址:
首先,您需要安装部署 Nacos,访问 Nacos Server 控制台,创建 MCP 服务专属的命名空间 nacos-default-mcp
。
注册 nacos-default-mcp
命名空间后,记住命名空间 ID:9ba5f1aa-b37d-493b-9057-72918a40ef35
开发 Spring AI Alibaba MCP Server
pom.xml 文件
添加如下 spring-ai-alibaba-starter-nacos-mcp-server
关键 starter 依赖到项目中:
<properties> <spring-ai.version>1.0.0-M8</spring-ai.version> <ai-alibaba.version>1.0.0-M8.1-SNAPSHOT</ai-alibaba.version> </properties> <dependencies> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-starter-nacos-mcp-server</artifactId> <version>${ai-alibaba.version}</version> </dependency> </dependencies>
修改 application.yml
文件
在 application.yml
文件中,增加 Nacos 地址配置,这样应用就可以连接到 Nacos Server 并实现 MCP 地址与元数据自动注册。
server: port: ${SERVER_PORT:19000} spring: application: name: mcp-server-provider --- spring: main: banner-mode: off ai: mcp: server: name: mcp-server-provider version: 1.0.1 sse-message-endpoint: /mcp/messages_ type: SYNC alibaba: mcp: nacos: enabled: true server-addr: 127.0.0.1:8848 username: nacos password: nacos registry: service-namespace: 9ba5f1aa-b37d-493b-9057-72918a40ef35 _# 调试日志_ logging: level: io: modelcontextprotocol: client: DEBUG spec: DEBUG server: DEBUG
这里注意两个配置:
- MCP Server 的服务名称:mcp-server-provider2. MCP 的命名空间 ID:9ba5f1aa-b37d-493b-9057-72918a40ef35
效果演示
打开 Nacos 控制台,可以看到 MCP Server 自动注册服务与实例信息。
打开 Nacos 控制台,可以查看 MCP Server 自动注册上来的元数据信息。
开发 Spring AI Alibaba MCP Client
pom.xml 文件
<properties> <spring-ai.version>1.0.0-M8</spring-ai.version> <ai-alibaba.version>1.0.0-M8.1-SNAPSHOT</ai-alibaba.version> </properties> <dependencies> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-starter-nacos-mcp-client</artifactId> <version>${ai-alibaba.version}</version> </dependency> </dependencies>
这里需要在应用中新增引入 spring-ai-alibaba-starter-nacos-mcp-client
依赖。
application.yml 文件
在 application.yml
文件中,增加 Nacos 地址配置,这样应用就可以连接到 Nacos Server 并实现 MCP 地址与元数据自动发现。
server: port: 8080 spring: application: name: mcp-client-webflux ai: openai: api-key: ${DASHSCOPE_API_KEY} base-url: https://dashscope.aliyuncs.com/compatible-mode chat: options: model: qwen-max alibaba: mcp: nacos: enabled: true service-namespace: 9ba5f1aa-b37d-493b-9057-72918a40ef35 # nacos的命名空间ID server-addr: 127.0.0.1:8848 username: nacos password: nacos client: sse: connections: server1: mcp-server-provider # 对应的MCP Server服务名 mcp: client: enabled: true name: mcp-client-webflux version: 0.0.1 initialized: true request-timeout: 600s nacos-enabled: true type: sync toolcallback: enabled: true root-change-notification: true # 调试日志 logging: level: io: modelcontextprotocol: client: DEBUG spec: DEBUG
请注意,我们需要在配置中指定要连接的 MCP 服务,这样 Client 将只订阅该服务相关地址与元数据的更新。
client: sse: connections: server1: mcp-server-provider # 对应的MCP Server服务名
使用方式
MCP Client 注入
@Autowired private List<LoadbalancedMcpSyncClient> mcpClients; // For sync client // OR @Autowired private List<LoadbalancedMcpAsyncClient> mcpClients; // For async client
ToolCallbackProvider 注入
# sync类型,Bean名称为"loadbalancedSyncMcpToolCallbacks" @Autowired private LoadbalancedSyncMcpToolCallbackProvider toolCallbackProvider; ToolCallback[] toolCallbacks = toolCallbackProvider.getToolCallbacks(); // OR # Async类型,Bean名称为"loadbalancedMcpAsyncToolCallbacks" @Autowired private LoadbalancedAsyncMcpToolCallbackProvider toolCallbackProvider; ToolCallback[] toolCallbacks = toolCallbackProvider.getToolCallbacks();
效果演示
MCP Client 注入
ToolCallbackProvider 注入
总结
Spring AI Alibaba MCP 联合 Nacos,解决了企业级 AI Agent 的应用与落地场景中 MCP 分布式部署与动态更新的关键问题,其中包括流量的负载均衡、节点变更动态感知等关键解决方案。
Nacos3 中的 MCP 核心能力还在持续演进中,接下来,Spring AI Alibaba 计划结合 Nacos3 mcp-registry 与 mcp-router 能力,构建更灵活强大的 Agent 开发体验。
- 查看完整示例源码:
- Spring AI Alibaba 官网:
- Github 项目仓库:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
被拒两次后,我彻底重构了 iOS 上架流程|Appuploader复盘实录
有一段时间,我对“App Store 审核”三个字产生了条件反射。不是因为怕写代码,而是因为我太怕看见“Your app has been rejected”那封邮件了。 作为跨平台独立开发者,我从构建到发布全程一个人搞定。项目上线那天,本应是收获成就感的节点,结果因为 App Store 的严格机制,被迫一拖再拖。 我从第一次被拒、第二次被拒,再到最终一次性通过审核,过程中建立起了一整套标准化的上架发布流程。而让我能够真正把流程跑顺的关键,是明确每一个错误细节,并选对工具执行流程。这其中,Appuploader是我上架链条中最依赖的核心工具之一。 这篇文章就来讲讲我从被拒中学到了什么,具体怎么解决,以及为什么选择使用 Appuploader。 第一次被拒:截图问题隐藏杀机 收到 Apple 审核邮件时我一头雾水,提示“App Previews or Screenshots do not accurately reflect the app in use”,大意是截图和实际应用不一致。 我反复对比后才发现几个“看起来不是错误但就是不合规”的地方: 我把 iPhone 6.7 英寸设备的...
- 下一篇
80% 自动化已在路上!5款AI测试产品横评,测试总监如何弯道超车?
在软件定义商业的时代,测试体系的智能化升级已成为企业数字化转型的核心战场。对于IT 测试负责人,正面临三重现实困境:手工测试占比超 50% 导致的交付效率瓶颈、跨平台脚本维护成本年增 30% 的技术债务压力,以及传统缺陷分析无法支撑敏捷开发的决策滞后。这些挑战不仅制约测试部门从 "成本中心" 向 "价值中心" 的转型,更直接影响企业业务创新速度。Gartner预测,到2025年,80%以上的软件测试将通过AI驱动的自动化完成。AI技术突围的窗口期已然到来。 对于测试总监而言,AI 技术的引入不仅是一次工具层面的革新,更是测试体系战略转型的关键契机。面对 Gartner 预测的行业变革浪潮,选择适配企业业务场景的 AI 测试合作伙伴与产品,已成为突破传统测试困局、抢占数智化竞争先机的核心路径。经过盘点,目前,市面主流的几款AI测试产品,各有优势,为不同企业测试体系升级提供了多样选择。 五大技术方案深度解析:适配不同测试战略的选型指南 全栈智能化标杆:Testin 云测 Testin XAgent 智能测试系统 核心价值分析:Testin XAgent 基于前沿 AI 智能体技术,实现...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8