概要
https://azukiazusa.dev/blog/mcp-tool-context-overflow/
詳細内容
## MCP ツールのコンテキスト圧迫の問題とその解決策
https://azukiazusa.dev/blog/mcp-tool-context-overflow/
MCPツールの普及に伴うコンテキスト圧迫問題を解決するため、Progressive disclosureやコード実行による効率的なツール呼び出しなど、LLMエージェントのコンテキスト管理を最適化する実践的な手法を解説します。
**Content Type**: ⚙️ Tools
**Language**: ja
**Scores**: Signal:4/5 | Depth:4/5 | Unique:3/5 | Practical:5/5 | Anti-Hype:4/5
**Main Journal**: 81/100 | **Annex Potential**: 77/100 | **Overall**: 80/100
**Topics**: [[MCP, コンテキストエンジニアリング, LLMエージェント, ツール呼び出し, Progressive Disclosure]]
Model Context Protocol (MCP) の普及に伴い、多数のツール定義がLLMのコンテキストを圧迫し、タスク達成率の低下や「Context Rot(コンテキストの腐敗)」を引き起こす問題が顕在化しています。LLMがタスクを成功させるためには、限られたコンテキストウィンドウに適切な情報を厳選して提供する「コンテキストエンジニアリング」が極めて重要です。現在、ほとんどのMCPクライアントはツール定義(ツール名、説明、パラメーターなど)をシステムプロンプトに事前に一括で読み込む設計となっており、多くの場合、タスクに不必要なツールまでが渡され、コンテキストを肥大化させています。例えば、複数のMCPサーバーを利用する場合、ツールの定義だけで数万トークンを消費することが示されています。
この課題を解決するため、いくつかの実践的なアプローチが提案されています。
1. **Progressive disclosure(段階的開示)**: Anthropicが提唱するこの概念は、Claude Skillsに採用されています。MCPクライアントがツールの定義を一度にすべてLLMに渡すのではなく、エージェントが各ツールの使用時期を判断できる最小限の情報(例:nameとdescription)のみを最初に渡し、必要に応じて追加の情報を段階的に提供します。これにより、初期コンテキストを大幅に削減し、LLMの処理効率を高めます。
2. **MCPを使ったコード実行**: MCPツールを直接公開する代わりに、LLMにTypeScriptなどのコードAPIを呼び出させてタスクを達成させる方法です。
* **Cloudflare Code Mode**: MCPツールをTypeScript APIに変換し、LLMがそのAPIを呼び出すコードを記述することで、より複雑なツール処理やトークン節約を可能にします。LLMは必要なツールだけを選択的に呼び出し、中間結果のフィルタリングなどを行ってから結果を返すことができます。
* **Anthropicの手法**: MCPサーバーから利用可能なツールをファイルツリーとして生成し、エージェントがファイルシステムを探索して必要に応じてツール定義を読み込むアプローチも、実質的にProgressive disclosureの考え方に基づいています。
3. **単一の検索ツールまたはエージェントモード**: MCPサーバーが、関連するツール定義を検索するための`search_tools`といった単一のツールのみを公開する方法です。LLMはまずこの検索ツールを呼び出して必要なツールの定義を取得し、実行します。Sentry MCPサーバーの「エージェントモード」も類似のアプローチで、`use_sentry`という単一ツールを通じて組み込みAIエージェントが自然言語リクエストを処理し、内部で必要に応じてツールを呼び出す仕組みを提供しています。
これらの手法はすべて、LLMに渡すコンテキストを最小限に抑え、情報過多による性能低下(Context Rot)を防ぎ、より効率的にAIエージェントがタスクを達成できるようにすることを目的としています。Webアプリケーションエンジニアは、これらのアプローチを理解し導入することで、より高性能でコスト効率の高いAIエージェントを開発できるでしょう。