このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring AI 2.0.1 を使用してください! |
モデルコンテキストプロトコル (MCP)
| MCP は初めてですか ? 簡単な導入と実践的な例については、MCP 入門ガイドから始めてください。 |
モデルコンテキストプロトコル (英語) (MCP) は、AI モデルが外部ツールやリソースと構造的に連携できるようにする標準化されたプロトコルです。AI モデルと現実世界をつなぐ架け橋として考えてみてください。一貫したインターフェースを通じて、データベース、API、ファイルシステム、その他の外部サービスにアクセスできるようになります。複数のトランスポートメカニズムをサポートし、さまざまな環境に対応できる柔軟性を提供します。
MCP Java SDK (英語) は、モデルコンテキストプロトコルの Java 実装を提供し、同期と非同期の両方の通信パターンを通じて AI モデルおよびツールとの標準化された対話を可能にします。
Spring AI は、専用の Boot スターターと MCP Java アノテーションによる包括的なサポートで MCP に対応しており、外部システムにシームレスに接続できる高度な AI アプリケーションの構築がこれまで以上に容易になります。つまり、Spring の開発者は、MCP サーバーを利用する AI アプリケーションの構築と、Spring ベースのサービスを AI コミュニティ全体に公開する MCP サーバーの作成という、MCP エコシステムの両側で活動できます。Spring イニシャライザーを使用して、MCP サポート付きの AI アプリケーションをブートストラップしましょう。
MCP Java SDK アーキテクチャ
| このセクションでは、MCP Java SDK アーキテクチャ (英語) の概要について説明します。Spring AI MCP との統合については、Spring AI MCPBoot スターターのドキュメントを参照してください。 |
Java MCP 実装は、保守性と柔軟性を分離する 3 層アーキテクチャに従います。
クライアント / サーバー層 (上)
最上位層は、主要なアプリケーションロジックとプロトコル操作を処理します。
McpClient - クライアント側の操作とサーバー接続を管理します
McpServer - サーバー側のプロトコル操作とクライアントリクエストを処理します
どちらのコンポーネントも、通信管理のために下のセッション層を利用しています。
セッション層 (垂直方向の中央)
中間層は通信パターンを管理し、接続状態を維持します。
McpSession - コアセッション管理インターフェース
McpClientSession - クライアント固有のセッション実装
McpServerSession - サーバー固有のセッション実装
トランスポート層 (下)
最下層は実際のメッセージの転送と直列化を処理します。
McpTransport - JSON-RPC メッセージの直列化とデ直列化を管理します
複数のトランスポート実装をサポート (STDIO、HTTP/SSE、Streamable-HTTP など。)
あらゆる高レベルコミュニケーションの基盤を提供する
| MCP クライアント (英語) | |
|---|---|
MCP クライアントは、モデルコンテキストプロトコル (MCP) アーキテクチャの主要コンポーネントであり、MCP サーバーとの接続を確立および管理するロールを担います。プロトコルのクライアント側を実装し、次の処理を行います。
| ![]() |
| MCP サーバー (英語) | |
|---|---|
MCP サーバーは、モデルコンテキストプロトコル (MCP) アーキテクチャの基本コンポーネントであり、クライアントにツール、リソース、機能を提供します。プロトコルのサーバー側を実装し、次の機能を果たします。
| ![]() |
低レベルの MCP クライアント / サーバー API を使用した詳細な実装ガイダンスについては、MCP Java SDK ドキュメント (英語) を参照してください。Spring Boot を使用した簡略化されたセットアップについては、以下に説明する MCP Boot スターターを使用してください。
Spring AI MCP 統合
Spring AI は、以下の Spring Boot スターターを通じて MCP との統合を提供します。
クライアントスターター
spring-ai-starter-mcp-client-STDIO、サーブレットベースのStreamable-HTTP、Stateless Streamable-HTTP、SSEサポートを提供するコアスターターspring-ai-starter-mcp-client-webflux- WebFlux ベースのStreamable-HTTP、Stateless Streamable-HTTP、SSEトランスポート実装
サーバースターター
WebMVC
サーバータイプ | 依存 | プロパティ |
|
|
|
|
| |
|
|
Spring AI MCP アノテーション
Spring AI は、プログラムによる MCP クライアントおよびサーバーの設定に加え、MCP アノテーションモジュールを通じて MCP サーバーおよびクライアント向けのアノテーションベースのメソッド処理機能を提供します。このアプローチにより、Java アノテーションを用いた簡潔で宣言的なプログラミングモデルを用いて、MCP 操作の作成と登録が簡素化されます。
MCP アノテーションモジュールを使用すると、開発者は次のことが可能になります。
簡単なアノテーションを使用して、MCP ツール、リソース、プロンプトを作成します。
クライアント側の通知とリクエストを宣言的に処理する
定型コードを削減し、保守性を向上させる
ツールパラメーターの JSON スキーマを自動生成する
特別なパラメーターとコンテキスト情報にアクセスする
主な機能は次のとおりです。
サーバーアノテーション :
@McpTool、@McpResource、@McpPrompt、@McpCompleteクライアントアノテーション :
@McpLogging、@McpSampling、@McpElicitation、@McpProgress特別なパラメーター :
McpSyncServerExchange、McpAsyncServerExchange、McpTransportContext、McpMeta自動検出 : 設定可能なパッケージの包含 / 除外によるアノテーションスキャン
Spring Boot 統合 : MCPBoot スターターとのシームレスな統合
Spring AI 2.0 へのアップグレード
Spring AI 2.0 以降、Spring 固有の MCP トランスポート実装(mcp-spring-webflux および mcp-spring-webmvc)は MCP Java SDK に同梱されなくなりました。これらは Spring AI プロジェクト自体に移動されました。これは互換性を損なう変更であり、これらのトランスポートアーティファクトまたはクラスを直接参照するアプリケーションでは、依存関係とインポートの更新が必要になります。
Maven 依存グループ ID の変更
mcp-spring-webflux および mcp-spring-webmvc アーティファクトは、io.modelcontextprotocol.sdk グループから org.springframework.ai に移動されました。
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webflux</artifactId>
</dependency>
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webmvc</artifactId>
</dependency><dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>mcp-spring-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>mcp-spring-webmvc</artifactId>
</dependency>spring-ai-bom または Spring AI のスターター依存関係(spring-ai-starter-mcp-server-webflux、spring-ai-starter-mcp-server-webmvc、spring-ai-starter-mcp-client-webflux)を使用する場合、明示的なバージョン指定は不要です。BOM が自動的に管理します。 |
Java パッケージの再配置
すべての輸送クラスは org.springframework.ai パッケージに移行されました。
| クラス | 古いパッケージ (MCP SDK) | 新規パッケージ (Spring AI) |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| クラス | 古いパッケージ (MCP SDK) | 新規パッケージ (Spring AI) |
|---|---|---|
|
|
|
|
|
|
// Before
import io.modelcontextprotocol.server.transport.WebFluxSseServerTransportProvider;
import io.modelcontextprotocol.server.transport.WebMvcSseServerTransportProvider;
import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
import io.modelcontextprotocol.client.transport.WebClientStreamableHttpTransport;
// After
import org.springframework.ai.mcp.server.webflux.transport.WebFluxSseServerTransportProvider;
import org.springframework.ai.mcp.server.webmvc.transport.WebMvcSseServerTransportProvider;
import org.springframework.ai.mcp.client.webflux.transport.WebFluxSseClientTransport;
import org.springframework.ai.mcp.client.webflux.transport.WebClientStreamableHttpTransport;
