Java SDK for the Model Context Protocol 使 AI 模型和工具之间的标准化集成成为可能。

0.8.x 版本中的重大变化 ⚠️

注意: 0.8.x 版本引入了多个重大变化,包括新的基于会话的架构。 如果您从 0.7.0 版本升级,请参考 迁移指南 以获取详细说明。

功能

  • MCP 客户端和 MCP 服务器实现支持:
  • 多种传输实现:
    • 默认传输(包含在核心 mcp 模块中,无需外部 Web 框架):
      • 基于 Stdio 的传输,用于基于进程的通信
      • 基于 Java HttpClient 的 SSE 客户端传输,用于 HTTP SSE 客户端流
      • 基于 Servlet 的 SSE 服务器传输,用于 HTTP SSE 服务器流
    • 可选的基于 Spring 的传输(如果使用 Spring Framework 则方便):
      • 基于 WebFlux 的 SSE 客户端和服务器传输,用于响应式 HTTP 流
      • 基于 WebMVC 的 SSE 传输,用于基于 Servlet 的 HTTP 流
  • 支持同步和异步编程范式
核心 io.modelcontextprotocol.sdk:mcp 模块提供了默认的 STDIO 和 SSE 客户端和服务器传输实现,无需外部 Web 框架。如果使用 Spring Framework,可以使用作为可选依赖的 Spring 特定传输。

架构

SDK 遵循分层架构,明确分离关注点: MCP 堆栈架构
  • 客户端/服务器层 (McpClient/McpServer):两者都使用 McpSession 进行同步/异步操作,McpClient 处理客户端协议操作,McpServer 管理服务器端协议操作。
  • 会话层 (McpSession):使用 DefaultMcpSession 实现管理通信模式和状态。
  • 传输层 (McpTransport):通过以下方式处理 JSON-RPC 消息序列化/反序列化:
    • 核心模块中的 StdioTransport(stdin/stdout)
    • 专用传输模块中的 HTTP SSE 传输(Java HttpClient, Spring WebFlux, Spring WebMVC)
MCP 客户端是 Model Context Protocol (MCP) 架构中的关键组件,负责与 MCP 服务器建立和管理连接。它实现了协议的客户端部分。 Java MCP 客户端架构 MCP 服务器是 Model Context Protocol (MCP) 架构中的基础组件,向客户端提供工具、资源和功能。它实现了协议的服务器端部分。 Java MCP 服务器架构 关键交互:
  • 客户端/服务器初始化:传输设置、协议兼容性检查、能力协商和实现细节交换。
  • 消息流:JSON-RPC 消息处理,包括验证、类型安全的响应处理和错误处理。
  • 资源管理:资源发现、基于 URI 模板的访问、订阅系统和内容检索。

依赖

将以下 Maven 依赖添加到您的项目中:
核心 MCP 功能:
<dependency>
    <groupId>io.modelcontextprotocol.sdk</groupId>
    <artifactId>mcp</artifactId>
</dependency>
核心 mcp 模块已经包含了默认的 STDIO 和 SSE 传输实现,无需外部 Web 框架。如果您使用 Spring Framework 并希望使用 Spring 特定的传输实现,请添加以下可选依赖之一:
<!-- 可选:基于 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>

物料清单 (BOM)

物料清单 (BOM) 声明了给定版本所使用的所有依赖的推荐版本。 在您的应用程序构建脚本中使用 BOM 可以避免您自己指定和维护依赖版本。 相反,您使用的 BOM 版本决定了使用的依赖版本。 它还确保您默认使用支持和测试过的依赖版本,除非您选择覆盖它们。 将 BOM 添加到您的项目中:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.modelcontextprotocol.sdk</groupId>
            <artifactId>mcp-bom</artifactId>
            <version>0.8.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
将版本号替换为您想要使用的 BOM 版本。

可用依赖

以下依赖由 BOM 管理并可用:
  • 核心依赖
    • io.modelcontextprotocol.sdk:mcp - 提供 Model Context Protocol 实现的基础功能和 API 的核心 MCP 库,包括默认的 STDIO 和 SSE 客户端和服务器传输实现。无需外部 Web 框架。
  • 可选传输依赖(如果使用 Spring Framework 则方便)
    • io.modelcontextprotocol.sdk:mcp-spring-webflux - 用于响应式应用程序的基于 WebFlux 的服务器发送事件 (SSE) 传输实现。
    • io.modelcontextprotocol.sdk:mcp-spring-webmvc - 用于基于 Servlet 的应用程序的基于 WebMVC 的服务器发送事件 (SSE) 传输实现。
  • 测试依赖
    • io.modelcontextprotocol.sdk:mcp-test - 用于基于 MCP 的应用程序的测试工具和支持。