模型上下文協議 (MCP)

MCP 新手? 從我們的 MCP 入門指南開始,獲取快速介紹和實際示例。

模型上下文協議 (MCP) 是一種標準化協議,使 AI 模型能夠以結構化方式與外部工具和資源互動。可以將其視為 AI 模型與現實世界之間的橋樑——允許它們透過一致的介面訪問資料庫、API、檔案系統和其他外部服務。它支援多種傳輸機制,以提供跨不同環境的靈活性。

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

Spring AI 透過專門的 Boot Starters 和 MCP Java 註解全面支援 MCP,使得構建能夠無縫連線到外部系統的複雜 AI 驅動應用程式比以往任何時候都更容易。這意味著 Spring 開發人員可以參與 MCP 生態系統的兩方面——構建消費 MCP 伺服器的 AI 應用程式,以及建立向更廣泛的 AI 社群公開基於 Spring 的服務的 MCP 伺服器。使用 Spring Initializer 啟動您的 AI 應用程式,並獲得 MCP 支援。

MCP Java SDK 架構

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

Java MCP 實現遵循三層架構,將關注點分離以實現可維護性和靈活性

MCP Stack Architecture
圖 1. MCP 堆疊架構

客戶端/伺服器層(頂層)

頂層處理主要應用程式邏輯和協議操作

  • McpClient - 管理客戶端操作和伺服器連線

  • McpServer - 處理伺服器端協議操作和客戶端請求

  • 這兩個元件都利用下面的會話層進行通訊管理

會話層(中間層)

中間層管理通訊模式並維護連線狀態

  • McpSession - 核心會話管理介面

  • McpClientSession - 客戶端特定會話實現

  • McpServerSession - 伺服器特定會話實現

傳輸層(底層)

底層處理實際的訊息傳輸和序列化

  • McpTransport - 管理 JSON-RPC 訊息序列化和反序列化

  • 支援多種傳輸實現(STDIO、HTTP/SSE、Streamable-HTTP 等)

  • 為所有更高級別的通訊提供基礎

MCP 客戶端

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

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

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

  • 訊息傳輸和 JSON-RPC 通訊

  • 工具發現和執行

  • 資源訪問和管理

  • 提示系統互動

  • 可選功能

    • 根管理

    • 取樣支援

  • 同步和非同步操作

  • 傳輸選項

    • 用於基於程序通訊的 StdIO 傳輸

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

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

Java MCP Client Architecture
MCP 伺服器

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

  • 伺服器端協議操作實現

    • 工具公開和發現

    • 帶 URI 訪問的資源管理

    • 提示模板提供和處理

    • 與客戶端的能力協商

    • 結構化日誌記錄和通知

  • 併發客戶端連線管理

  • 同步和非同步 API 支援

  • 傳輸實現

    • Stdio、Streamable-HTTP、Stateless Streamable-HTTP、SSE

Java MCP Server Architecture

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

Spring AI MCP 整合

Spring AI 透過以下 Spring Boot 啟動器提供 MCP 整合

客戶端啟動器

  • spring-ai-starter-mcp-client - 核心啟動器,提供 STDIO、基於 Servlet 的 Streamable-HTTPStateless Streamable-HTTPSSE 支援

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

伺服器啟動器

STDIO

伺服器型別 依賴項 財產

標準輸入/輸出 (STDIO)

spring-ai-starter-mcp-server

spring.ai.mcp.server.stdio=true

WebMVC

伺服器型別

依賴項

財產

SSE WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=SSE 或為空

Streamable-HTTP WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=STREAMABLE

Stateless Streamable-HTTP WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=STATELESS

WebMVC(響應式)

伺服器型別

依賴項

財產

SSE WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=SSE 或為空

Streamable-HTTP WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=STREAMABLE

Stateless Streamable-HTTP WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=STATELESS

Spring AI MCP 註解

除了程式設計方式的 MCP 客戶端和伺服器配置之外,Spring AI 還透過 MCP 註解模組為 MCP 伺服器和客戶端提供基於註解的方法處理。這種方法透過使用 Java 註解的清晰、宣告式程式設計模型來簡化 MCP 操作的建立和註冊。

MCP 註解模組使開發人員能夠

  • 使用簡單的註解建立 MCP 工具、資源和提示

  • 宣告性地處理客戶端通知和請求

  • 減少樣板程式碼並提高可維護性

  • 自動為工具引數生成 JSON 模式

  • 訪問特殊引數和上下文資訊

主要功能包括

  • 伺服器註解@McpTool@McpResource@McpPrompt@McpComplete

  • 客戶端註解@McpLogging@McpSampling@McpElicitation@McpProgress

  • 特殊引數McpSyncServerExchangeMcpAsyncServerExchangeMcpTransportContextMcpMeta

  • 自動發現:具有可配置包包含/排除的註解掃描

  • Spring Boot 整合:與 MCP Boot Starters 無縫整合

© . This site is unofficial and not affiliated with VMware.