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

モデルコンテキストプロトコル (英語) (MCP) は、AI モデルが外部のツールやリソースと構造化された方法でやり取りできるようにする標準化されたプロトコルです。複数のトランスポートメカニズムをサポートし、さまざまな環境にわたって柔軟性を提供します。

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

Spring AI MCP は、Spring Boot 統合により MCP Java SDK を継承し、クライアントスターターサーバースターターの両方を提供します。Spring イニシャライザーを使用して、MCP サポートで AI アプリケーションをブートストラップします。

MCP Java SDK 0.8.0 の重大な変更 ⚠️

MCP Java SDK バージョン 0.8.0 では、新しいセッションベースのアーキテクチャを含むいくつかの重大な変更が導入されています。Java SDK 0.7.0 からアップグレードする場合は、詳細な手順については移行ガイド [GitHub] (英語) を参照してください。

MCP Java SDK アーキテクチャ

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

Java MCP 実装は、3 層アーキテクチャに従います。

MCP Stack Architecture
  • クライアント / サーバー層 : McpClient はクライアント側の操作を処理し、McpServer はサーバー側のプロトコル操作を管理します。どちらも通信管理に McpSession を利用します。

  • セッション層 (McpSession) : DefaultMcpSession 実装を通じて通信パターンと状態を管理します。

  • トランスポート層 (McpTransport) : 複数のトランスポート実装をサポートし、JSON-RPC メッセージの直列化と逆直列化を処理します。

MCP クライアント (英語)

MCP クライアントは、モデルコンテキストプロトコル (MCP) アーキテクチャの主要コンポーネントであり、MCP サーバーとの接続を確立および管理するロールを担います。プロトコルのクライアント側を実装し、次の処理を行います。

  • サーバーとの互換性を確保するためのプロトコルバージョンネゴシエーション

  • 利用可能な機能を決定するための機能交渉

  • メッセージ転送と JSON-RPC 通信

  • ツールの発見と実行

  • リソースのアクセスと管理

  • プロンプトシステムインタラクション

  • オプションフィーチャー:

    • ルート管理

    • サンプリングサポート

  • 同期操作と非同期操作

  • 交通手段のオプション:

    • プロセスベースの通信のための stdio ベースのトランスポート

    • Java HttpClient ベースの SSE クライアントトランスポート

    • リアクティブ HTTP ストリーミング用の WebFlux SSE クライアントトランスポート

Java MCP Client Architecture
MCP サーバー (英語)

MCP サーバーは、モデルコンテキストプロトコル (MCP) アーキテクチャの基本コンポーネントであり、クライアントにツール、リソース、機能を提供します。プロトコルのサーバー側を実装し、次の機能を果たします。

  • サーバー側プロトコル操作の実装

    • ツールの公開と発見

    • URI ベースのアクセスによるリソース管理

    • 迅速なテンプレートの提供と処理

    • 顧客との機能交渉

    • 構造化されたログと通知

  • 同時クライアント接続管理

  • 同期および非同期 API のサポート

  • トランスポート実装:

    • プロセスベースの通信のための stdio ベースのトランスポート

    • サーブレットベースの SSE サーバートランスポート

    • リアクティブ HTTP ストリーミング用の WebFlux SSE サーバートランスポート

    • サーブレットベースの HTTP ストリーミング用の WebMVC 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 および HTTP ベースの SSE サポートを提供するコアスターター

  • spring-ai-starter-mcp-client-webflux - WebFlux ベースの SSE トランスポート実装

サーバースターター

  • spring-ai-starter-mcp-server - STDIO トランスポートをサポートするコアサーバー

  • spring-ai-starter-mcp-server-webmvc - Spring MVC ベースの SSE トランスポート実装

  • spring-ai-starter-mcp-server-webflux - WebFlux ベースの SSE トランスポート実装