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

news/2025/10/5 17:14:03/文章来源:https://www.cnblogs.com/tlnshuju/p/19126728

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

2025-10-05 16:58  tlnshuju  阅读(0)  评论(0)    收藏  举报

作者:刘宏宇,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。

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

  1. 在 tools 信息中,需要配置一个 request template。格式与 higress 目前支持的格式完全兼容
{"requestTemplate": {"url": "/v3/weather/weatherInfo?key={{ .config.credentials.api_key.data }}","argsToUrlParam": true,"method": "GET"},"responseTemplate": {"body": "response value {{ .value }}"}
}
  1. 在工程中引入相关依赖
org.springframework
spring-web
com.alibaba.cloud.ai
spring-ai-alibaba-mcp-nacos-dynamic-server
1.0.0-M8.1-SNAPSHOT
org.springframework.ai
spring-ai-starter-mcp-server-webflux
1.0.0-M8
  1. 配置 spring.ai.alibaba.mcp.nacos 相关信息
spring:ai:alibaba:mcp:nacos:server-addr:username:password:dynamic:service-namespace: publicservice-group: DEFAULT_GROUPservice-names:- echo-server
  1. 启动服务之后,会读取 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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

trick 小记

备忘录数据范围可以 \(n^2\) 算法且不考虑顺序的情况下可以连续段 dp要仔细检查数组是否开小,线段树最少 4 倍,建边的数组看条数,一般情况下开 2m,注意看数据范围时 \(k\times 10^x\) 的形式,一数组两用直接开到 …

公司网站维护方案网页设计怎么做网站

Vue3 新项目默认工程文件理解 文章目录 Vue3 新项目默认工程文件理解0、工程文件结构图1、main.ts2、index.html源文件编译后 3、App.vue4、.d.ts 文件作用 0、工程文件结构图 1、main.ts // 引入 createApp 函数 import { createApp } from vue // 引入 style.css 文件&#…

day17 课程()

day17 课程()课程: 17.1 了解异常------------------------------------------------ 执行后17.2 体验异常------------------------------------------------ 执行后17.3 了解异常类型---------------------------…

wordpress移动到回收站时发生错误.wordpress能做app

Charles是在您自己的计算机上运行的Web代理(HTTP代理 / HTTP监视器),您的网络浏览器(或任何其他Internet应用程序)配置为通过Charles访问Internet,Charles可以为您记录并显示发送和接收的所有数据。 Http抓…

NKOJ全TJ计划——NP11744

题目内容 [20241017] Min-max 容斥 小 M 在\(\pi\) 岁时学会了 min-max 容斥。 给定一张 \(n\)个点\(m\)条边的边带权简单连通无向图。现需要将其的每个结点染成黑色或白色。 定义两个结点的距离为这两点间所有路径的边…

ROIR 2025

ROIR 2025 https://www.luogu.com.cn/problem/list?type=luogu&page=1&tag=479|62 二维蚱蜢 先贪心地往右上跳,跳到某维坐标与终点相同,再横着或竖着跳。 不完全质数 意义不明。 显然满足条件的数的形态是,…

网站上线前要做哪些准备如何做营销策划方案

笔记整理 | 谭亦鸣,东南大学博士生来源:EACL’21链接:https://www.aclweb.org/anthology/2021.eacl-main.35.pdf概述与动机本文提出了一种基于递归超图的知识图谱问答方法RecHyperNet,作者认为人回答问题时倾向于在推理过程中递归…

网站建设很简单f2fpay wordpress

1.理论知识:HCIE认证首先要求考生具备扎实的云计算理论基础,包括云计算的基本概念、架构、关键技术、安全管理等方面的知识。考生需要深入理解云计算的核心原理,以及华为云计算产品的特点和优势。 2.实践技能:除了理论知识外&…

贵阳免费网站建设spam free wordpress

思维导图: 不同设备号文件绑定:

网站框架图怎么做我想做微商怎么加入

在编写汉诺塔实验的时候,自己设计了一个全局的计数变量count用来计数移动次数,结果运行的时候报了这样的错误,错误也锁定在全局变量的定义那里。 没想通为什么会有语法错误,去查了一下发下是c的库函数有关键字count,所…

实用指南:万兴PDF手机版

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

python编写AI生常用匡架及使用指令集

以下是Python中常用的AI相关框架及其使用指令集,涵盖了机器学习、深度学习、自然语言处理等多个领域: 1. TensorFlow 简介:谷歌开发的开源深度学习框架,支持多种平台和语言。 安装指令: pip install tensorflow …

10月5日在图书馆的3/4天

10月5日在图书馆的3/4天刚过4点,想起来我好像成功开通了博客,正巧做题也累了,那就不摘下带上的耳机了,写写题解吧。 1来看看第一道题吧 https://www.luogu.com.cn/problem/P1990 覆盖墙壁 题目大概 就是给你一面N…

泉州微信网站建设公司百度文库个人登录

Keepass2Android密码管理能帮助我们保存各类网站、应用的密码,大家提前设置好之后每次输入密码的时候只需要输入很少的字符就能快速解锁密码,为大家的日常使用提供方便。软件特色* 几乎可与所有的Android 的浏览器结合使用 (见下文)*快速解锁&#xff1a…

基于原生JavaScript前端和 Flask 后端的Todo 应用 - 详解

基于原生JavaScript前端和 Flask 后端的Todo 应用 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

怎么样自学做网站wordpress框架简介

WampServer集成环境安装与配置实习到了第三个礼拜了,原来我们小组是以开发php为主的,我们项目的服务器也是用php做的,因此我觉得很有必要学一下php的相关知识,首先当然是搭建环境了,写篇博客分享下经验. 目录: 一.软件下载 二 ...C++与Lua交互(三)通过上一篇…

1005模拟赛总结

代码源场。T1是猜结论题没什么好说的,T2需要把摄像头的应用转化一下,不能直接套,并且T2没有对拍导致挂了35分,T4是数据结构题,场上想到了离线,但是线段树维护的值比较巧妙,需要多练。场上还想了一个用平衡树+随…

详细介绍:【AI论文】R2R:通过小型与大型模型之间的令牌路由高效导航发散推理路径

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

TDengine 运维——巡检应用(安装前预配置)

TDengine 运维——巡检应用(安装前预配置)2025-10-05 16:47 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…