モデルコンテキストプロトコル (MCP)

MCP は初めてですか ? 簡単な導入と実践的な例については、MCP 入門ガイドから始めてください。

モデルコンテキストプロトコル (英語) (MCP) は、AI モデルが外部ツールやリソースと構造的に連携できるようにする標準化されたプロトコルです。AI モデルと現実世界をつなぐ架け橋として考えてみてください。一貫したインターフェースを通じて、データベース、API、ファイルシステム、その他の外部サービスにアクセスできるようになります。複数のトランスポートメカニズムをサポートし、さまざまな環境に対応できる柔軟性を提供します。

MCP Java SDK (英語) は、モデルコンテキストプロトコルの Java 実装を提供し、同期と非同期の両方の通信パターンを通じて AI モデルおよびツールとの標準化された対話を可能にします。

Spring AI は、専用の Boot スターターと MCP Java アノテーションを通じて MCP を包括的にサポートしており、外部システムにシームレスに接続できる高度な AI 搭載アプリケーションの構築をこれまで以上に容易にします。つまり、Spring 開発者は MCP エコシステムの両側、つまり MCP サーバーを利用する AI アプリケーションの構築と、Spring ベースのサービスを幅広い AI コミュニティに公開する MCP サーバーの作成の両方に参加できるということです。Spring イニシャライザーを使用して、MCP サポートを備えた AI アプリケーションをブートストラップしましょう。

MCP Java SDK アーキテクチャ

このセクションでは、MCP Java SDK アーキテクチャ (英語) の概要を説明します。Spring AI MCP 統合については、Spring AI MCP Boot スターターのドキュメントを参照してください。

Java MCP 実装は、保守性と柔軟性を分離する 3 層アーキテクチャに従います。

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、ストリーム可能な HTTP、ステートレスストリーム可能な HTTP、SSE

Java MCP Server Architecture

低レベルの MCP クライアント / サーバー API を使用した詳細な実装ガイダンスについては、MCP Java SDK ドキュメント (英語) を参照してください。Spring Boot を使用した簡略化されたセットアップについては、以下に説明する MCP Boot スターターを使用してください。

Spring AI MCP 統合

Spring AI は、次の Spring Boot スターターを通じて MCP 統合を提供します。

クライアントスターター

  • spring-ai-starter-mcp-client - STDIO、サーブレットベースの 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 or empty

Streamable-HTTP WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=STREAMABLE

ステートレスストリーミング可能 HTTP 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

ステートレスストリーミング可能 -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 スキーマを自動生成する

  • 特別なパラメーターとコンテキスト情報にアクセスする

主な機能は次のとおりです。