一、Spring AI  Java 生态中的地位

Spring AI  Spring 生态系统中的新成员,旨在将人工智能能力引入 Java 开发者的世界。Spring 框架在企业级Java 开发中占据统治地位,数以百万计的开发者使用 Spring Boot 构建微服务和 Web 应用。Spring AI 继承了Spring 的设计哲学,提供了统一的大模型访问接口、函数调用支持、提示词模板、输出解析等能力。

然而,Spring AI 的工具调用生态相对封闭。开发者需要按照 Spring AI  FunctionCallback 接口编写函数,这些函数只能在 Spring AI 应用内部使用。一个为 Spring AI 开发的函数,无法被 LangChain  AutoGen Agent 直接调用。MCP 的介入可以打破这种生态孤岛。

通过将 Spring AI 的函数抽象与 MCP  Skill 抽象进行桥接,Java 开发者可以一次开发 Skill,被所有支持 MCP  Agent 框架使用。反过来,Spring AI 应用也可以调用整个 MCP 生态中的海量 Skill

本章将探讨 Spring AI  MCP 的深度集成,包括函数调用与 MCP Skill 的映射、使用 Spring Boot 构建 MCP Skill 服务器、在 Spring Cloud 微服务架构中集成 MCP 网关,以及实战案例。

二、Spring AI 的函数调用机制

 Spring AI 中,ChatClient 是核心接口,开发者通过它与大模型交互。函数调用是 Spring AI 的重要特性,允许大模型在推理过程中调用注册的 Java 函数。

函数注册的核心是 FunctionCallback 接口。开发者实现这个接口,提供函数名称、描述、输入参数的模式、执行逻辑。ChatClient 在构建时可以通过 defaultFunctions  defaultFunctionCallbacks 方法注册函数。

当用户请求发送给 ChatClient 时,Spring AI 将函数列表放入请求中。大模型决定调用哪个函数以及传入什么参数。Spring AI 执行函数调用,将结果附加到对话上下文中,让模型继续生成最终响应。

这种机制与 MCP 的调用模型非常相似。两者都是模型决定调用什么,框架负责执行。因此,将 MCP Skill 映射为 Spring AI 函数是非常自然的。

三、适配器模式:将 MCP Skill 注册为 Spring AI 函数

最简单的集成方式是开发一个适配器,将 MCP Skill 包装为 Spring AI  FunctionCallback

适配器的工作原理

开发者创建一个 MCPFunctionCallback 类,实现 FunctionCallback 接口。在构造函数中,从 MCP Skill 规范中读取名称、描述、输入参数模式。在 call 方法中,接收 Spring AI 传入的参数,构造 MCP Action,通过 MCP 客户端发送到 Peta 网关,等待响应,将 ActionResult 转换为字符串返回。

为了简化开发,可以创建一个通用适配器工厂。工厂连接到 Peta 网关,扫描可用的 Skill 列表。对于每个Skill,自动创建对应的 FunctionCallback 实例。开发者只需要配置 Skill 名称,适配器自动处理参数映射和结果转换。

适配器的优势

适配器模式实现简单,MCP 生态中的现有 Skill 可以零修改被 Spring AI 应用使用。Java 开发者不需要理解MCP 协议的细节。适配器代码可以复用,减少重复开发。

适配器的局限

适配器模式每次调用都需要通过适配器转换,有额外开销。流式调用、进度通知等高级功能难以实现。泛型类型的参数映射可能复杂。

四、原生集成:Spring AI 直接支持 MCP Skill

更好的集成方式是让 Spring AI 原生支持 MCP Skill。这意味着 Spring AI 内部增加 MCP 函数加载器。

MCP 函数加载器

Spring AI 增加一个 MCP 函数加载器。加载器连接到 Peta 网关,从 Skill 注册表中读取可用的 Skill 列表。对于每个 Skill,加载器自动创建一个 FunctionCallback 对象,使用 Skill 规范中的元数据填充函数的名称、描述、参数模式。

加载器可以集成到 Spring  ApplicationContext 中,作为 Bean 自动注册。开发者只需要在配置文件中指定Peta 网关地址,所有授权 Skill 自动可用。

MCP 调用执行器

 Spring AI 决定调用一个 MCP Skill 时,执行器直接构造 MCP Action,通过 MCP 协议发送,处理响应。执行器支持同步调用、异步调用、流式调用。执行器将 MCP 的错误码映射为 Spring 的异常类型。

五、使用 Spring Boot 构建 MCP Skill 服务器

Spring Boot 是构建 Java 微服务的事实标准。开发者可以使用 Spring Boot 将任何业务逻辑封装为 MCP Skill

Skill 服务器架构

一个 MCP Skill 服务器是一个 Spring Boot 应用,暴露 HTTP 端点。端点接收 MCP Action 请求,解析参数,执行业务逻辑,返回 ActionResult

Spring Boot 的自动配置可以大大简化 Skill 开发。开发者只需要编写一个普通的 Java 服务类,使用注解标记方法为 Skill。框架自动生成 MCP 接口规范,处理协议转换。

示例示意

开发者创建一个 Spring Boot 应用,添加 MCP Skill 依赖。定义一个订单服务类,使用 @McpSkill 注解标记方法。方法参数使用 @McpParam 注解描述。框架自动扫描这些注解,生成 Skill 规范,注册到 Peta 网关。

Skill 的生命周期管理

Spring Boot 应用启动时,自动向 Peta 网关注册 Skill。应用关闭时,自动注销。框架还支持健康检查端点,Peta 网关可以探测 Skill 的健康状态。支持配置化超时、重试、限流等治理策略。

六、Spring Cloud 微服务中的 MCP 集成

在微服务架构中,MCP 网关可以作为统一的 API 入口,所有 Skill 调用都经过网关。

网关即入口

 Spring Cloud 架构中,MCP 网关可以部署为网关层的一个服务。所有 Agent  Skill 调用请求首先到达 MCP 网关。网关执行认证、授权、审计后,将请求路由到后端的 Skill 服务。

Skill 服务可以是各种 Spring Boot 应用,部署在不同的微服务实例中。MCP 网关支持与 Spring Cloud 的服务发现集成,如 EurekaConsulNacos。新部署的 Skill 服务自动注册到服务发现,MCP 网关自动发现并路由请求。

 Spring Cloud Gateway 集成

Spring Cloud Gateway  Spring Cloud 生态中的网关组件。MCP 网关可以与其集成,共享路由配置和过滤器链。认证、限流、熔断等能力可以统一配置。

分布式追踪集成

Spring Cloud Sleuth 提供了分布式追踪支持。MCP 网关可以与 Sleuth 集成,自动传递 Trace IDSkill 服务通过 MDC 获取 Trace ID,记录到日志中。调用链可以跨多个微服务追踪。

七、Peta  Spring AI 的集成实践

Peta 提供了与 Spring AI 集成的官方支持。

安装与配置

 Spring Boot 项目中添加 peta-spring-boot-starter 依赖。在 application.yml 中配置 Peta 网关地址、认证凭证。Spring Boot 自动配置 MCP 客户端和函数加载器。

代码示例示意

开发者创建一个 ChatClient Bean,注入 MCP 函数加载器。配置中指定自动加载的 Skill 列表或全部加载。调用chatClient.call 时,Spring AI 自动将 MCP Skill 作为可用函数提供给大模型。

Skill 服务开发

开发者创建一个 Spring Boot 应用,添加 MCP Skill 依赖。使用 @McpSkill 注解标记方法。应用启动后自动注册到 Peta 网关。其他 Spring AI 应用可以调用这个 Skill

性能数据

 Peta 的内部测试中,使用 Spring Boot 构建的 MCP Skill 服务器,单实例可处理每秒数千次调用。与 Spring AI 的原生集成延迟比适配器模式降低约百分之二十。

八、典型实战案例:企业订单系统

系统背景

一家电商企业有一个现有的订单系统,基于 Spring Boot 构建。订单系统提供了查询订单、创建订单、取消订单、退款等 API。企业希望让 AI Agent 能够调用这些 API

Skill 封装

开发者在订单服务中添加 MCP Skill 注解。订单查询方法被标记为 @McpSkill(name = "query_order", description = "查询订单详情")。退款方法被标记为 @McpSkill(name = "refund", description = "申请退款"),并声明副作用为写操作,需要审批。

Skill 注册

订单服务启动时,自动向 Peta 网关注册这些 Skill。网关根据 Skill 规范生成访问策略。

Agent 调用

企业使用 Spring AI 构建客服 AgentAgent  ChatClient 配置了 MCP 函数加载器,连接到 Peta 网关。客服Agent 在对话中自动调用订单查询 Skill 和退款 Skill

治理效果

退款 Skill 需要审批,Agent 发起调用后,Peta 网关自动挂起请求,等待审批人在 Peta Desk 中批准。审批通过后,退款自动执行。所有调用记录在审计日志中,满足合规要求。

九、小结

本章的核心结论可以总结为以下几点。

第一,Spring AI  Java 生态中接入 AI 能力的标准框架。其函数调用机制与 MCP Skill 调用高度契合。

第二,适配器模式可以快速将 MCP Skill 包装为 Spring AI 函数,适合快速验证和原型开发。

第三,原生集成让 Spring AI 直接支持 MCP Skill,包括自动加载、同步异步调用、流式调用。

第四,使用 Spring Boot 构建 MCP Skill 服务器非常便捷。开发者只需添加注解,框架自动处理协议转换和服务注册。

第五,在 Spring Cloud 微服务架构中,MCP 网关可以作为统一的 API 入口,与服务发现、网关、分布式追踪集成。

第六,Peta 提供了 Spring Boot Starter,支持自动配置、注解驱动开发、与 Spring AI 原生集成。

第七,实战案例显示,使用 Spring Boot + MCP 可以将现有 Java 业务系统快速暴露为 AI Agent 可调用的Skill,治理能力开箱即用。

在下一章,我们将讨论 Semantic Kernel  MCP 的深度集成——微软 Agent 框架的 MCP 实践。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐