cap-shield について
CAP-Shieldは、エージェントの記憶から関連情報を選び、コンテキスト圧縮を測定するMCPサーバーです。アカウント不要のトラフィック測定とパッケージ一覧に加え、キーが必要な記憶の保存・取得やバッチ処理を提供します。
主な機能
- 01トラフィックとトークン削減量の測定
- 02圧縮パッケージと測定結果の一覧
- 03記憶エントリーの保存と取得
- 04トークン予算に応じたコンテキスト選択
- 05メッセージの一括圧縮と復元
- 06短時間有効な署名付きIDパスの発行
活用シーン
- 01エージェントの通信量削減効果を測定
- 02質問に関連する記憶を取得
- 03選択した記憶をコンテキスト予算内に収める
- 04メッセージのバッチを圧縮して復元
MCP 対応
MCP サーバーは、測定、パッケージ一覧、記憶操作、バッチ処理、アカウント設定、IDパス発行の8つのツールを提供します。2つのツールはアカウント不要で、その他のアカウント用ツールにはキーが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | いいえ | 任意。エージェントがメモリ内で検索する内容です。指定すると、トークン削減量も測定されます。 |
| texts | array | はい | 実際のメッセージです。最大 200 件。 |
| dict_id | string | いいえ | 比較測定する学習済み辞書です。list_packages を呼び出すと、選択肢と測定値を確認できます。 |
詳細
CAP-Shield MCP サーバー
AI エージェントのためのコンテキスト選択と圧縮 — 実際に測定した再現率を提示します。
1 ファイルのみ。依存関係なし。SDK も不要です。
理由
コンテキストが増えるほど、エージェントの性能は低下します。ETH Zurich の調査では、コンテキストファイルを与えると、リポジトリのコンテキストをまったく与えない場合よりタスク成功率が下がる一方、推論コストは 20 % 以上増加することが分かりました。本番環境のエージェントの失敗の約 3 分の 2 は、モデルの能力不足ではなく、コンテキストの問題が原因です。
そこで問うべきなのは、どれだけ削るかではありません。残した内容だけで十分だったかどうかです。これは、私たちが選んでいないベンチマーク、LongMemEval-S の 500 問で測定しています。Recall@10 は 97.1 % で、語彙ベースラインの 51.9 % を上回ります(2026-09-28 に測定 — 検索機能の更新に応じて数値も更新されます。このファイルの数値を鵜呑みにせず、最新の数値は .well-known/cap-shield.json を取得してください)。
Recall@10 は厳格な指標です。正解として指定されたすべてのセッションが見つかった場合にのみ、質問を正解と数えます。答えの半分しか見つからなければ、エージェントは半分の根拠しかないのに自信満々で回答します。
8 つのツールのうち 2 つはアカウント不要です。 まず測定して、その後で判断してください。
インストール
curl -O https://cap-shield-robin.fly.dev/cap_mcp.py
{
"mcpServers": {
"cap-shield": {
"command": "python",
"args": ["/absolute/path/to/cap_mcp.py"]
}
}
}
Python 3.9 以降。それ以外は不要です。
オプションの SKILL.md では、エージェントがこれらのツールを「いつ」使うべきか、そして使うべきでないのはいつかを説明しています。
Claude(Claude.ai、Claude Desktop、または Cowork)から使う — ダウンロード不要
このサーバーは HTTP 経由でも直接利用できるため、ホスト型の Claude クライアントは、ローカルに何もインストールせずに接続できます。
Claude で Settings → Connectors → Add custom connector を選び、サーバーの URL を入力します。
https://cap-shield-robin.fly.dev/mcp
Authentication では No sign-in を選択してください。このサーバーは OAuth ではなく API キーで認証します(OAuth はまだサポートされていません。下記の「ステータス」を参照してください)。URL を知っていれば誰でもサインインなしでコネクターを使えると Claude に警告されます。この警告は正しく、まさにそのために、以下の 2 つの無料ツールはキー不要で、それ以外のツールではキーが必要です。
measure_traffic と list_packages はすぐに使えます。ヘッダーもアカウントも不要で、追加設定はありません。
アカウントが必要なツール(remember、assemble_context、pack_batch、unpack_batch、issue_pass)を使うには、まずキーを取得してください(get_account、または https://cap-shield-console.lovable.app のコンソール)。次に、同じコネクターのダイアログで Request headers に追加します。
| ヘッダー | 値 |
|---|---|
Authorization | Bearer YOUR_KEY_HERE |
Bearer の接頭辞は必須です。付けずにキーだけを指定すると、NYCKEL_KRAVS で拒否されます。これは標準的なベアラートークンヘッダーなので、Claude に限らず、リモートサーバーへのカスタムリクエストヘッダーを追加できる MCP クライアントであれば、同じ 2 つのフィールドを使えるはずです。ただし、実際にテスト済みなのは Claude だけです。
ツール
measure_traffic · アカウント不要
お使いのエージェントのトラフィックをどれだけ節約できるか測定します。アカウントもキーも不要です — まずはこちらをお使いください。通信時のバイト数の削減量と、クエリが指定されている場合は、選択的なコンテキスト取得によるトークンの削減量を返します。データは保存されません。テキストはメモリ上で圧縮され、破棄されます。IP アドレスごとに 1 時間あたり 20 回までです。
list_packages · アカウント不要
圧縮率の実測値を含め、利用可能な辞書を一覧表示します。成績の悪いものも含まれます。各項目には、1 メッセージずつ処理できるか、バッチ処理のみか、また、処理後にサイズが大きくなったメッセージの数が示されます。キーは不要です。
remember · キーが必要
後で取得できるよう、メモリエントリーを保存します。キーが必要です。言語モデルは呼び出さず、テキストをテナントごとに分離されたアーカイブに保存します。関連するエントリーを取得するには、assemble_context を使ってください。
assemble_context · キーが必要
トークン予算の範囲内で、質問への回答に役立つメモリエントリーを取得します。キーが必要です。返された「context」を、履歴全体の代わりに言語モデルへ送ってください。このツール自体はモデルを呼び出しません。送信する内容を選択します。予算は上限であって目標値ではありません。関連性のある内容がなくなると選択を終了するため、予算を大きく下回ることもよくあります。レスポンスには、残されたエントリーの数とその理由が示されます。
pack_batch · キーが必要
複数のメッセージを1つずつではなく、1つの圧縮パケットにまとめます。キーが必要です。小〜中規模のメッセージが多数ある場合に有効です(メッセージごとのヘッダーコストがバッチごとに1回だけ発生し、zstdがメッセージ間でコンテキストを共有します)。単一のメッセージでは利点はありません。packet_b64(メッセージを元に戻すには unpack_batch に渡してください)と、各メッセージを個別にパックした場合と比較して測定したバイト数の削減量を返します。セキュリティ:すでに同じ信頼境界を共有しているメッセージのみをバッチにしてください(同じテナント/エージェントであること。攻撃者の影響を受けるものを秘密情報と混在させないでください)。バッチ内のメッセージは1つの圧縮コンテキストを共有するため、メッセージ間でサイズに基づく情報が漏れる可能性があります(CRIME/BREACH型のサイドチャネル)。現在、このエンドポイントにはパディングによる緩和策がないため、信頼境界を分離することだけが保護策です。パディングを当てにしないでください。
unpack_batch · キーが必要
pack_batch(または /api/v1/pack-batch エンドポイント)で作成したバッチパケットを展開し、元のメッセージのリストを正確に順序どおりに復元します。キーが必要です。単一メッセージ用の pack エンドポイントで作成したパケットには使えません。形式が異なるため、これは拒否します。
get_account
アカウントとAPIキーを取得します。メールアドレスが必要です。キーは一度だけ返され、再表示できません。すぐに保存してください。ベータ版のクォータは意図的に低く設定されており、超過分の請求はなく、上限に達すると利用が停止されます。
issue_pass · キーが必要
エージェントのアイデンティティ/エージェントパスポート。 呼び出し元が誰のために行動しているかを示す、短期間(15分)の署名付き認証情報(JWT)を発行します。キーが必要です。誰でも /.well-known/jwks.json を使って、CAP-Shield に再度問い合わせることなく独立して検証できます。'acts_for' と 'scope' は実際の状況と照合されません。このパスが証明するのは、キーの保有者がこの時点でそう主張し、その主張が監査チェーンに記録されていることだけです。これはアイデンティティと申告された権限を示すものであり、決済やアクセス制御の仕組みではありません。
上記の説明はサーバーから逐語的にコピーしたものです。これらが
tools/list の返す内容と異なる場合は、サーバーが正しく、このファイルが
古くなっています。
オプション:難しい質問に対するLLMへのエスカレーション
上記の検索と圧縮では、モデルを呼び出すことはありません。assemble_context
は、特定の種類の質問に対しても escalate_recommended: true を返します。
たとえば、複数段階のカウント(「Xについて何回言及しましたか?」)、
複数の記憶に分散した金額の合計、複数のイベントをまたいだ
時系列の再構成など、答えが単一のエントリーに含まれておらず、
組み立てる必要がある質問です。通常の検索でもほとんどの場合は正しく答えられますが、
このフラグはそれ以外の場合に使います。
このフラグをどう扱うかは、あなた次第です。CAP-Shieldがあなたの トークンを消費したり、モデルキーを参照したりすることはありません。
cap_escalate_helper.py は、この追加ステップのリファレンス実装です。
独自のパイプラインに追加し、CAP-Shieldがフラグを立てた質問にのみ、
独自の ANTHROPIC_API_KEY または OPENAI_API_KEY を使って呼び出してください。
pip install anthropic # or: pip install openai
export ANTHROPIC_API_KEY=...
from cap_escalate_helper import eskalera_om_behovs
cap_svar = assemble_context(...) # whatever CAP-Shield returned you
svar = eskalera_om_behovs(cap_svar, fraga="How many times did I mention X?",
modell="claude") # or modell="gpt-5-mini"
print(svar["svar"])
escalate_recommended が false の場合、モデルには何も送信されません。
関数はすぐに戻るため、すべての応答に対して無条件に呼び出しても安全です。
CAP-Shieldが実際に要求した場合にのみ、API呼び出しが行われます。
python cap_escalate_helper.py --demo を実行すると、キーなしで
送信される内容を正確に確認できます。
より対象を絞ったエントリーポイントである
eskalera_om_behovs_v5 は、モデルに生の要素(金額、日付、イベント名)の抽出のみを求め、
カウント、合計、並べ替えは通常のPythonに任せます。これにより、
自由記述で回答する際にモデルが起こしうる、算術や順序付けに関する誤りを
まるごと排除できます。この機能のベンチマーク検証で
当社が使用したバージョンです。
当社が公開した数値を独自の実行結果で再現するには、このファイルの 現行バージョンが必要です。その背後にあるプロンプトと照合ロジックは 現在も積極的に調整されており、古いローカルコピーではスコアに 大きな差が出る可能性があります。
数字の意味
圧縮で削減されるのは、通信時のバイト数です。選択で削減されるのは、コンテキスト内のトークン数です。仕組みは異なり、両者を足しても意味のない数字になります。
圧縮されたパケットはモデルが受け取る前に展開されるため、推論コストは削減されません。そうでないと言うのは、このプロジェクトについて誤解する最も簡単な方法です。
測定されていない項目や、性能が悪いパッケージも含め、すべての数値をリアルタイムで公開しています。
https://cap-shield-robin.fly.dev/.well-known/cap-shield.json
このファイルを信頼するのではなく、リンク先を取得してください。このファイルは古くなりますが、ドキュメントは古くなりません。
MCP を使わずに測定する
pip install cap-shield
from cap_shield import measure, print_measurement
print_measurement(measure(texts=[...], query="..."))
アカウントは不要で、何も保存されません。レスポンスには劣化した割合、つまりメッセージのうちサイズが大きくなったものの数も含まれます。
バッチ処理にはセキュリティ上の条件があります
バッチ処理では、同じコンテキスト内の複数のメッセージを圧縮します。これにより、CRIME/BREACH 型のサイドチャネルが生じます。秘密情報と同じバッチ内に選んだテキストを配置でき、バッチサイズを観察できる人は、その秘密情報について何らかのことを知ることができます。
すでに同じ信頼境界に属しているメッセージだけをバッチ処理してください。オプションのパディングを使えば、1 メッセージあたり 2 バイト未満のコストで情報漏えいを防げます。これはデフォルトでは無効です。誤解を招かないよう、そのことを明記しています。
個別のパッキングには、この問題は一切ありません。
移植性
辞書のバージョンは削除されません。また、この保証は私たちが存続していることを前提としていません。アーカイブのエクスポートには辞書のバイナリが含まれており、スタンドアロンの展開ツールはゲートウェイ、ネットワーク、その他のシステムのどの部分も使わずに実行できます。
https://cap-shield-robin.fly.dev/cap_unpack.py
最も必要としている人は、すでにアカウントを持っていない人であるため、トークンなしで提供しています。
ステータス
ベータ版です。サーバーのバージョンは 0.5.0 です。
ドキュメント:https://cap-shield-robin.fly.dev/docs/quickstart コンソール:https://cap-shield-console.lovable.app
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。