MCPのコンテキスト肥大化を解消するCode Modeの活用
- •MCPサーバーはツール読み込み時に最大400Kトークンを消費し、コンテキスト肥大化の問題に直面している。
- •CloudflareのCode Mode MCPは、実行ベースのツール導入により入力トークン使用量を99.9%削減した。
- •ZenStackはスキーマと実行を分離するアプローチを採用し、複雑なデータベースクエリのトークン効率を改善した。
AIモデルを外部データと接続するための標準規格であるModel Context Protocol(MCP)は、ツール定義がモデルのメモリを圧迫する「コンテキスト肥大化」という課題に直面している。複雑なMCPサーバーツールを読み込むと最大400Kトークンを消費する場合があり、多くのアプリケーションで利用が困難になるという報告が相次いでいる。この問題は、深くネストされたデータベース関係を許容するオブジェクト関係マッピング(ORM)クエリAPIを公開する際に特に顕著となる。これらの非効率性を緩和するため、開発者は従来のMCPツールスキーマよりもトークン効率が高いCLIベースのワークフローを優先する「エージェントスキル」への移行を加速させている。
Cloudflareは最近、API対話を簡素化するために「Code Mode」をMCPに導入した。このモードでは「search」と「execute」という2つのツールのみを公開し、大規模言語モデル(LLM)が直接コードを記述できるようにする。この手法により、APIエンドポイントの数に関係なくフットプリントを一定に保つことが可能となり、Cloudflareは入力トークン使用量を99.9%削減した。その結果、リクエストあたりの総消費量は約1kトークンにまで抑えられている。これに触発され、ZenStackも独自のデータベース向けMCPサーバーの拡張性問題を解決するため、同様のアーキテクチャを開発した。
ZenStackの実装では、「schema」「execute」「check」という3つの専門ツールを活用する。「schema」ツールはアプリケーションの全スキーマをLLMに送信してコンテキストとして提供し、「execute」ツールがfindManyやcreateManyといった関数呼び出しを処理する。さらに「check」ツールは実行前にクエリパラメータを検証し、正確性の確保とランタイムエラーの低減を図る。50以上のモデルを含む複雑なアプリケーションを用いたテストでは、Sonnet 4.6を搭載したClaudeデスクトップ上で、10以上のモデルがネストされたクエリを正常に管理できた。この手法により、クエリ操作の妥当性とパフォーマンスが維持され、冗長なスキーマ定義によってコンテキストウィンドウが溢れる事態を防いでいる。