MCP 伺服器啟動器

模型上下文協議 (MCP) 伺服器 是透過標準化協議介面向 AI 應用程式公開特定功能的程式。每個伺服器都為特定領域提供專注的功能。

Spring AI MCP 伺服器啟動器為在 Spring Boot 應用程式中設定 MCP 伺服器 提供自動配置。它們實現了 MCP 伺服器功能與 Spring Boot 自動配置系統的無縫整合。

MCP 伺服器啟動器提供:

  • MCP 伺服器元件的自動配置,包括工具、資源和提示

  • 支援不同的 MCP 協議版本,包括 STDIO、SSE、可流式 HTTP 和無狀態伺服器

  • 支援同步和非同步操作模式

  • 多種傳輸層選項

  • 靈活的工具、資源和提示規範

  • 變更通知功能

  • 基於註解的伺服器開發,具有自動 Bean 掃描和註冊功能

MCP 伺服器啟動器

MCP 伺服器支援多種協議和傳輸機制。使用專用的啟動器和正確的 spring.ai.mcp.server.protocol 屬性來配置您的伺服器

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 或空

可流式 HTTP WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=STREAMABLE

無狀態 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 或空

可流式 HTTP WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=STREAMABLE

無狀態 WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=STATELESS

伺服器功能

根據伺服器和傳輸型別,MCP 伺服器可以支援各種功能,例如

  • 工具 - 允許伺服器公開可由語言模型呼叫的工具

  • 資源 - 提供伺服器向客戶端公開資源的標準化方式

  • 提示 - 提供伺服器向客戶端公開提示模板的標準化方式

  • 實用程式/自動完成 - 提供伺服器為提示和資源 URI 提供引數自動完成建議的標準化方式

  • 實用程式/日誌記錄 - 提供伺服器向客戶端傳送結構化日誌訊息的標準化方式

  • 實用程式/進度 - 透過通知訊息對長時間執行的操作進行可選的進度跟蹤

  • 實用程式/Ping - 伺服器報告其狀態的可選健康檢查機制

所有功能預設啟用。停用某個功能將阻止伺服器註冊並向客戶端公開相應的功能。

伺服器協議

MCP 提供多種協議型別,包括

  • STDIO - 程序內(例如伺服器在主機應用程式內部執行)協議。通訊透過標準輸入和標準輸出進行。要啟用 STDIO,請設定 spring.ai.mcp.server.stdio=true

  • SSE - 用於即時更新的伺服器傳送事件協議。伺服器作為獨立程序執行,可以處理多個客戶端連線。

  • 可流式 HTTP - 可流式 HTTP 傳輸 允許 MCP 伺服器作為獨立程序執行,使用 HTTP POST 和 GET 請求處理多個客戶端連線,並可選地使用伺服器傳送事件 (SSE) 流式傳輸多個伺服器訊息。它取代了 SSE 傳輸。要啟用 STREAMABLE 協議,請設定 spring.ai.mcp.server.protocol=STREAMABLE

  • 無狀態 - 無狀態 MCP 伺服器設計用於簡化部署,其中請求之間不維護會話狀態。它們是微服務架構和雲原生部署的理想選擇。要啟用 STATELESS 協議,請設定 spring.ai.mcp.server.protocol=STATELESS

同步/非同步伺服器 API 選項

MCP 伺服器 API 支援命令式(即同步)和響應式(例如非同步)程式設計模型。

  • 同步伺服器 - 使用 McpSyncServer 實現的預設伺服器型別。它專為應用程式中直接的請求-響應模式而設計。要啟用此伺服器型別,請在配置中設定 spring.ai.mcp.server.type=SYNC。啟用後,它會自動處理同步工具規範的配置。

注意: SYNC 伺服器將只註冊同步 MCP 註解方法。非同步方法將被忽略。

  • 非同步伺服器 - 非同步伺服器實現使用 McpAsyncServer,並針對非阻塞操作進行了最佳化。要啟用此伺服器型別,請使用 spring.ai.mcp.server.type=ASYNC 配置您的應用程式。此伺服器型別會自動設定帶有內建 Project Reactor 支援的非同步工具規範。

注意: ASYNC 伺服器將只註冊非同步 MCP 註解方法。同步方法將被忽略。

MCP 伺服器註解

MCP 伺服器啟動器為基於註解的伺服器開發提供全面支援,允許您使用宣告性 Java 註解而不是手動配置來建立 MCP 伺服器。

關鍵註解

  • @McpTool - 使用自動 JSON 模式生成將方法標記為 MCP 工具

  • @McpResource - 透過 URI 模板提供對資源的訪問

  • @McpPrompt - 為 AI 互動生成提示訊息

  • @McpComplete - 為提示提供自動完成功能

特殊引數

註解系統支援提供額外上下文的特殊引數型別

  • McpMeta - 訪問 MCP 請求中的元資料

  • @McpProgressToken - 接收長時間執行操作的進度令牌

  • McpSyncServerExchange/McpAsyncServerExchange - 用於高階操作的完整伺服器上下文

  • McpTransportContext - 用於無狀態操作的輕量級上下文

  • CallToolRequest - 用於靈活工具的動態模式支援

簡單示例

@Component
public class CalculatorTools {

    @McpTool(name = "add", description = "Add two numbers together")
    public int add(
            @McpToolParam(description = "First number", required = true) int a,
            @McpToolParam(description = "Second number", required = true) int b) {
        return a + b;
    }

    @McpResource(uri = "config://{key}", name = "Configuration")
    public String getConfig(String key) {
        return configData.get(key);
    }
}

自動配置

透過 Spring Boot 自動配置,註解的 Bean 會自動檢測並註冊

@SpringBootApplication
public class McpServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(McpServerApplication.class, args);
    }
}

自動配置將

  1. 掃描帶有 MCP 註解的 Bean

  2. 建立適當的規範

  3. 將它們註冊到 MCP 伺服器

  4. 根據配置處理同步和非同步實現

配置屬性

配置伺服器註解掃描器

spring:
  ai:
    mcp:
      server:
        type: SYNC  # or ASYNC
        annotation-scanner:
          enabled: true

其他資源

示例應用程式

其他資源

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