Anthropic の MCP を用いたコード実行:エージェント効率の向上
TL;DR
Anthropic は、エージェントが直接ツール呼び出しを行う代わりにコード実行を介して MCP サーバーと対話できることを実証し、トークン消費を最大 98.7% 削減し、レイテンシを低減しながら、プライバシーと状態を維持できることを示しました。
MCP に新しい対話モデルが必要な理由
MCP(Model Context Protocol)は、AI エージェントがユニバーサル API を通じて外部ツールを呼び出せるようにするオープン標準です。2024 年 11 月の開始以来、主要言語向けの数千の MCP サーバーと SDK が作成され、MCP はエージェントをツールやデータに接続する事実上の標準となっています。
しかし、エージェントが 数百 のサーバーに接続するにつれて、トークンを消費する 2 つのパターンが浮上します:
- ツール定義がコンテキストウィンドウを圧迫します。 すべてのツールの説明を事前に読み込むと、モデルがユーザーのリクエストを確認する前に数十万トークンが必要になる場合があります。
- 中間結果がモデルを経由します。 各ツール呼び出しの生の出力が LLM に送り返され、ステップごとに複製されるため、大きなドキュメントでは数万トークンが追加される可能性があります。
どちらのパターンも推論コストとレイテンシを増加させ、モデルのコンテキスト制限を超える可能性があります。
トークン効率の高いブリッジとしてのコード実行
ツール定義を直接 LLM に渡す代わりに、エージェントは MCP サーバーを コード API として扱うことができます。エージェントは必要なツールモジュールをインポートし、それらを呼び出し、サンドボックス化された実行環境内で結果を処理するコードを記述します。このアプローチは上記の 2 つの問題を解決します:
- オンデマンド読み込み:エージェントは必要なツールを表すファイルのみを読み取り、コンテキストを約 150k トークンから約 2k トークン(98.7% 削減)に縮小します。
- ローカルでの結果処理:データはモデルにトークンが送り返される前にコード内でフィルタリング、集約、または変換され、巨大なペイロードがコンテキストウィンドウに入るのを防ぎます。
TypeScript の例では、エージェントが利用可能なツールの仮想ファイルツリーを生成し、必要なときにのみ getDocument.ts と updateRecord.ts をインポートする様子を示しています。同じパターンは MCP SDK がサポートする任意の言語で機能します。
MCP でのコード実行の主な利点
段階的開示
エージェントはファイルシステム(または search_tools エンドポイント)を探索して、関連するツール定義のみを発見できます。詳細レベル パラメータ(名前のみ、名前 + 説明、完全なスキーマ)を追加すると、コンテキスト使用量をさらに削減できます。
コンテキスト効率の高いツール結果
大規模なデータセットは、モデルに到達する前にトリミングできます。たとえば、10,000 行のスプレッドシートを取得して 5 行のみを返すと、トークン負荷が劇的に削減されます。同じ手法は、結合、集約、フィールド抽出にも適用できます。
強力な制御フロー
ループ、条件分岐、エラーハンドリングは、個々のツール呼び出しの連鎖ではなく、ネイティブコードで表現されます。これにより、「呼び出し → 待機 → 呼び出し」の往復がなくなり、ファーストトークンまでの レイテンシが短縮されます。
プライバシーを保護する操作
中間データは実行サンドボックス内に留まります。機密フィールドはモデルに公開される前にトークン化でき、PII が LLM のコンテキストに表示されないようにします。MCP クライアントは、データをダウンストリームツールに渡す際に自動的にトークンを解除できます。
状態の永続化と再利用可能なスキル
エージェントは中間結果をファイルに書き込むことができ、再開可能なワークフローを可能にします。生成されたコードは再利用可能な関数として保存でき、SKILL.md マニフェストとともにパッケージ化して、モデルが専門タスクのために呼び出せるスクリプトと指示のフォルダである スキル を形成できます。
トレードオフと運用上の考慮事項
エージェントが生成したコードを実行するには、リソース制限、監視、適切な分離を備えた安全なサンドボックスが必要です(Anthropic の コードサンドボックス化ドキュメント を参照)。これらのインフラストラクチャコストは、トークン削減、レイテンシ向上、およびより豊富な構成機能と比較検討する必要があります。
実用的なポイント
- エージェントが 多数の MCP ツールと対話する必要がある場合や、大規模な データペイロードを処理する場合は、コード実行を採用します。
- 段階的開示(ファイルシステムナビゲーションまたは
search_tools)を使用して、コンテキストサイズを最小限に抑えます。 - サンドボックス化された実行を活用して、プライバシーを強化し、ステップ間で状態を維持します。
- 頻繁に使用するコードを スキル としてパッケージ化し、将来のエージェント開発を加速します。
コミュニティへの招待
Anthropic は、開発者がこのパターンを試し、結果を MCP コミュニティと共有することを推奨しています(リンク)。