模型上下文协议 (MCP)
Model Context Protocol(MCP)是一种标准化协议,旨在使 AI 模型能够以结构化的方式与外部工具和资源进行交互。它支持多种传输机制,以在不同环境中提供灵活性。
MCP Java SDK
MCP Java SDK 提供了 Model Context Protocol 的 Java 实现,通过同步和异步通信模式,支持与 AI 模型和工具进行标准化的交互。
Java MCP 实现遵循三层架构:
- 客户端/服务器层: McpClient 处理客户端操作,而 McpServer 管理服务器端协议操作。两者都使用 McpSession 进行通信管理。
- 会话层 (McpSession): 通过 DefaultMcpSession 实现管理通信模式和状态。
- 传输层 (McpTransport): 处理 JSON-RPC 消息的序列化和反序列化,支持多种传输实现。
MCP 客户端 | |
---|---|
MCP 客户端是模型上下文协议(MCP)架构中的关键组件,负责与 MCP 服务器建立和管理连接。它实现了协议的客户端部分,处理以下内容: - 协议版本协商,以确保与服务器的兼容性 - 功能协商,以确定可用的特性 - 消息传输和 JSON-RPC 通信 - 工具发现与执行 - 资源访问与管理 - 提示系统交互 - 可选功能: - Roots 管理 - 采样支持 - 同步和异步操作 - 传输选项: - 基于 Stdio 的传输,用于基于进程的通信 - 基于 Java HttpClient 的 SSE 客户端传输 - WebFlux SSE 客户端传输,用于响应式 HTTP 流 | ![]() |
MCP Server | |
---|---|
MCP Server 是 Model Context Protocol (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 starters 提供 MCP 集成:
-
spring-ai-mcp-client-spring-boot-starter
- 核心 starter,提供 STDIO 和基于 HTTP 的 SSE 支持 -
spring-ai-mcp-client-webflux-spring-boot-starter
- 基于 WebFlux 的 SSE 传输实现
-
spring-ai-mcp-server-spring-boot-starter
- 核心服务器,支持 STDIO 传输 -
spring-ai-mcp-server-webmvc-spring-boot-starter
- 基于 Spring MVC 的 SSE 传输实现 -
spring-ai-mcp-server-webflux-spring-boot-starter
- 基于 WebFlux 的 SSE 传输实现
附加资源
章节摘要
📄️ MCP 客户端启动器
Spring AI MCP(Model Context Protocol)客户端启动器为 Spring Boot 应用程序中的 MCP 客户端功能提供了自动配置。它支持同步和异步客户端实现,并提供多种传输选项。
📄️ MCP 服务器启动器
Spring AI MCP(Model Context Protocol)Server Boot Starter 提供了在 Spring Boot 应用程序中设置 MCP 服务器的自动配置。它使得 MCP 服务器功能能够与 Spring Boot 的自动配置系统无缝集成。
📄️ MCP 工具
MCP 实用工具为将 Model Context Protocol 与 Spring AI 应用程序集成提供了基础支持。这些实用工具使得 Spring AI 的工具系统与 MCP 服务器之间的通信变得无缝,支持同步和异步操作。它们通常用于编程式的 MCP 客户端和服务器的配置与交互。为了更简化的配置,可以考虑使用 boot starters。