9. Model Context Protocol (MCP)

68 阅读3分钟

Model Context Protocol (MCP)

MCP Stack Architecture

模型上下文协议 (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实现遵循三层架构:

MCP Stack Architecture客户端/服务器层:McpClient处理客户端操作,而McpServer管理服务器端协议操作。两者都使用McpSession进行通信管理。

会话层 (McpSession):通过McpClientSession和McpServerSession实现管理通信模式和状态。

传输层 (McpTransport):处理JSON-RPC消息序列化和反序列化,支持多种传输实现。
MCP客户端
MCP客户端是模型上下文协议 (MCP) 架构中的关键组件,负责建立和管理与MCP服务器的连接。它实现了协议的客户端,处理:

• 协议版本协商以确保与服务器的兼容性
• 能力协商以确定可用功能
• 消息传输和JSON-RPC通信
• 工具发现和执行
• 资源访问和管理
• 提示系统交互

可选功能:
• 根目录管理
• 采样支持

• 同步和异步操作

传输选项:
• 基于Stdio的进程间通信传输
• 基于Java HttpClient的SSE客户端传输
• WebFlux SSE客户端传输用于响应式HTTP流
Java MCP Client Architecture
MCP服务器
MCP服务器是模型上下文协议 (MCP) 架构的基础组件,向客户端提供工具、资源和功能。它实现了协议的服务端,负责:

• 服务器端协议操作实现
• 工具暴露和发现
• 基于URI访问的资源管理
• 提示模板提供和处理
• 与客户端的能力协商
• 结构化日志和通知

• 并发客户端连接管理

• 同步和异步API支持

传输实现:
• 基于Stdio的进程间通信传输
• 基于Servlet的SSE服务器传输
• WebFlux SSE服务器传输用于响应式HTTP流
• WebMVC SSE服务器传输用于基于Servlet的HTTP流
Java MCP Server Architecture

有关使用低级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传输实现

其他资源