模型上下文协议(MCP协议)的Java SDK,支持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 - 核心MCP库,提供模型上下文协议(MCP协议)实现的基本功能和API。
  • 传输依赖项
    • io.modelcontextprotocol.sdk:mcp-spring-webflux - 基于WebFlux的服务器发送事件(SSE)传输实现,用于响应式应用程序。
    • io.modelcontextprotocol.sdk:mcp-spring-webmvc - 基于WebMVC的服务器发送事件(SSE)传输实现,用于基于Servlet的应用程序。
  • 测试依赖项
    • io.modelcontextprotocol.sdk:mcp-test - 用于MCP应用程序的测试工具和支持。