このバージョンはまだ開発中であり、まだ安定しているとは考えられていません。最新のスナップショットバージョンについては、Spring AI 1.1.2 を使用してください。

MCP サーバー Boot スターター

モデルコンテキストプロトコル(MCP)サーバー (英語) は、標準化されたプロトコルインターフェースを通じて AI アプリケーションに特定の機能を提供するプログラムです。各サーバーは、特定のドメインに特化した機能を提供します。

Spring AI MCP サーバー Boot スターターは、Spring Boot アプリケーションで MCP サーバー (英語) を設定するための自動構成機能を提供します。MCP サーバー機能と Spring Boot の自動構成システムをシームレスに統合できます。

MCP サーバー Boot スターターは以下を提供します。

  • ツール、リソース、プロンプトを含む MCP サーバーコンポーネントの自動構成

  • STDIO、SSE、Streamable-HTTP、ステートレスサーバーなど、さまざまな MCP プロトコルバージョンのサポート

  • 同期と非同期の両方の動作モードをサポート

  • 複数のトランスポート層オプション

  • 柔軟なツール、リソース、迅速な仕様

  • 変更通知機能

  • 自動 Bean スキャンおよび登録機能を備えたアノテーションベースのサーバー開発

MCP サーバー Boot スターター

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 or empty

Streamable-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 (リアクティブ)

サーバータイプ

依存

プロパティ

南東 WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=SSE or empty

Streamable-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 リクエストを使用して複数のクライアント接続を処理できます。オプションで、複数のサーバーメッセージに対応する Server-Sent Events(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 を設定します。有効にすると、同期ツール仕様の構成が自動的に処理されます。

NOTE : SYNC サーバーは、MCP アノテーションが付けられた同期メソッドのみを登録します。非同期メソッドは無視されます。

  • 非同期サーバー - 非同期サーバーの実装は McpAsyncServer を使用し、ノンブロッキング操作に最適化されています。このサーバー型を有効にするには、アプリケーションを spring.ai.mcp.server.type=ASYNC で構成します。このサーバー型は、組み込みのプロジェクト Reactor サポートを使用して、非同期ツール仕様を自動的に設定します。

NOTE : ASYNC サーバーは、MCP アノテーションが付けられた非同期メソッドのみを登録します。同期メソッドは無視されます。

MCP サーバーアノテーション

MCP サーバー Boot スターターは、アノテーションベースのサーバー開発を包括的にサポートし、手動構成の代わりに宣言型 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

追加リソース

アプリケーション例

追加リソース