Context Rot Detection について
AI エージェントのコンテキスト健全性を評価する MCP サービスです。トークン使用量、検索精度、ツール呼び出し負荷、セッション時間を基にスコアを算出し、複数モデルの評価、履歴、改善案を提供します。
主な機能
- 010〜100のコンテキスト健全性スコア
- 02モデル別の劣化曲線
- 03HuggingFaceのコンテキスト長解決
- 04Lost-in-the-middleリスク評価
- 05エージェント履歴とサービス統計
- 06コンテキスト回復の推奨事項
活用シーン
- 01長時間セッションのコンテキスト品質監視
- 02重要な判断前のエージェント状態確認
- 03モデルごとのコンテキストリスク評価
- 04特定エージェントの健全性変化の確認
MCP 対応
MCP サーバーは、コンテキスト健全性チェック、履歴照会、サービス統計のツールをクライアントに提供します。エージェント ID 単位で記録でき、HuggingFaceモデルの設定はリポジトリから取得してキャッシュします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| context_summary | string | いいえ | 現在のタスクと最近の操作の簡単な概要(このツールは生のコンテキストではなく、パターンを分析します) |
| token_count | integer | はい | 現在のコンテキストウィンドウ内の推定トークン数 |
| session_duration_minutes | integer | いいえ | このセッションの経過時間 |
| tool_calls_count | integer | いいえ | このセッションで行われたツール呼び出しの回数 |
| model | string | いいえ | 実行中の LLM モデル。チューニング済みプロファイルがある既知のモデル:claude-3.5-sonnet、claude-3.7-sonnet、claude-sonnet-4、claude-opus-4、claude-opus-4-5、claude-haiku-3.5、gpt-4o、gpt-4o-mini、gpt-4.1、gpt-4.1-mini、o3、o4-mini、gemini-2.0-flash、gemini-2.5-pro、gemini-2.5-flash。HuggingFace のリポジトリ ID(例:"meta-llama/Llama-3.1-70B-Instruct")を渡すこともでき、コンテキストウィンドウは自動検出されます。それ以外の文字列では、保守的なデフォルト設定が使用されます。 |
| agent_id | string | いいえ | ヘルス履歴の追跡に使用する、このエージェントインスタンスの任意の一意識別子 |
詳細
コンテキスト劣化の検出
AI エージェントが自身の認知状態を把握できるようにする MCP サービスです。
長時間動作する AI エージェントはすべて、コンテキストウィンドウが埋まるにつれて測定可能なパフォーマンス低下、つまり コンテキスト劣化 を経験します。Chroma、Stanford(「lost-in-the-middle」)、Redis の研究により、これは本番環境のエージェントシステムで最も実用上の障害モードであることが確認されています。
コンテキスト劣化が進んでいるエージェントは、自身の性能が低下していることに 気づきません。ただ、より悪い判断をし始めるだけです。このツールにより、エージェントは 自身の認知状態をリアルタイムに把握 できます。
機能
- トークン使用率、検索精度、セッション疲労度に基づく ヘルススコア(0~100)
- 厳選された 15 種類以上のモデル(Claude、GPT、Gemini、o-series)に対応する モデル固有の性能低下曲線
- あらゆる HuggingFace モデルを自動判定 —
meta-llama/Llama-3.1-70Bのようなリポジトリ ID を渡すと、コンテキストウィンドウが自動的に検出され、結果は SQLite にキャッシュされます - Stanford の研究に基づく 「lost-in-the-middle」リスクスコア
- ツール呼び出しの負荷 と セッション疲労度 の分析
- 実行可能な回復策の提案 — コンテキストの圧縮、メモリへの退避、チェックポイントの作成、サブタスクへの分割
- エージェントごとのヘルス履歴の追跡(SQLite)
- サービス全体の使用状況統計
クイックスタート
npx(インストール不要)
npx context-rot-detection
npm(グローバルインストール)
npm install -g context-rot-detection
context-rot-detection
MCP クライアントの設定
Claude Code
プロジェクトのルートにある .mcp.json に追加します。
{
"mcpServers": {
"context-rot-detection": {
"command": "npx",
"args": ["-y", "context-rot-detection"],
"env": {
"HEALTH_HISTORY_DB": "./health.db"
}
}
}
}
Claude Desktop
claude_desktop_config.json に追加します。
{
"mcpServers": {
"context-rot-detection": {
"command": "npx",
"args": ["-y", "context-rot-detection"],
"env": {
"HEALTH_HISTORY_DB": "/path/to/health.db"
}
}
}
}
Docker
{
"mcpServers": {
"context-rot-detection": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "context-rot-data:/data",
"ghcr.io/milos-product-maker/context-rot-detection:latest"
]
}
}
}
設定
| 環境変数 | 説明 | デフォルト |
|---|---|---|
HEALTH_HISTORY_DB | ヘルス履歴用 SQLite データベースのパスです。一時的なストレージを使用する場合は :memory: を指定します。 | :memory: |
LOG_FILE | 構造化 JSON ログ行を追記するファイルのパスです。ファイルへのログ記録を無効にする場合は省略します。 | (なし) |
ツール
check_my_health
現在のコンテキストウィンドウの状態を分析します。長時間のセッション中や、重要な判断を下す前に定期的に呼び出してください。
パラメーター:
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
token_count | 整数 | はい | コンテキストウィンドウ内の現在の推定トークン数 |
model | 文字列 | いいえ | LLM モデル識別子。厳選されたモデル名(例:claude-opus-4、gpt-4o)、HuggingFace リポジトリ ID(例:meta-llama/Llama-3.1-70B)、または任意の文字列を指定できます(認識されない場合は保守的なデフォルト値が使用されます) |
session_duration_minutes | 整数 | いいえ | セッションの経過時間 |
tool_calls_count | 整数 | いいえ | このセッションで実行したツール呼び出しの数 |
context_summary | 文字列 | いいえ | 現在のタスクと最近の操作の簡単な要約 |
agent_id | 文字列 | いいえ | 履歴追跡用の一意なエージェント識別子 |
応答例:
{
"health_score": 62,
"status": "warning",
"token_utilization": {
"current": 155000,
"max_effective": 170000,
"percentage": 91.2,
"danger_zone_starts_at": 170000
},
"quality_estimate": {
"retrieval_accuracy": "degrading",
"middle_content_risk": "high",
"estimated_hallucination_risk": "moderate"
},
"session_fatigue": {
"tool_call_burden": "moderate",
"session_length_risk": "low",
"recommendation": "Consider breaking into sub-tasks if complexity increases."
},
"recommendations": [
{
"priority": "high",
"action": "compact_context",
"reason": "You are approaching the effective quality threshold. Summarize older context and remove completed task details.",
"estimated_quality_gain": 15
},
{
"priority": "high",
"action": "offload_to_memory",
"reason": "High risk of lost-in-the-middle effect. Store critical information to external memory before it is effectively lost.",
"estimated_quality_gain": 8
}
]
}
get_health_history
特定のエージェントのヘルスチェック履歴を取得します。
パラメーター:
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
agent_id | 文字列 | はい | 一意なエージェント識別子 |
limit | 整数 | いいえ | 返すレコードの最大数(デフォルト:20、最大:100) |
get_service_stats
サービス全体の使用状況統計を取得します。パラメーターは不要です。
呼び出しの合計数、一意なエージェント数、平均ヘルススコア、モデルの分布、ステータスの分布、最近のアクティビティ(直近 1 時間/直近 24 時間)を返します。
サポート対象モデル
| モデル | 最大トークン数 | 危険ゾーン | 中央部損失のリスク |
|---|---|---|---|
claude-opus-4-5 | 200K | 175K | 低 |
claude-opus-4 | 200K | 170K | 低 |
claude-sonnet-4 | 200K | 165K | 低 |
claude-3.7-sonnet | 200K | 160K | 低~中 |
claude-3.5-sonnet | 200K | 152K | 中 |
claude-haiku-3.5 | 200K | 130K | 中 |
gpt-4.1 | 1M | 500K | 中 |
gpt-4.1-mini | 1M | 450K | 中 |
gpt-4o | 128K | 105K | 中 |
gpt-4o-mini | 128K | 95K | 中~高 |
o3 | 200K | 160K | 低~中 |
o4-mini | 200K | 150K | 中 |
gemini-2.5-pro | 1M | 600K | 中 |
gemini-2.5-flash | 1M | 520K | 中~高 |
gemini-2.0-flash | 1M | 500K | 高 |
HuggingFace による自動解決
/ を含むモデル文字列はすべて、HuggingFace のリポジトリ ID として扱われます。サーバーはリポジトリから config.json を取得し、コンテキストウィンドウのサイズ(max_position_embeddings、n_positions、または max_seq_len)を抽出して、保守的な劣化プロファイルを生成します。
- 最大トークン数の 65% → 劣化開始
- 最大トークン数の 80% → 危険ゾーン
結果は SQLite にキャッシュされるため、次回以降の検索は瞬時に完了します。
model: "meta-llama/Llama-3.1-70B" → 131K context, danger at 105K
model: "mistralai/Mistral-7B-v0.1" → 32K context, danger at 26K
model: "mosaicml/mpt-7b" → 65K context, danger at 52K
取得に失敗した場合(ネットワークエラー、アクセス制限付きモデル、設定ファイルの欠落)、サーバーは通知なしで保守的なデフォルト値にフォールバックします。
フォールバック
/ を含まない認識されていないモデル文字列は、保守的なデフォルト値(最大 128K、危険ゾーン 100K)にフォールバックします。
仕組み
ヘルススコアは、次の 4 つのシグナルを加重して算出されます。
| シグナル | 重み | 情報源 |
|---|---|---|
| トークン使用率の品質 | 40% | モデル固有のシグモイド型劣化曲線 |
| 検索精度 | 25% | 基本精度からコンテキスト中央部での損失ペナルティを差し引いた値 |
| ツール呼び出しの負荷 | 20% | ツール呼び出しが 10 回を超えると品質が累積的に低下 |
| セッションの長さ | 15% | 時間に基づく疲労のヒューリスティック |
劣化曲線は、次の実証研究に基づいています。
- Chroma:Context Rot — 200K モデルでは、約 147K~152K トークンで品質が劣化します
- Stanford:Lost in the Middle — コンテキストウィンドウの中央にある情報の検索精度が低下します
- Redis:Context Rot — 長時間稼働するエージェントで劣化が累積する影響
開発
git clone https://github.com/milos-product-maker/context-rot-detection.git
cd context-rot-detection
npm install
npm run dev # Run with tsx (hot reload)
npm test # Run unit tests
npm run build # Compile TypeScript
MCP Inspector でのテスト
npx @modelcontextprotocol/inspector node dist/index.js
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。