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

模型上下文协议 (MCP)

初次接触 MCP? 从我们的 MCP 入门指南 开始,快速了解并上手实践示例。

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

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

Spring AI 通过专用的 Boot Starters 和 MCP Java 注解提供全面的支持,从而拥抱 MCP,让构建能够无缝连接外部系统的复杂 AI 驱动应用变得前所未有的简单。 这意味着 Spring 开发者可以参与 MCP 生态系统的两端——既构建消费 MCP 服务器的 AI 应用,也创建将基于 Spring 的服务暴露给更广泛 AI 社区的 MCP 服务器。 使用 Spring Initializer 快速启动带有 MCP 支持的 AI 应用。spring-doc.cadn.net.cn

MCP 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 进行简化设置,请使用下文介绍的 MCP Boot Starters。spring-doc.cadn.net.cn

Spring AI MCP 集成

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

客户端Starters

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

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

服务器Starters

标准输入输出

服务器类型 依赖 <property> </property>

标准输入/输出 (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

Web MVC

服务器类型spring-doc.cadn.net.cn

依赖spring-doc.cadn.net.cn

<property> </property>spring-doc.cadn.net.cn

SSE WebMVCspring-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

可流式传输的 HTTP WebMVCspring-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

<property> </property>spring-doc.cadn.net.cn

SSE 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 变更

mcp-spring-webfluxmcp-spring-webmvc 构件已从 io.modelcontextprotocol.sdk 组迁移至 org.springframework.aispring-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 Starters依赖项(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 starters 提供的 Spring Boot 自动配置,则无需更改任何 Java 代码。自动配置已在内部更新以引用新的包。只需按照上述说明更新您的 pom.xml/build.gradle 依赖坐标即可。spring-doc.cadn.net.cn