模型上下文协议 (MCP)
模型上下文协议 (MCP) 是一种标准化协议,它使 AI 模型能够以结构化的方式与外部工具和资源进行交互。
它支持多种传输机制,以在不同环境中提供灵活性。
MCP Java SDK 提供了模型上下文协议的 Java 实现,通过同步和异步通信模式实现与 AI 模型和工具的标准化交互。
Spring AI MCP
扩展了 MCP Java SDK,提供了 Spring Boot 集成,提供了 客户端 和 服务器 启动器。
使用 Spring Initializer 引导您的 AI 应用程序,支持 MCP。
MCP Java SDK 0.8.0 中的重大变更 ⚠️ MCP Java SDK 0.8.0 版本引入了多项重大变更,包括新的基于会话的架构。如果您正在从 Java SDK 0.7.0 升级,请参阅 迁移指南 以获取详细说明。 |
MCP Java SDK 架构
本节概述了 MCP Java SDK 架构。 有关 Spring AI MCP 集成,请参阅 _spring_ai_mcp_integration 文档。 |
Java MCP 实现遵循三层架构:
image::mcp/mcp-stack.svg[MCP 堆栈架构] |
* 客户端/服务器层:McpClient 处理客户端操作,而 McpServer 管理服务器端协议操作。两者都利用 McpSession 进行通信管理。 * 会话层 (McpSession):通过 McpClientSession 和 McpServerSession 实现管理通信模式和状态。 * 传输层 (McpTransport):处理 JSON-RPC 消息的序列化和反序列化,支持多种传输实现。 |
MCP 客户端 | |
---|---|
MCP 客户端是模型上下文协议 (MCP) 架构中的关键组件,负责建立和管理与 MCP 服务器的连接。它实现了协议的客户端部分,处理: * 协议版本协商以确保与服务器的兼容性 * 能力协商以确定可用功能 * 消息传输和 JSON-RPC 通信 * 工具发现和执行 * 资源访问和管理 * 提示系统交互 * 可选功能: * 根管理 * 采样支持 * 同步和异步操作 * 传输选项: * 基于 Stdio 的进程间通信传输 * 基于 Java HttpClient 的 SSE 客户端传输 ** 用于响应式 HTTP 流的 WebFlux SSE 客户端传输 |
image::mcp/java-mcp-client-architecture.jpg[Java MCP 客户端架构, width=500] |
MCP 服务器 | |
---|---|
MCP 服务器是模型上下文协议 (MCP) 架构中的基础组件,它向客户端提供工具、资源和功能。它实现了协议的服务器端,负责: * 服务器端协议操作实现 * 工具暴露和发现 * 基于 URI 访问的资源管理 * 提示模板提供和处理 * 与客户端的能力协商 * 结构化日志和通知 * 并发客户端连接管理 * 同步和异步 API 支持 * 传输实现: * 基于 Stdio 的进程间通信传输 * 基于 Servlet 的 SSE 服务器传输 * 用于响应式 HTTP 流的 WebFlux SSE 服务器传输 ** 用于基于 Servlet 的 HTTP 流的 WebMVC SSE 服务器传输 |
image::mcp/java-mcp-server-architecture.jpg[Java MCP 服务器架构, width=600] |
有关使用低级 MCP 客户端/服务器 API 的详细实现指导,请参阅 MCP Java SDK 文档。 对于使用 Spring Boot 的简化设置,请使用下面描述的 MCP Boot 启动器。
Spring AI MCP 集成
Spring AI 通过以下 Spring Boot 启动器提供 MCP 集成:
客户端启动器
-
spring-ai-starter-mcp-client
- 提供 STDIO 和基于 HTTP 的 SSE 支持的核心启动器 -
spring-ai-starter-mcp-client-webflux
- 基于 WebFlux 的 SSE 传输实现
服务器启动器
-
spring-ai-starter-mcp-server
- 支持 STDIO 传输的核心服务器 -
spring-ai-starter-mcp-server-webmvc
- 基于 Spring MVC 的 SSE 传输实现 -
spring-ai-starter-mcp-server-webflux
- 基于 WebFlux 的 SSE 传输实现