模型上下文協議 (MCP)

模型上下文協議 (MCP) 是一種標準化協議,使 AI 模型能夠以結構化的方式與外部工具和資源進行互動。它支援多種傳輸機制,可在不同環境中提供靈活性。

MCP Java SDK 提供了模型上下文協議的 Java 實現,透過同步和非同步通訊模式實現與 AI 模型和工具的標準化互動。

Spring AI MCP 將 MCP Java SDK 與 Spring Boot 整合,提供客戶端伺服器端 Starter。使用 Spring Initializer 構建支援 MCP 的 AI 應用程式。

MCP Java SDK 0.8.0 中的重大變更 ⚠️

MCP Java SDK 0.8.0 版本引入了一些重大變更,包括新的基於會話的架構。如果您從 Java SDK 0.7.0 升級,請參閱遷移指南以獲取詳細說明。

MCP Java SDK 架構

本節概述了 MCP Java SDK 架構。有關 Spring AI MCP 整合,請參閱Spring AI MCP Boot Starters 文件。

Java MCP 實現遵循三層架構

MCP Stack Architecture
  • 客戶端/伺服器層:McpClient 處理客戶端操作,而 McpServer 管理伺服器端協議操作。兩者都使用 McpSession 進行通訊管理。

  • 會話層 (McpSession):透過 DefaultMcpSession 實現管理通訊模式和狀態。

  • 傳輸層 (McpTransport):處理 JSON-RPC 訊息的序列化和反序列化,支援多種傳輸實現。

MCP 客戶端

MCP 客戶端是模型上下文協議 (MCP) 架構中的一個關鍵元件,負責建立和管理與 MCP 伺服器的連線。它實現了協議的客戶端部分,處理

  • 協議版本協商,以確保與伺服器的相容性

  • 能力協商,以確定可用的功能

  • 訊息傳輸和 JSON-RPC 通訊

  • 工具發現和執行

  • 資源訪問和管理

  • Prompt 系統互動

  • 可選功能

    • 根管理

    • 取樣支援

  • 同步和非同步操作

  • 傳輸選項

    • 基於 Stdio 的傳輸,用於程序間通訊

    • 基於 Java HttpClient 的 SSE 客戶端傳輸

    • WebFlux SSE 客戶端傳輸,用於響應式 HTTP 流

Java MCP Client Architecture
MCP 伺服器

MCP 伺服器是模型上下文協議 (MCP) 架構中的基礎元件,為客戶端提供工具、資源和能力。它實現了協議的伺服器端部分,負責

  • 伺服器端協議操作實現

    • 工具暴露和發現

    • 基於 URI 的資源管理

    • Prompt 模板提供和處理

    • 與客戶端的能力協商

    • 結構化日誌記錄和通知

  • 併發客戶端連線管理

  • 同步和非同步 API 支援

  • 傳輸實現

    • 基於 Stdio 的傳輸,用於程序間通訊

    • 基於 Servlet 的 SSE 伺服器傳輸

    • WebFlux SSE 伺服器傳輸,用於響應式 HTTP 流

    • WebMVC SSE 伺服器傳輸,用於基於 Servlet 的 HTTP 流

Java MCP Server Architecture

有關使用底層 MCP 客戶端/伺服器 API 的詳細實現指南,請參閱 MCP Java SDK 文件。有關使用 Spring Boot 的簡化設定,請使用下面描述的 MCP Boot Starter。

Spring AI MCP 整合

Spring AI 透過以下 Spring Boot Starter 提供 MCP 整合

客戶端 Starter

  • spring-ai-starter-mcp-client - 提供 STDIO 和基於 HTTP 的 SSE 支援的核心 Starter

  • spring-ai-starter-mcp-client-webflux - 基於 WebFlux 的 SSE 傳輸實現

伺服器端 Starter

  • spring-ai-starter-mcp-server - 支援 STDIO 傳輸的核心伺服器

  • spring-ai-starter-mcp-server-webmvc - 基於 Spring MVC 的 SSE 傳輸實現

  • spring-ai-starter-mcp-server-webflux - 基於 WebFlux 的 SSE 傳輸實現