概述
Model Context Protocol 的 Java SDK 实现了 AI 模型和工具之间的标准化集成。
功能特性
- MCP 客户端和服务器端实现支持:
- 多种传输实现:
- 默认传输:
- 基于标准输入输出的进程通信传输
- 基于 Java HttpClient 的 HTTP SSE 客户端流传输
- 基于 Servlet 的 HTTP SSE 服务器流传输
- 基于 Spring 的传输:
- WebFlux SSE 客户端和服务器端响应式 HTTP 流传输
- WebMVC SSE 基于 servlet 的 HTTP 流传输
- 默认传输:
- 支持同步和异步编程范式
架构
SDK 采用分层架构,具有清晰的关注点分离:
- 客户端/服务器层 (McpClient/McpServer):都使用 McpSession 进行同步/异步操作, McpClient 处理客户端协议操作,McpServer 管理服务器端协议操作。
- 会话层 (McpSession):使用 DefaultMcpSession 实现管理通信模式和状态。
- 传输层 (McpTransport):通过以下方式处理 JSON-RPC 消息序列化/反序列化:
- 核心模块中的 StdioTransport (标准输入/输出)
- 专用传输模块中的 HTTP SSE 传输 (Java HttpClient, Spring WebFlux, Spring WebMVC)
MCP 客户端是 Model Context Protocol (MCP) 架构中的重要组件,负责建立和管理与 MCP 服务器的连接。 它实现了协议的客户端部分。
MCP 服务器是 Model Context Protocol (MCP) 架构中的基础组件,为客户端提供工具、资源和功能。 它实现了协议的服务器端部分。
关键交互:
- 客户端/服务器初始化:传输设置、协议兼容性检查、能力协商和实现细节交换。
- 消息流:JSON-RPC 消息处理,包括验证、类型安全的响应处理和错误处理。
- 资源管理:资源发现、基于 URI 模板的访问、订阅系统和内容检索。
依赖
将以下 Maven 依赖添加到你的项目中:
核心 MCP 功能:
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp</artifactId>
</dependency>
对于 HTTP SSE 传输实现,添加以下依赖之一:
<!-- 基于 Spring WebFlux 的 SSE 客户端和服务器传输 -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webflux</artifactId>
</dependency>
<!-- 基于 Spring WebMVC 的 SSE 服务器传输 -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webmvc</artifactId>
</dependency>
核心 MCP 功能:
dependencies {
implementation platform("io.modelcontextprotocol.sdk:mcp")
//...
}
对于 HTTP SSE 传输实现,添加以下依赖之一:
// 基于 Spring WebFlux 的 SSE 客户端和服务器传输
dependencies {
implementation platform("io.modelcontextprotocol.sdk:mcp-spring-webflux")
}
// 基于 Spring WebMVC 的 SSE 服务器传输
dependencies {
implementation platform("io.modelcontextprotocol.sdk:mcp-spring-webmvc")
}
物料清单 (BOM)
物料清单 (BOM) 声明了特定版本使用的所有依赖项的推荐版本。 在应用程序的构建脚本中使用 BOM 可以避免你自己指定和维护依赖项版本。 相反,你使用的 BOM 版本决定了所使用的依赖项版本。 除非你选择覆盖它们,否则它还确保你默认使用受支持和测试过的依赖项版本。
将 BOM 添加到你的项目中:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-bom</artifactId>
<version>0.7.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
dependencies {
implementation platform("io.modelcontextprotocol.sdk:mcp-bom:0.7.0")
//...
}
Gradle 用户还可以通过利用 Gradle (5.0+) 对使用 Maven BOM 声明依赖约束的原生支持来使用 Spring AI MCP BOM。 这是通过在 Gradle 构建脚本的依赖部分添加 ‘platform’ 依赖处理程序方法来实现的。 如上面的代码片段所示,然后可以使用无版本声明的方式添加你想使用的一个或多个 spring-ai 模块的启动器依赖,例如 spring-ai-openai。
将版本号替换为你想使用的 BOM 版本。
可用依赖
BOM 管理的可用依赖项如下:
- 核心依赖
io.modelcontextprotocol.sdk:mcp
- 提供 Model Context Protocol 实现的基本功能和 API 的核心 MCP 库。
- 传输依赖
io.modelcontextprotocol.sdk:mcp-spring-webflux
- 用于响应式应用的基于 WebFlux 的服务器发送事件 (SSE) 传输实现。io.modelcontextprotocol.sdk:mcp-spring-webmvc
- 用于基于 servlet 的应用的基于 WebMVC 的服务器发送事件 (SSE) 传输实现。
- 测试依赖
io.modelcontextprotocol.sdk:mcp-test
- MCP 应用的测试工具和支持。