モデルコンテキストプロトコル · rmcp 2.2

エージェントをシステムに接続する 仕事が行われる場所。

MCP を使用すると、別のプログラムが標準コントラクトを通じてツール、情報、再利用可能なプロンプトを公開できるようになります。 ADK-Rust は、これらの機能を型指定されたエージェント ツールに変換し、より広範なプロトコルを公開し、製品の実行中に変化するローカル MCP サーバーのフリートを管理できます。

ツールリソースプロンプト完成定期購入誘導タスクStdioStreamable HTTP

ADK-Rust MCP アーキテクチャ

エージェントに MCP 機能を追加または削除します。

エージェントは、他の ADK-Rust ツールと同様に、MCP 機能を使用します。 MCP は各サーバーに接続しますが、各サーバーは引き続き独自のデータ、ルール、アクションを担当します。

01

代理店商品

仕事を依頼した経験。

エージェントまたはワークフロー

表示が許可されているツールから機能を選択します。

ADKポリシー

通話に関する承認、許可、ガードレール、および監査を適用します。

Toolset
02

ADK-Rust MCP クライアント

ランタイム内の型指定されたアダプター。

McpToolset

ツールを検出し、サーバーのスキーマと結果のコンテンツを保存します。

プロトコル API

リソース、プロンプト、完了、サブスクリプション、引き出し、およびタスク。

サーバーマネージャー

ローカル stdio 接続のレジストリを変更および監視します。

MCP
03

接続境界

所有権と一致するトランスポートを選択してください。

ローカル stdio

ADK-Rust は、ネイティブ バイナリまたは他の子プロセスを開始し、そのセッションを所有します。

Streamable HTTP

ヘッダー、認証、タイムアウトを使用して、独立してホストされているサービスに接続します。

契約書
04

MCPサーバー

各サーバーは、そのサーバーが所有するもののみを公開します。

ツール

アクション

リソース

コンテキスト

プロンプト

テンプレート

タスク

長時間労働

各サーバーは引き続き独自の資格情報、データ アクセス、副作用、サービスの健全性に対して責任を負います。

ビジネスデータ

CRM、ERP、注文、文書、分析、および内部知識。

開発者システム

ソース管理、ビルドツール、ブラウザ、サンドボックス、コーディング環境。

外部サービス

支払い、通信、検索、地図、パートナー API。

スペシャリストのランタイム

メディアの生成、スプレッドシート、コンピュータの使用、およびドメイン固有のサービス。

`McpToolset` は 1 つの接続を管理します。 `McpServerManager` は、変化するローカル接続群を管理します。公式の「rmcp」SDK は、カスタム サーバー、トランスポート、ハンドラー、およびプロトコル拡張機能で引き続き使用できます。

問題から始めましょう

なぜ MCP が必要なのでしょうか?

AI エージェントは、実際の情報を保持し、実際の作業を実行するシステムに到達できる場合に役立ちます。共有プロトコルがなければ、すべてのデータベース、SaaS 製品、ブラウザ ツール、内部サービス、専門ランタイムにカスタム アダプターが必要になります。これらのアダプターは、検出、スキーマ、トランスポート、エラー、認証、ライフサイクル コードを繰り返します。

MCP は、その境界付近に安定した契約を置きます。サーバーは、サーバーが提供するものとその呼び出し方法を説明します。クライアントは実行時にそのカタログを検出します。エージェント アプリケーションは、サーバーの実装をインポートしたり、そのプライベート資格情報を受信したりせずに、レビューされた機能を選択できます。

ADK-Rust は、そのコントラクトを、ネイティブ Rust ツールで使用される同じツールおよび Toolset 抽象化に接続します。このモデルは、通常のエージェント ループを通じて MCP 機能を使用できますが、アプリケーションはプロバイダー固有のスキーマ変換、承認、セッション、テレメトリ、および通話に関する操作ポリシーを維持します。

ツール

エージェントがサーバーに実行を依頼できること

ツールには名前、役立つ説明、入力スキーマ、およびオプションで出力スキーマがあります。例には、注文の読み取り、リポジトリの検索、チケットの更新、スプレッドシートの生成などが含まれます。

リソース

エージェントまたは製品が読み取ることができるコンテキスト

リソースは情報に安定した URI を提供します。データの読み取りがアクションであるかのように見せることなく、ドキュメント、ポリシー、データベース レコード、カタログ、または生成された結果を表すことができます。

プロンプト

サーバーによって公開された再利用可能なメッセージ テンプレート

プロンプトは、注文の調査や展開のレビューなど、サーバーのドメインが所有するタスクに対する適切な指示と入力をキャプチャできます。

誘導

人間の入力が欠けている場合のリクエスト

ツールの呼び出し中に、サーバーはクライアントにフォームを提示するか、承認された URL を開くように要求できます。アプリケーションは引き続き、同意と回答の検証を担当します。

Dynamic MCP management

Capabilities can change while the product keeps running.

An agent product may serve several tenants, workspaces, or operating modes. The useful MCP servers can change when a workspace opens, an administrator enables an integration, a credential rotates, or a specialist process is upgraded.

`McpServerManager` keeps that lifecycle in the application instead of forcing every server definition into startup code. It is designed for local stdio child processes; independently hosted HTTP services remain application-owned connections.

01

Load the registry

Read mcp.json-compatible definitions or construct them in Rust. Disabled servers stay registered without starting.

02

Start and negotiate

Spawn each enabled child and complete the MCP handshake before its capabilities become visible.

03

Discover safely

List tools from running servers, filter the published surface, and prefix only names that collide.

04

Change it live

Add, update, enable, disable, or remove a server without rebuilding the agent application.

05

Supervise the session

Detect a closed connection and apply the server's bounded exponential-backoff restart policy.

06

Save and close

Persist the current registry atomically, cancel MCP sessions, wait for the grace period, and drop child transports.

Practical sequence

Resolve a damaged order with three independently owned capabilities.

The model does not receive database credentials or private API clients. It receives a reviewed catalog of tools and resources. ADK-Rust keeps approval around the consequential replacement call.

Support agent01Discover approved CRM, order, and policy toolsMCP client
MCP client02tools/list over the negotiated connectionsThree MCP servers
Support agent03read_order { order_id: ORD-1042 }Orders server
Orders server04Structured order and delivery evidenceSupport agent
Support agent05Read the current damaged-goods policy resourcePolicy server
Support agent06request_replacement after ADK approvalCRM server
CRM server07Replacement ID, status, and audit evidenceSupport agent

現在のプロトコル表面

ADK-Rust は、ツール呼び出しだけでなく、より広範な MCP プロトコルを使用します。

直接の ADK-Rust API は、エージェント製品が最も頻繁に必要とする機能 (ツールの検出と呼び出し、リソースの読み取り、プロンプトの解決、引数の提案の要求、変更中のリソースのサブスクライブ、引き出し要求への応答、ネゴシエートされた長時間実行ツール タスクのフォロー) をカバーします。

高度なサーバー オーサリング、カスタム クライアント ハンドラー、通知、トランスポート、承認作業、プロトコル拡張機能の場合、adk_tool::mcp::rmcp はフレームワーク内で使用される正確な公式 SDK バージョンを再エクスポートします。これにより、1 つのアプリケーション内で互換性のないプロトコル タイプが混在することが回避されます。

01

エージェント側アダプター

通常の ADK-Rust エージェントおよびツール フロー内で MCP 機能を使用します。

ツール/リスト + ツール/呼び出し
生の入出力スキーマ
テキスト、画像、音声、リソース
ツールフィルター
プロバイダーの正規化
02

コンテキストとガイダンス

MCP をツール呼び出しに置き換えるのではなく、カタログの残りの部分を読んでください。

リソース + テンプレート
プロンプト/リスト + 取得
迅速な完了
リソースの完了
リソースのサブスクリプション
03

インタラクティブで長時間の作業

1 つの即時応答を超えて継続するプロトコル会話をサポートします。

フォームの引き出し
URLの引き出し
交渉されたツールタスク
タスク/取得 + 結果
期限付きキャンセル
04

接続

ローカル プロセスの所有権または個別にホストされるサービスを選択します。

ローカル stdio
Streamable HTTP
カスタムヘッダー
ベアラー + API キー
期限切れセッションの回復
意図的な互換性境界: MCP のサンプリング、ルート、ロギングは、SEP-2577 を通じてアップストリームで非推奨になります。 ADK-Rust はオプトイン互換機能の背後でサンプリングを続けます。これは、新製品の推奨アーキテクチャとしては示されていません。

実例

MCP サーバーを起動からシャットダウンまで管理します。

アプリケーションでは、ワークスペース、顧客、タスクごとに異なる MCP 機能が必要になる場合があります。起動時にすべてのサーバーをハードコーディングすると、これらの変更が困難になります。 McpServerManager は、ローカル MCP サーバーを起動し、ツールを組み合わせ、構成を変更し、接続を監視し、サーバーを正常に閉じるための 1 つの場所をアプリケーションに提供します。

この例は、local-tools という名前の 1 つの構成済みサーバーから始まります。エージェントはエコー ツールを検出して呼び出すことができます。次に、アプリケーションは 2 番目のサーバーを追加して有効にし、その実行構成を置き換え、更新されたレジストリを保存して、再度削除します。すべての変更では、管理画面または構成サービスで使用できる同じ API が使用されます。

この例は完全にマシン上で実行されます。 Rust 実行可能ファイルは、自身のコピーを MCP 子サーバーとして開始するため、ハンドシェイク、ツール検出、ツール呼び出し、再起動、永続性、およびシャットダウンが実際に行われます。モデル、Node.js パッケージ、API キー、またはインターネット接続は必要ありません。

01

1 つのサーバーを起動する

mcp.json 互換構成から local-tools をロードし、その子プロセスを開始し、MCP ハンドシェイクを完了して、そのエコー ツールを検出します。

02

別のサーバーを追加する

スタンバイ ツールを無効として登録し、アプリケーションが機能を使用できるようにする必要があると判断したときに、スタンバイ ツールを有効にして起動します。

03

安全に交換してください

実行中のサーバー定義を更新します。マネージャーは新しい構成で再起動し、置換起動が失敗した場合は以前の定義を復元できます。

04

保存してシャットダウンする

ライブ レジストリを JSON に書き込み、余分なサーバーを無効にして削除してから、すべての MCP セッションと子プロセスを正常に閉じます。

manager.rs錆びる
let manager = McpServerManager::from_json(&config)?
      .with_health_check_interval(Duration::from_secs(15));

  manager.start_server("local-tools").await?;
  manager.start_monitoring();

  manager
      .add_server("standby-tools".into(), standby)
      .await?;
  manager.enable_server("standby-tools").await?;
  manager.start_server("standby-tools").await?;

  manager
      .update_server("standby-tools", replacement)
      .await?;
  manager.save_json_file("mcp.json").await?;
  manager.shutdown().await?;
terminal実際の出力
$ cargo run --manifest-path     examples/mcp_manager/Cargo.toml

  1. Loaded local-tools from mcp.json-compatible configuration
     status: Running
  2. Discovered 1 tool: echo
  3. Called the real child server
     response: {"output":"MCP server replied: dynamic MCP is running"}
  4. Added standby-tools at runtime: Disabled
     enabled and started: Running
  5. Reconfigured the running server and restarted it safely
  6. Saved the live registry
  7. Disabled, removed, and shut down every child server

クライアント、マネージャー、またはサーバー

必要な ADK-Rust MCP 機能を選択します。

ほとんどのエージェント アプリケーションは MCP クライアントです。既存のサーバーに接続し、選択したツールをエージェントが利用できるようにします。ワークスペースまたは管理者の統合を可能にする製品は、マネージャーの背後にローカル stdio 接続を配置できます。新しい機能を公開するチームは、再エクスポートされた rmcp サーバー API を使用し、ADK-Rust クライアントからサーバーをテストします。

Your situation
Use
Why
One known MCP service
McpToolset
One initialized connection, filters, tools, resources, prompts, completion, subscriptions, elicitation, and tasks.
A changing set of local integrations
McpServerManager
Runtime add, update, enable, disable, remove, save, monitor, restart, aggregation, and collision-safe names.
A separately hosted MCP service
McpHttpClientBuilder
Streamable HTTP with request timeout, headers, bearer or API-key injection, and expired-session recovery.
You own the capability being published
adk_tool::mcp::rmcp
Build the MCP server with the official SDK version already aligned with ADK-Rust.

プロダクションデザイン

MCP を安全にデプロイします。

MCP は、検出と通信を一貫させます。エージェントがどのシステムに到達する必要があるか、どのアクションに承認が必要か、資格情報の発行方法、依存関係が失敗した場合に何が起こるかなどは決定されません。これらは依然として製品とプラットフォームの決定事項です。

サーバー境界を選択してください

1 つのチームまたはシステムが所有する一貫した機能を中心にサーバーを作成します。無関係な資格情報やリスク レベルにまたがるツールを使用する 1 つの巨大なサーバーは避けてください。

小さなサーフェスを公開する

モデルがツールを認識する前にツールをフィルタリングします。読み取り操作を、書き込み、支払い、削除、展開、その他の結果的なアクションとは区別してください。

ADK-Rust で承認を維持する

mcp.json autoApprove は互換性のために保存されています。フレームワークの認可、確認ハンドラー、またはアプリケーション ポリシーをバイパスすることはありません。

輸送と所有権を一致させる

アプリケーションがローカルの子プロセスを所有している場合は、stdio を使用します。別のデプロイメントが可用性、ID、およびスケーリングを所有している場合は、Streamable HTTP を使用します。

コンテンツを信頼できないものとして扱う

ツールの説明、スキーマ、リソースの内容、および結果はシステムの境界を越えます。引数、バインドされた結果サイズを検証し、敵対的な命令からモデル コンテキストを保護します。

依存関係を操作する

接続とタスクのタイムアウトを設定し、ライフサイクルの変更を記録し、ビジネスの依存関係を個別に調査し、1 つのサーバーが使用できない場合に製品がどのように動作するかを決定します。

認証の詳細: HTTP ビルダーは、ベアラー トークン、カスタム API キー ヘッダー、および固定 OAuth 2.0 クライアント認証情報トークン エンドポイントをサポートします。完全な MCP 認証検出、ブラウザー認証、PKCE、およびリソース インジケーターのネゴシエーションでは、公式の rmcp 認証 API または ID レイヤーを使用する必要があります。

便利なシステムを接続する

1 人のエージェントに慎重に選ばれた機能を与え、ネットワークを成長させます。

理解しているサーバーから始めて、そのカタログをフィルターし、読み取り専用ツールを 1 つ呼び出して、完全な結果を検査します。製品にそれぞれの明確な理由がある場合は、書き込みアクション、動的管理、リモート サービス、引き出し、長時間実行タスクを追加します。