概述

Model Context Protocol 的 Java SDK 實現了 AI 模型和工具之間的標準化集成。

功能特性

  • MCP 客戶端和服務器端實現支持:
  • 多種傳輸實現:
    • 默認傳輸:
      • 基於標準輸入輸出的進程通信傳輸
      • 基於 Java HttpClient 的 HTTP SSE 客戶端流傳輸
      • 基於 Servlet 的 HTTP SSE 服務器流傳輸
    • 基於 Spring 的傳輸:
      • WebFlux SSE 客戶端和服務器端響應式 HTTP 流傳輸
      • WebMVC SSE 基於 servlet 的 HTTP 流傳輸
  • 支持同步和異步編程範式

架構

SDK 採用分層架構,具有清晰的關注點分離:

MCP 技術棧架構

  • 客戶端/服務器層 (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 服務器的連接。 它實現了協議的客戶端部分。

Java MCP 客戶端架構

MCP 服務器是 Model Context Protocol (MCP) 架構中的基礎組件,為客戶端提供工具、資源和功能。 它實現了協議的服務器端部分。

Java 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 應用的測試工具和支持。