内容
- 简介 - Model Context Protocol (MCP) Java SDK 及其功能概述。
- Java MCP 客户端 - 学习如何使用 MCP 客户端与 MCP 服务器交互。
- Java MCP 服务器 - 学习如何实现和配置 MCP 服务器。
功能特性
- 支持以下功能的 MCP 客户端和 MCP 服务器实现:
- 多种传输实现:
- 默认传输(包含在核心
mcp模块中,无需外部 Web 框架):- 基于 Stdio 的进程间通信传输
- 基于 Java HttpClient 的 SSE 客户端传输,用于 HTTP SSE 客户端流式传输
- 基于 Servlet 的 SSE 服务器传输,用于 HTTP SSE 服务端流式传输
- 可选的 Spring 框架传输(使用 Spring 框架时更方便):
- 用于响应式 HTTP 流的 WebFlux SSE 客户端和服务器传输
- 用于基于 Servlet 的 HTTP 流的 WebMVC SSE 传输
- 默认传输(包含在核心
- 支持同步和异步编程范式
架构
SDK 采用分层架构,各层职责清晰:- 客户端/服务器层 (McpClient/McpServer):两者都使用 McpSession 进行同步/异步操作, McpClient 负责客户端协议操作,McpServer 管理服务端协议操作。
- 会话层 (McpSession):通过 DefaultMcpSession 实现管理通信模式和状态。
- 传输层 (McpTransport):通过以下方式处理 JSON-RPC 消息的序列化/反序列化:
- 核心模块中的 StdioTransport(stdin/stdout)
- 专用传输模块中的 HTTP SSE 传输(Java HttpClient、Spring WebFlux、Spring WebMVC)


- 客户端/服务器初始化:传输设置、协议兼容性检查、能力协商和实现细节交换。
- 消息流:JSON-RPC 消息处理,包括验证、类型安全的响应处理和错误处理。
- 资源管理:资源发现、基于 URI 模板的访问、订阅系统和内容检索。
依赖项
将以下 Maven 依赖项添加到你的项目中:- Maven
- Gradle
核心 MCP 功能:核心
mcp 模块已经包含默认的 STDIO 和 SSE 传输实现,无需外部 Web 框架。如果你使用 Spring 框架并希望使用 Spring 相关的传输实现,请添加以下可选依赖之一:物料清单 (BOM)
物料清单 (BOM) 声明了特定版本中使用的所有依赖项的推荐版本。 在应用程序的构建脚本中使用 BOM 可以避免你自己指定和维护依赖版本。 相反,所使用的 BOM 版本将决定依赖项的版本。 它还确保默认情况下你使用的是经过支持和测试的依赖项版本,除非你选择覆盖它们。 将 BOM 添加到你的项目中:- Maven
- Gradle
可用依赖项
以下依赖项由 BOM 提供并管理:- 核心依赖项
io.modelcontextprotocol.sdk:mcp- 核心 MCP 库,提供 Model Context Protocol 实现的基础功能和 API,包括默认的 STDIO 和 SSE 客户端及服务器传输实现。无需外部 Web 框架。
- 可选传输依赖项(使用 Spring 框架时更方便)
io.modelcontextprotocol.sdk:mcp-spring-webflux- 用于响应式应用的基于 WebFlux 的 Server-Sent Events (SSE) 传输实现。io.modelcontextprotocol.sdk:mcp-spring-webmvc- 用于基于 Servlet 应用的基于 WebMVC 的 Server-Sent Events (SSE) 传输实现。
- 测试依赖项
io.modelcontextprotocol.sdk:mcp-test- 针对基于 MCP 的应用程序的测试工具和辅助功能。