Spring AI Alibaba + Nacos 动态 MCP Server 代理方案

简介: 本文介绍如何通过 Spring AI Alibaba MCP 模块,基于 Nacos 的服务注册信息,实现将现有服务无缝转换为 MCP 协议的服务。方案无需修改原有业务代码,支持动态新增或删除 MCP 服务。

1.gif

作者:刘宏宇,Spring AI Alibaba Contributor


文章概览


Spring AI Alibaba MCP 可基于 Nacos 提供的 MCP server registry 信息,建立一个中间代理层 Java 应用,将 Nacos 中注册的服务信息转换成 MCP 协议的服务器信息,以便 MCP 客户端可以无缝调用这些服务。基于这种方案,您无需对原有业务代码进行改造,新增或者删除 MCP 服务(在 Nacos 中)无需重启代理应用。


业务背景


现存业务代码,对外仅提供 http、dubbo 等接口供外部调用。在 AI 智能化改造期间,如果要对这类服务进行改造,涉及到开发、测试、版本发布等一系列流程,改造工作量不容小觑。


所以要考虑有没有什么方式,可以做到按需将现有服务转换成 MCP server 提供能力,且尽可能减少对既有业务代码的改造工作量。


在 Spring AI Alibaba MCP 模块中,基于 Nacos 2.x 版本,实现了存量业务直接注册 MCP server 相关信息到 Nacos 的相关能力;


在近期刚刚发布的 Nacos 3.0 版本中,也提供了管理页面,供开发人员进行手动注册 MCP server 等相关信息。


至此,需要暴露的 MCP server 信息,已经成功注册到了 Nacos,但是 Nacos 本身并没有直接将配置信息转成 MCP server 的能力。所以就需要借助 higress 这类网关的能力,来实现真正的服务暴露。


Spring AI Alibaba MCP 模块的动态代理能力可以理解成是 Higress MCP server 插件的 Java 版本实现,让用户的业务架构更简单,实现 Java 技术栈闭环。


实现原理


附一张启动流程图,目前程序代码兼容了 Nacos 2.x 版本以及 Nacos 3.x 版本的能力。区别在于 Nacos 2.x 版本目前需要通过 configService 来获取 MCP registry 相关信息,而 Nacos 3.x 版本提供了 MCP 相关的 openapi,可以通过调用 api 接口的方式来获取相关信息。



动态的 MCP Server 暴露出来的是标准的 MCP 协议的内容,基于 spring ai + MCP 官方 sdk 的能力,目前 Java 版本 sdk 暂不支持 streamable http。


在请求打到 MCP Server 之后,会将 MCP 协议内容解析之后,转发到注册到 Nacos 的原生 http 之类的服务上。


在协议转换环节,目前代码实现的方案是基于 Higress 提供的调用模板的格式,参见:

https://nacos.io/docs/v3.0/manual/user/mcp-template/?spm=5238cd80.4b5bafc7.0.0.76d91d13ntdJqg


通过 Nacos 提供的 loadbalance 的方式选取实例信息,确定目标 ip:port ,最后组装调用信息,发起实现调用的。


配置及使用流程


配置内容以 Nacos 3.0 版本为例,主要配置过程参考:

https://nacos.io/blog/nacos-gvr7dx_awbbpb_gg16sv97bgirkixe/?source=blog


1. 在 Nacos 中进入 MCP 列表管理功能,创建一个 MCP Server。



2. 在 MCP Server 中添加 tools 相关内容,表明要暴露的 tools 信息



3. 在 tools 信息中,需要配置一个 request template。格式与 higress 目前支持的格式完全兼容



{
  "requestTemplate": {
    "url": "/v3/weather/weatherInfo?key={{ .config.credentials.api_key.data }}",
    "argsToUrlParam": true,
    "method": "GET"
  },
  "responseTemplate": {
    "body": "response value {{ .value }}"
  }
}


4. 在工程中引入相关依赖


<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>

        <!-- Dynamic Mcp Server -->
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-mcp-nacos-dynamic-server</artifactId>
            <version>1.0.0-M8.1-SNAPSHOT</version>
        </dependency>

        <!-- MCP Server WebFlux 支持 -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
            <version>1.0.0-M8</version>
        </dependency>

    </dependencies>


5. 配置 spring.ai.alibaba.mcp.nacos 相关信息


spring:
  ai:
    alibaba:
      mcp:
        nacos:
          server-addr:
      username:
      password:
      dynamic:
        service-namespace: public
        service-group: DEFAULT_GROUP
        service-names: 
        - echo-server


6. 启动服务之后,会读取 Nacos 中持有的 MCP Server 相关配置信息,对外暴露出来,供 MCP client 进行调用



总结


Spring AI Alibaba MCP 联合 Nacos,解决了企业级 AI Agent 的应用与落地场景中 MCP 分布式部署与动态更新的关键问题,其中包括流量的负载均衡、节点变更动态感知等关键解决方案,可阅读 Spring AI Alibaba 发布企业级 MCP 分布式部署方案了解详情。


参考资料


Spring AI Alibaba MCP 动态代理思路和 Higress MCP Server 插件类似且协议转换格式完全兼容:
https://higress.cn/ai/mcp-quick-start/
本方案 MCP 服务动态配置思路与格式源于:
https://nacos.io/blog/nacos-gvr7dx_awbbpb_vksfvdh9258pgddl/


相关文章
|
3月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
3168 67
|
3月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
5110 76
|
3月前
|
人工智能 自然语言处理 安全
从工具到伙伴:AI代理(Agent)是下一场革命
从工具到伙伴:AI代理(Agent)是下一场革命
405 117
|
3月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
1995 58
|
4月前
|
人工智能 Java API
构建基于Java的AI智能体:使用LangChain4j与Spring AI实现RAG应用
当大模型需要处理私有、实时的数据时,检索增强生成(RAG)技术成为了核心解决方案。本文深入探讨如何在Java生态中构建具备RAG能力的AI智能体。我们将介绍新兴的Spring AI项目与成熟的LangChain4j框架,详细演示如何从零开始构建一个能够查询私有知识库的智能问答系统。内容涵盖文档加载与分块、向量数据库集成、语义检索以及与大模型的最终合成,并提供完整的代码实现,为Java开发者开启构建复杂AI智能体的大门。
2517 58
|
3月前
|
人工智能 自然语言处理 供应链
超越聊天:AI代理——下一代人机交互的雏形
超越聊天:AI代理——下一代人机交互的雏形
207 22
|
3月前
|
人工智能 监控 Java
Spring AI Alibaba实践|后台定时Agent
基于Spring AI Alibaba框架,可构建自主运行的AI Agent,突破传统Chat模式限制,支持定时任务、事件响应与人工协同,实现数据采集、分析到决策的自动化闭环,提升企业智能化效率。
Spring AI Alibaba实践|后台定时Agent
|
9月前
|
存储 Kubernetes 安全
Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。
827 50
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
2047 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
1419 139