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

特性

  • 支持的 MCP 客户端和 MCP 服务器实现:
  • 多种传输实现:
    • 默认传输:
      • 基于 Stdio 的传输用于基于进程的通信
      • 基于 Java HttpClient 的 SSE 客户端传输用于 HTTP SSE 客户端流
      • 基于 Servlet 的 SSE 服务器传输用于 HTTP SSE 服务器流
    • 基于 Spring 的传输:
      • WebFlux SSE 客户端和服务器传输用于反应式 HTTP 流
      • WebMVC SSE 传输用于基于 Servlet 的 HTTP 流
  • 支持同步和异步编程范式

架构

SDK 遵循分层架构,具有明确的关注点分离:

  • 客户端/服务器层 (McpClient/McpServer):两者都使用 McpSession 进行同步/异步操作, McpClient 处理客户端协议操作,McpServer 管理服务器端协议操作。
  • 会话层 (McpSession):使用 DefaultMcpSession 实现管理通信模式和状态。
  • 传输层 (McpTransport):通过以下方式处理 JSON-RPC 消息的序列化/反序列化:
    • 核心模块中的 StdioTransport (stdin/stdout)
    • 专用传输模块中的 HTTP SSE 传输 (Java HttpClient, Spring WebFlux, Spring WebMVC)

MCP 客户端是模型上下文协议 (MCP) 架构中的关键组件,负责建立和管理与 MCP 服务器的连接。 它实现了协议的客户端部分。

MCP 服务器是模型上下文协议 (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>

材料清单 (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>

将版本号替换为您要使用的 BOM 版本。

可用依赖项

以下依赖项可用并由 BOM 管理:

  • 核心依赖项
    • io.modelcontextprotocol.sdk:mcp - 提供模型上下文协议实现的基本功能和 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 的应用程序的测试工具和支持。