mcpField
C
Context Rot Detection

Context Rot Detection

ローカル
github.com/milos-product-makerAI・エージェント1336 週間前に更新

Context Rot Detection について

AI エージェントのコンテキスト健全性を評価する MCP サービスです。トークン使用量、検索精度、ツール呼び出し負荷、セッション時間を基にスコアを算出し、複数モデルの評価、履歴、改善案を提供します。

主な機能

  1. 010〜100のコンテキスト健全性スコア
  2. 02モデル別の劣化曲線
  3. 03HuggingFaceのコンテキスト長解決
  4. 04Lost-in-the-middleリスク評価
  5. 05エージェント履歴とサービス統計
  6. 06コンテキスト回復の推奨事項

活用シーン

  1. 01長時間セッションのコンテキスト品質監視
  2. 02重要な判断前のエージェント状態確認
  3. 03モデルごとのコンテキストリスク評価
  4. 04特定エージェントの健全性変化の確認

MCP 対応

MCP サーバーは、コンテキスト健全性チェック、履歴照会、サービス統計のツールをクライアントに提供します。エージェント ID 単位で記録でき、HuggingFaceモデルの設定はリポジトリから取得してキャッシュします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"context-rot-detection": {
"command": "npx",
"args": [
"-y",
"context-rot-detection"
],
"env": {
"HEALTH_HISTORY_DB": "<HEALTH_HISTORY_DB>"
}
}
}
}
起動コマンドnpx -y context-rot-detection
設定が必要な環境変数
HEALTH_HISTORY_DB

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmcontext-rot-detection

ツール

3

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
context_summarystringいいえ現在のタスクと最近の操作の簡単な概要(このツールは生のコンテキストではなく、パターンを分析します)
token_countintegerはい現在のコンテキストウィンドウ内の推定トークン数
session_duration_minutesintegerいいえこのセッションの経過時間
tool_calls_countintegerいいえこのセッションで行われたツール呼び出しの回数
modelstringいいえ実行中の 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_idstringいいえヘルス履歴の追跡に使用する、このエージェントインスタンスの任意の一意識別子

詳細

コンテキスト劣化の検出

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-5200K175K低
claude-opus-4200K170K低
claude-sonnet-4200K165K低
claude-3.7-sonnet200K160K低~中
claude-3.5-sonnet200K152K中
claude-haiku-3.5200K130K中
gpt-4.11M500K中
gpt-4.1-mini1M450K中
gpt-4o128K105K中
gpt-4o-mini128K95K中~高
o3200K160K低~中
o4-mini200K150K中
gemini-2.5-pro1M600K中
gemini-2.5-flash1M520K中~高
gemini-2.0-flash1M500K高
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%時間に基づく疲労のヒューリスティック

劣化曲線は、次の実証研究に基づいています。

開発

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。