AIエージェントのコンテキスト消費を98%削減するOSS「context-mode」

Claude Code や Gemini CLI などの AI コーディングエージェントを使っていると、いつの間にかコンテキストが埋まっていく経験はないでしょうか。MCP ツールを数回呼び出しただけで「コンテキストを圧縮してもよいですか?」と聞かれ、/compact を実行した直後にエージェントが「どのファイルを編集していたか」を忘れる——そんな経験を繰り返しているエンジニアは少なくないはずです。
この問題の根本原因は、MCP ツールが呼び出されるたびに生データがそのままコンテキストウィンドウに流れ込む設計にあります。Playwright のスナップショットが 1 回で 56 KB、GitHub の Issue を 20 件取得したら 59 KB、アクセスログなら 45 KB——これらが積み重なれば、30 分で 200K トークンの 40% 近くが消費されてしまいます。
context-mode は、このコンテキスト爆発問題を解決するために設計された MCP サーバーです。ツール出力をサンドボックス化し、315 KB のデータを 5.4 KB に圧縮(98% 削減)しながら、セッションの継続性も担保します。本記事では context-mode の仕組み・インストール方法・類似ツールとの比較を、公式ドキュメントとソースコードに基づいて解説します。

目次
作業時間削減
システム化を通して時間を生み出し、ビジネスの加速をサポートします。
システム開発が可能に
AIコーディングエージェントが直面するコンテキスト爆発問題とは

MCP ツール呼び出しがコンテキストを侵食するメカニズム
MCP(Model Context Protocol)は、AI コーディングエージェントに外部ツールへのアクセス権を与える標準プロトコルです。ファイル操作・データベース検索・Web ブラウジング・GitHub 操作など、あらゆる作業を MCP ツール経由で実行できます。
しかし現在の MCP の設計上、ツールが返す生データはそのままコンテキストウィンドウに流れ込みます。「ツール呼び出しの結果」は会話履歴の一部として保持され続けるため、同じ操作を繰り返したり複数のツールを組み合わせたりするたびにコンテキストが消費されていきます。
公式 README が示す具体的な数値を見ると、問題の深刻さが分かります:
- Playwright のページスナップショット: 56.2 KB / 1回
- GitHub の Issue 20件取得: 58.9 KB
- アクセスログ解析: 45 KB
- 81 以上の MCP ツールがアクティブな状態: セッション開始前に 143K トークン(72%)が消費
出典: https://github.com/mksglu/context-mode/blob/main/README.md
コンテキスト爆発が引き起こす実害
コンテキストが埋まることによる実害は2つあります。
1. セッション継続時間の短縮 コンテキストが 95% に達すると、Claude Code は自動的に会話を圧縮(auto-compact)します。通常 30〜40 分のセッションで、作業の途中で圧縮が発動します。
2. 文脈の喪失 圧縮後、エージェントは「どのファイルを開いていたか」「どんなエラーが発生していたか」「今どのタスクに取り組んでいたか」を忘れます。再起動のたびに文脈を説明し直す作業が必要となり、開発効率が著しく低下します。
context-mode は、この2つの問題を同時に解決するために設計されました。
context-mode が解決する3つの課題
context-mode は公式 README で3つのコアソリューションを提示しています。
Context Saving — 315 KB を 5.4 KB に圧縮するサンドボックス実行の仕組み
ツール呼び出しをサンドボックス化されたサブプロセスで実行し、stdout(標準出力)のみをコンテキストに返します。生データ(ログ・API レスポンス・スナップショット)はサンドボックス内に留まり、コンテキストウィンドウには流れ込みません。
5 KB を超える出力は自動的に SQLite の FTS5(Full-Text Search)テーブルにインデックス化され、ctx_search ツールで必要な部分だけを取得できます。
主要な MCP ツール(出典: https://github.com/mksglu/context-mode/blob/main/README.md):
ctx_execute — コードをサンドボックスで実行。11言語対応
ctx_batch_execute — 複数コマンドを1回のツール呼び出しで実行
ctx_index — Markdown / テキスト / JSON を FTS5 にインデックス化
ctx_search — BM25 ランキングで関連コンテンツを検索
ctx_fetch_and_index — URL を取得・変換・インデックス化(24時間 TTL キャッシュ)
ctx_execute_file — ファイルを分離実行
実測値(BENCHMARK.md より):
シナリオ | 削減前 | 削減後 | 削減率 |
|---|---|---|---|
Playwright スナップショット | 56.2 KB | 299 B | 99% |
GitHub Issues 20 件 | 58.9 KB | 1.1 KB | 98% |
アクセスログ | 45 KB | 155 B | - |
CSV 分析ファイル | 85 KB | 222 B | - |
フルセッション(21シナリオ) | 315 KB | 5.4 KB | 98% |
Session Continuity — コンパクション後もセッションが途切れない仕組み
context-mode は、フックシステムを利用してセッション中のすべてのイベントを SQLite に記録します。記録されるカテゴリは14種類(ファイル読み書き・ディレクトリ変更・エラー・git 操作・タスク・意思決定・プロジェクトルール・環境設定・スキル・サブエージェント実行・MCP ツール使用・ユーザーの意図・データ参照・ふるまいルール)にわたります。
コンパクションが発生したとき:
- PreCompact フック発火 → SQLite からセッション全イベントを読み取り
- 優先度付き XML スナップショット(≤2 KB)を生成
- スナップショットを session_resume テーブルに保存
- SessionStart フック発火(source: "compact")→ スナップショットを取得
- 「Session Guide」を構築し
<session_knowledge>ディレクティブをコンテキストに注入 - エージェントが最後のユーザープロンプトから作業を継続
この仕組みにより、セッション継続時間が通常の 30 分から約 3 時間に延長されます。
Think in Code — データを直接読まずコードで分析するアプローチ
ファイルやデータをそのままコンテキストに読み込む代わりに、エージェントが「データを分析するスクリプト」を書いてサンドボックスで実行し、結果(stdout)のみをコンテキストに取り込みます。
「50 ファイルを読み込んで関数の数を数える」代わりに、「カウントするスクリプトを 1 本書いて実行する」アプローチです。1本のスクリプトが 10 回のツール呼び出しに相当するため、コンテキスト消費を大幅に削減できます。
context-mode のアーキテクチャと主要ツール
context-mode は3層構造で設計されています(公式ドキュメント https://context-mode.mksg.lu/ より):
- Tool Layer: 6つの MCP ツール(上記参照)
- Engine Layer: サンドボックス実行エンジン・コンテンツストレージ・セキュリティサンドボックス
- Platform Adapter Layer: AI プラットフォーム向けフックディスパッチャ
SQLite FTS5 によるコンテンツインデックスと検索の仕組み
コンテンツのチャンク戦略:
- Markdown: 見出し単位でチャンク。コードブロックは分割せず保持
- テキスト: 行グループ単位でチャンク
- JSON: キーパス単位でチャンク
検索は BM25 ランキング(確率的関連性アルゴリズム)を使用し、3 段階のフォールバック戦略を採用しています:
1. Porter ステマーによる語幹検索 (running / runs / ran → 同一マッチ)
2. トライグラム検索(部分文字列の完全一致)
3. レーベンシュタイン距離によるファジー検索
Claude Code への導入方法

Claude Code プラグインマーケットからの 1 コマンドインストール
Claude Code v1.0.33 以上を使用している場合、最もシンプルな導入方法は以下の一行です(出典: https://context-mode.mksg.lu/):
/plugin marketplace add mksglu/context-mode
または Claude Code 内で:
claude install context-mode@context-mode
フックの自動注入が行われるため、追加設定は不要です。
その他のプラットフォームへの導入(Gemini CLI / VS Code Copilot / Cursor)
Claude Code 以外のプラットフォームでは、まず npm でグローバルインストールを行います:
npm install -g context-mode
その後、各プラットフォームの設定ファイル(.vscode/mcp.json、~/.gemini/settings.json など)に MCP サーバーの設定を追加します。詳細な設定手順は 公式ドキュメント を参照してください。
MCP のみのインストール(フック機能なし)の場合は:
claude mcp add context-mode -- npx -y context-mode
対応プラットフォームと機能のサポート状況
context-mode は12のプラットフォームをサポートしています(公式: https://github.com/mksglu/context-mode/blob/main/docs/platform-support.md)。
フル機能サポート(本番利用可)
プラットフォーム | フックパラダイム | Session Continuity | Context Saving |
|---|---|---|---|
Claude Code | JSON stdin/stdout | ✓ | ✓ |
Gemini CLI | JSON stdin/stdout | ✓ | ✓ |
VS Code Copilot | JSON stdin/stdout | ✓(preview) | ✓ |
部分サポート
プラットフォーム | 制限事項 |
|---|---|
Cursor | PreCompact フックなし(Session Continuity 未対応)、引数変更不可 |
OpenCode | SessionStart 未サポート、実験的 |
Codex CLI | フックディスパッチが未アクティブ(upstream 対応待ち) |
MCP のみ(フックなし)
プラットフォーム | 特記事項 |
|---|---|
Antigravity | Context Saving のみ利用可能(Session Continuity なし) |
Kiro | 同上 |
Zed | 手動でインストラクションファイルのコピーが必要 |
Claude Code・Gemini CLI・VS Code Copilot では Session Continuity(セッション継続性)を含む全機能が利用できます。Cursor などのプラットフォームでは Context Saving のみが動作します。
context-mode と類似ツールの比較
claude-mem との違い — セッション「間」の記憶 vs セッション「内」の圧縮
context-mode と比較対象になりやすいのが claude-mem(GitHub スター: 67,100)です。両者は「AIエージェントのコンテキスト問題を解決する」という大きな目的を共有しますが、アプローチが根本的に異なります。
項目 | context-mode | claude-mem |
|---|---|---|
GitHub スター | 9,882 | 67,100 |
主な目的 | セッション「内」のコンテキスト圧縮 | セッション「間」の記憶・知識の永続化 |
アーキテクチャ | SQLite FTS5(軽量) | SQLite + Chroma Vector DB(重厚) |
HTTP サーバー | 不要 | 要(ポート 37777) |
インストール | 1コマンド(Claude Code) | プラグイン + ワーカーサービス起動 |
ライセンス | ELv2(ソースアベイラブル) | AGPL-3.0 |
向いている用途 | 長いセッション中のリアルタイム圧縮 | セッション間でプロジェクト知識を引き継ぐ |
context-mode は「今のセッション中に消費されるコンテキストを削減する」ことに特化しています。claude-mem は「過去のセッションで得た知識を次のセッションに持ち越す」ことに特化しています。
両者を組み合わせて使うことも技術的には可能です。context-mode でリアルタイムの圧縮を行いながら、claude-mem でセッション間の知識を管理するという使い方です。
利用シーン別の使い分け指針
context-mode が適している場合:
- 1〜3 時間以上の長時間セッションを行うことが多い
- MCP ツール(データベース・GitHub・ブラウザ自動化など)を多用する
- コンテキストの圧縮が頻発して開発効率が落ちている
- 設定の手間を最小化したい(Claude Code なら 1 コマンド)
claude-mem が適している場合:
- セッションをまたいでプロジェクトの文脈を引き継ぎたい
- 意思決定の経緯や過去の実装方針を記録・検索したい
- ローカルに知識グラフを構築したい
ベンチマーク — 実際のコンテキスト削減効果
context-mode の BENCHMARK.md は、すべての測定値が「合成データではなく実際のツール出力」を使用して取得されたと述べています。
2 種類のアプローチによる効率化:
ctx_execute_file(構造化データ向け): ログ・テスト結果・分析データなどの構造化データに適しています。315 KB → 5.5 KB(98% 圧縮)。集計統計が冗長な生データを代替します。
ctx_index + ctx_search(コード・ドキュメント向け): コード例やドキュメントをそのまま保持したい場合に適しています。60 KB → 11 KB(82% 削減)。完全なコードブロックを返すため、実用性を保ちます。
実践的なインパクト:
- フルデバッグセッション: コンテキスト消費が 22.7% → 1.3% に低下
- 解放されたトークン数: 約 42,700 トークン(問題解決に使えるようになる)
- セッション継続時間: 約 30 分 → 約 3 時間
ライセンスと注意事項(Elastic License 2.0)
context-mode は Elastic License 2.0(ELv2) のもとで公開されています。ELv2 は「ソースアベイラブル(Source-Available)」ライセンスであり、OSI(Open Source Initiative)が定義するオープンソースライセンスとは異なります(公式ブログ: https://mksg.lu/blog/context-mode)。
できること:
- ソースコードの閲覧・利用
- フォーク・改変・再配布
- 個人・商用プロジェクトでの利用
禁止されていること:
- ホスト型・マネージドサービスとして第三者に提供すること
- ライセンス表示の削除
個人の開発環境・商用プロジェクト内部での利用は問題ありません。「context-mode 自体をサービスとして販売する」ことが禁止されているだけです。
なお、リポジトリの SPDX ライセンス識別子は「NOASSERTION」となっていますが、実際のライセンスは ELv2 です(LICENSE ファイルに明記)。
まとめ
context-mode は、AI コーディングエージェントが直面するコンテキスト爆発問題を解決するために設計された MCP サーバーです。主要な価値は3つあります:
- 98% のコンテキスト圧縮: ツール出力をサンドボックス化し、315 KB のデータを 5.4 KB に削減
- セッション継続性: コンパクション後もセッション文脈を自動復元し、30分のセッションを3時間に延長
- Claude Code 導入の簡単さ: 1コマンドでインストール、設定不要
採用を検討すべきエンジニアのプロフィール:
- MCP ツールを多用する Claude Code / Gemini CLI ユーザー
- 長時間のコーディングセッションでコンテキスト圧縮に悩まされている人
- ローカルで完結する(クラウド依存なし)ソリューションを求めている人
github.com/mksglu/context-mode(スター数: 9,882、2026年4月25日時点)は、現在もアクティブにメンテナンスされており、リリース頻度も高い状態を維持しています。コンテキストウィンドウの消費が開発効率のボトルネックになっていると感じるなら、導入コストが低い Claude Code プラグインとして試してみる価値があります。
時間を自由に
挑戦と成長を共にできるメンバーとの出会いをお待ちしています。









