介紹 Model Context Protocol Java SDK

釋出 | Mark Pollack | 2025 年 2 月 14 日 | ...

本部落格文章由 David Soria ParraChristian TzolovDariusz Jędrzejczyk 合著。

什麼是 MCP

Model Context Protocol (MCP) 是由 Anthropic 開發的一個開放協議,正在改變人工智慧應用程式連線和共享上下文的方式。它在各種人工智慧應用程式中獲得了廣泛支援,作為大型語言模型 (LLM) 與資料來源、工具和人工智慧代理互動的標準化介面。無論您是構建需要訪問資料庫的自主系統、協調複雜的人工智慧工作流,還是建立多個代理協作的系統,MCP 都提供了使這些整合無縫銜接的基礎層。

MCP 的獨特之處在於它專注於可組合性和互操作性。除了連線資料來源,MCP 還使開發者能夠構建豐富、互動式的人工智慧系統,其中代理可以透過一致的介面共享上下文、訪問工具並協同工作。這意味著您可以快速接入不斷增長的預構建整合生態系統,同時保持在不同 LLM 提供商之間切換的靈活性,使其成為構建複雜人工智慧應用的理想基礎。

介紹 MCP Java SDK

去年 11 月啟動的一個實驗專案,現已發展成為與 Spring AI 團隊和 Anthropic 的激動人心的合作。我們很高興地宣佈,該實驗專案已納入官方 MCP Java SDK。
該 SDK 是該協議最新的語言繫結,與 Python、TypeScript 和 Kotlin SDK 一起釋出在 modelcontextprotocol.io 上。長期以來,Java 一直是企業語言,而 MCP Java SDK 使組織更容易開發前沿的人工智慧應用。

MCP Java SDK 為將人工智慧模型與外部工具和資料來源整合提供了全面的基礎。該 SDK 的主要功能包括:

客戶端和服務端實現

  • 支援同步和非同步 MCP 通訊。
  • 支援協議版本相容性協商,實現平滑互操作。

工具和資源管理

  • 動態發現、註冊和執行工具。
  • 接收工具和資源列表變更的即時通知。
  • 使用 URI 模板管理資源,實現結構化訪問和訂閱。

提示處理和人工智慧取樣支援

  • 獲取和管理提示,以自定義人工智慧模型行為。
  • 支援取樣策略,以微調人工智慧互動。

多種傳輸實現

  • 基於 Stdio 的傳輸,用於直接程序通訊。
  • 基於 Java HttpClient 的 SSE 客戶端傳輸,用於基於 HTTP 的流式傳輸。
  • 基於 Servlet 的 SSE 服務端傳輸,用於在傳統服務端環境中透過 HTTP 進行流式傳輸。
  • 基於 Spring 的傳輸,實現 Spring Boot 無縫整合
    • 基於 Spring WebFlux 的 SSE 傳輸,用於響應式應用。

    • 基於 Spring WebMVC 的 SSE 傳輸,用於基於 Servlet 的應用。

請查閱文件瞭解更多入門資訊,並訪問GitHub 倉庫提出問題和參與討論。

Spring AI 和 MCP

Spring AI 專案透過增加開發者生產力增強功能來擴充套件 MCP Java SDK,以便與 Spring Boot 應用整合。藉助 Spring Boot starter,開發者可以使用 Spring 的依賴注入和配置管理快速配置 MCP 客戶端和服務端,從而更容易將人工智慧驅動的工作流整合到他們的應用中。

客戶端 Starter

  • spring-ai-mcp-client-spring-boot-starter – 核心客戶端 starter,支援 STDIO 和基於 HTTP 的 SSE 傳輸。
  • spring-ai-mcp-client-webflux-spring-boot-starter – 基於 WebFlux 的 SSE 傳輸實現,用於響應式應用。

服務端 Starter

  • spring-ai-mcp-server-spring-boot-starter – 核心服務端 starter,支援 STDIO 傳輸。
  • spring-ai-mcp-server-webmvc-spring-boot-starter – 基於 Spring MVC 的 SSE 傳輸實現,用於基於 Servlet 的應用。
  • spring-ai-mcp-server-webflux-spring-boot-starter – 基於 WebFlux 的 SSE 傳輸實現,用於響應式應用。

以下是宣告式配置使用 STDIO 傳輸的客戶端應用的示例。在 application.yml 中,定義以下配置:

spring:
  ai:
    mcp:
      client:
        stdio:
          servers-configuration: classpath:mcp-servers.json

並且引用的 JSON 檔案使用 Claude Desktop 格式定義了要連線的服務端。

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/Users/username/Downloads"
      ]
    }
  }
}

客戶端應用啟動時,將啟動 MCP 服務端,建立 STDIO 通訊通道,並管理服務端的生命週期。

Spring AI M6 還引入了 @Tool 註解,它簡化了 MCP 服務端的建立。欲瞭解更多資訊,請閱讀Spring AI 參考文件中關於 MCP 的部分。

下一步

我們期待在 GitHub 上收到反饋,並非常感謝 Anthropic 團隊的支援。

訂閱 Spring 新聞郵件

保持與 Spring 新聞郵件的聯絡

訂閱

搶先一步

VMware 提供培訓和認證,助您快速提升。

瞭解更多

獲取支援

Tanzu Spring 透過一項簡單的訂閱提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援及二進位制檔案。

瞭解更多

即將舉辦的活動

檢視 Spring 社群即將舉辦的所有活動。

檢視全部