此版本仍在开发中,尚未被视为稳定版。为了获取最新的快照版本,请使用Spring AI 1.1.3spring-doc.cadn.net.cn

模型上下文协议(MCP)

初次接触MCP? 请从我们的MCP入门指南开始,了解快速介绍和实战示例。

模型上下文协议(MCP)是一种标准化协议,使AI模型能够以结构化方式与外部工具和资源进行交互。 把它想象成连接AI模型与现实世界的桥梁——使它们能够通过一致的接口访问数据库、API、文件系统和其他外部服务。 它支持多种传输机制,以适应不同环境的灵活性。spring-doc.cadn.net.cn

MCP Java SDK(模型上下文协议的Java实现)提供了模型上下文协议的Java实现,通过同步和异步通信模式支持与AI模型及工具的标准交互。spring-doc.cadn.net.cn

Spring AI 通过专用的 Boot Starters 和 MCP Java 注解全面支持 MCP,使得构建能够无缝连接到外部系统的复杂人工智能应用程序变得前所未有的简单。 这意味着 Spring 开发者可以参与 MCP 生态系统的两端——创建使用 MCP 服务器的人工智能应用,以及构建向更广泛的人工智能社区暴露基于 Spring 服务的 MCP 服务器。 使用 Spring Initializer 初始化带有 MCP 支持的人工智能应用。spring-doc.cadn.net.cn

Java SDK架构

本节提供MCP Java SDK架构的概述。 关于Spring AI MCP集成,请参阅Spring AI MCP Boot Starters文档。

Java MCP 实现遵循三层架构,以分离关注点,确保可维护性和灵活性:spring-doc.cadn.net.cn

MCP Stack Architecture
图1. MCP堆栈架构

客户端/服务器层(顶层)

顶层负责主要的应用逻辑和协议操作:spring-doc.cadn.net.cn

会话层(中层)

中间层负责管理通信模式并维护连接状态:spring-doc.cadn.net.cn

传输层(底部)

最底层负责实际的消息传输和序列化处理:spring-doc.cadn.net.cn

MCP客户端

MCP客户端是模型上下文协议(MCP)架构中的一个关键组件,负责与MCP服务器建立及管理连接。它实现了协议的客户端部分,处理包括:spring-doc.cadn.net.cn

Java MCP Client Architecture
MCP 服务器

MCP 服务器是模型上下文协议(MCP)架构中的基础组件,为客户端提供工具、资源和功能。它实现了该协议的服务器端部分,负责:spring-doc.cadn.net.cn

Java MCP Server Architecture

有关详细实施指导,使用低级MCP客户端/服务器API,请参阅MCP Java SDK文档。 对于使用Spring Boot进行的简化设置,请使用下文所述的MCPStarters。spring-doc.cadn.net.cn

Spring AI MCP 集成

Spring AI 通过以下 Spring Boot Starter 提供 MCP 集成:spring-doc.cadn.net.cn

客户端Starters

  • spring-ai-starter-mcp-client - 核心Starters,提供 STDIO、基于 Servlet 的 Streamable-HTTPStateless Streamable-HTTPSSE 支持spring-doc.cadn.net.cn

  • spring-ai-starter-mcp-client-webflux - 基于 WebFlux 的 Streamable-HTTPStateless Streamable-HTTPSSE 传输实现spring-doc.cadn.net.cn

服务器Starters

标准输出

服务池类型设置 依赖 属性

标准输入输出(STDIO)spring-doc.cadn.net.cn

spring-ai-starter-mcp-serverspring-doc.cadn.net.cn

spring.ai.mcp.server.stdio=truespring-doc.cadn.net.cn

Spring Boot

服务池类型设置spring-doc.cadn.net.cn

依赖spring-doc.cadn.net.cn

属性spring-doc.cadn.net.cn

Spring Security Extended Web MVCspring-doc.cadn.net.cn

spring-ai-starter-mcp-server-webmvcspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=SSE或空spring-doc.cadn.net.cn

Spring的流式HTTP MVC框架spring-doc.cadn.net.cn

spring-ai-starter-mcp-server-webmvcspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=STREAMABLEspring-doc.cadn.net.cn

无状态可流式传输的 HTTP WebMVCspring-doc.cadn.net.cn

spring-ai-starter-mcp-server-webmvcspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=STATELESSspring-doc.cadn.net.cn

WebMVC(敏捷)

服务池类型设置spring-doc.cadn.net.cn

依赖spring-doc.cadn.net.cn

属性spring-doc.cadn.net.cn

Spring WebFluxspring-doc.cadn.net.cn

spring-ai-starter-mcp-server-webfluxspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=SSE或空spring-doc.cadn.net.cn

流式可扩展的HTTP WebFluxspring-doc.cadn.net.cn

spring-ai-starter-mcp-server-webfluxspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=STREAMABLEspring-doc.cadn.net.cn

无状态可流式传输的 HTTP WebFluxspring-doc.cadn.net.cn

spring-ai-starter-mcp-server-webfluxspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=STATELESSspring-doc.cadn.net.cn

Spring AI MCP 注解

除了编程式的MCP客户端与服务器配置外,Spring AI还通过MCP注解模块为MCP服务器和客户端提供基于注解的方法处理。 这种方法使用干净、声明式的编程模型与Java注解,简化了MCP操作的创建与注册。spring-doc.cadn.net.cn

MCP 注解模块使开发人员能够:spring-doc.cadn.net.cn

主要功能包括:spring-doc.cadn.net.cn

升级到 Spring AI 2.0

Spring AI 2.0 开始,Spring 特有的 MCP 传输实现(mcp-spring-webfluxmcp-spring-webmvc) 不再由 MCP Java SDK 提供。它们已被移至 Spring AI 项目本身。这是一项破坏性变更,需要对直接引用这些传输工件或类的应用程序进行依赖和导入更新。spring-doc.cadn.net.cn

Maven依赖组ID更改

The mcp-spring-webflux and mcp-spring-webmvc artifacts have moved from the io.modelcontextprotocol.sdk group to org.springframework.ai.spring-doc.cadn.net.cn

在(MCP Java SDK < 1.0.x 和 Spring AI < 2.0.x)之前
<dependency>
    <groupId>io.modelcontextprotocol.sdk</groupId>
    <artifactId>mcp-spring-webflux</artifactId>
</dependency>

<dependency>
    <groupId>io.modelcontextprotocol.sdk</groupId>
    <artifactId>mcp-spring-webmvc</artifactId>
</dependency>
在(MCP Java SDK >= 1.0.x 和 Spring AI >= 2.0.x)之后
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>mcp-spring-webflux</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>mcp-spring-webmvc</artifactId>
</dependency>
当使用 spring-ai-bom 或 Spring AI starter 依赖(spring-ai-starter-mcp-server-webfluxspring-ai-starter-mcp-server-webmvcspring-ai-starter-mcp-client-webflux)时,无需显式指定版本——BOM 会自动管理版本。

Java 包重定位

所有传输类已被重新定位到 org.springframework.ai 包。spring-doc.cadn.net.cn

表 1. 服务器传输类
旧软件包(MCP SDK) 新软件包(Spring AI)

WebFluxSseServerTransportProviderspring-doc.cadn.net.cn

io.modelcontextprotocol.server.transportspring-doc.cadn.net.cn

org.springframework.ai.mcp.server.webflux.transportspring-doc.cadn.net.cn

WebFluxStreamableServerTransportProviderspring-doc.cadn.net.cn

io.modelcontextprotocol.server.transportspring-doc.cadn.net.cn

org.springframework.ai.mcp.server.webflux.transportspring-doc.cadn.net.cn

WebFluxStatelessServerTransportspring-doc.cadn.net.cn

io.modelcontextprotocol.server.transportspring-doc.cadn.net.cn

org.springframework.ai.mcp.server.webflux.transportspring-doc.cadn.net.cn

WebMvcSseServerTransportProviderspring-doc.cadn.net.cn

io.modelcontextprotocol.server.transportspring-doc.cadn.net.cn

org.springframework.ai.mcp.server.webmvc.transportspring-doc.cadn.net.cn

WebMvcStreamableServerTransportProviderspring-doc.cadn.net.cn

io.modelcontextprotocol.server.transportspring-doc.cadn.net.cn

org.springframework.ai.mcp.server.webmvc.transportspring-doc.cadn.net.cn

WebMvcStatelessServerTransportspring-doc.cadn.net.cn

io.modelcontextprotocol.server.transportspring-doc.cadn.net.cn

org.springframework.ai.mcp.server.webmvc.transportspring-doc.cadn.net.cn

表 2. 客户端传输类
旧软件包(MCP SDK) 新软件包(Spring AI)

WebFluxSseClientTransportspring-doc.cadn.net.cn

io.modelcontextprotocol.client.transportspring-doc.cadn.net.cn

org.springframework.ai.mcp.client.webflux.transportspring-doc.cadn.net.cn

WebClientStreamableHttpTransportspring-doc.cadn.net.cn

io.modelcontextprotocol.client.transportspring-doc.cadn.net.cn

org.springframework.ai.mcp.client.webflux.transportspring-doc.cadn.net.cn

示例导入更新
// Before
import io.modelcontextprotocol.server.transport.WebFluxSseServerTransportProvider;
import io.modelcontextprotocol.server.transport.WebMvcSseServerTransportProvider;
import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
import io.modelcontextprotocol.client.transport.WebClientStreamableHttpTransport;

// After
import org.springframework.ai.mcp.server.webflux.transport.WebFluxSseServerTransportProvider;
import org.springframework.ai.mcp.server.webmvc.transport.WebMvcSseServerTransportProvider;
import org.springframework.ai.mcp.client.webflux.transport.WebFluxSseClientTransport;
import org.springframework.ai.mcp.client.webflux.transport.WebClientStreamableHttpTransport;

MCP SDK版本要求

Spring AI 2.0 需要 MCP Java SDK 1.0.0(RC1 或更高版本)。SDK 版本已从 0.18.x 升级到 1.0.x 发行线。请相应地更新您的 BOM 或明确指定版本。spring-doc.cadn.net.cn

Spring Boot 自动配置用户

如果您完全依赖通过 Spring AI starter 的 Spring Boot 自动配置,则您无需更改任何 Java 代码。自动配置已在内部更新,以引用新的包。只需按照上述说明更新您的 pom.xml/build.gradle 依赖坐标即可。spring-doc.cadn.net.cn