Model Context Protocol (MCP)
模型上下文协议 (Model Context Protocol, MCP) 是一种标准化协议,使AI模型能够以结构化方式与外部工具和资源进行交互。它支持多种传输机制,为不同环境提供灵活性。
MCP Java SDK 提供了模型上下文协议的Java实现,通过同步和异步通信模式实现与AI模型和工具的标准化交互。
Spring AI MCP 通过Spring Boot集成扩展了MCP Java SDK,提供客户端和服务器启动器。使用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 Boot Starters文档。
Java MCP实现遵循三层架构:
| 客户端/服务器层:McpClient处理客户端操作,而McpServer管理服务器端协议操作。两者都使用McpSession进行通信管理。 会话层 (McpSession):通过McpClientSession和McpServerSession实现管理通信模式和状态。 传输层 (McpTransport):处理JSON-RPC消息序列化和反序列化,支持多种传输实现。 |
| MCP客户端 | |
|---|---|
| MCP客户端是模型上下文协议 (MCP) 架构中的关键组件,负责建立和管理与MCP服务器的连接。它实现了协议的客户端,处理: • 协议版本协商以确保与服务器的兼容性 • 能力协商以确定可用功能 • 消息传输和JSON-RPC通信 • 工具发现和执行 • 资源访问和管理 • 提示系统交互 可选功能: • 根目录管理 • 采样支持 • 同步和异步操作 传输选项: • 基于Stdio的进程间通信传输 • 基于Java HttpClient的SSE客户端传输 • WebFlux SSE客户端传输用于响应式HTTP流 |
| MCP服务器 | |
|---|---|
| MCP服务器是模型上下文协议 (MCP) 架构的基础组件,向客户端提供工具、资源和功能。它实现了协议的服务端,负责: • 服务器端协议操作实现 • 工具暴露和发现 • 基于URI访问的资源管理 • 提示模板提供和处理 • 与客户端的能力协商 • 结构化日志和通知 • 并发客户端连接管理 • 同步和异步API支持 传输实现: • 基于Stdio的进程间通信传输 • 基于Servlet的SSE服务器传输 • WebFlux SSE服务器传输用于响应式HTTP流 • WebMVC SSE服务器传输用于基于Servlet的HTTP流 |
有关使用低级MCP客户端/服务器API的详细实现指导,请参考MCP Java SDK文档。要使用Spring Boot进行简化设置,请使用下面描述的MCP Boot Starters。
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传输实现