protect-mcp
protect-mcp
MCPサーバーおよびClaude Codeフック向けのエンタープライズセキュリティゲートウェイ。署名付きレシート、Cedarポリシー、スウォーム対応の監査証跡を提供します。
Microsoft Agent Governance Toolkitに統合済み | IETF Internet-Draft | ライブデモ: acta.today/wiki
クイックスタート — Claude Code
2つのコマンドで実行。すべてのツール呼び出しにレシートが発行されます。
# 1. Generate hooks, keys, Cedar policy, and /verify-receipt skill
npx protect-mcp init-hooks
# 2. Start the hook server
npx protect-mcp serve同じプロジェクトでClaude Codeを開きます。これで、すべてのツール呼び出しがインターセプト、評価、署名されるようになります。
init-hooks が作成するもの
ファイル | 用途 |
| フック設定 (PreToolUse, PostToolUse, + 9つのライフサイクルイベント) |
| Ed25519署名キーペア (自動的にgitignored) |
| スターターCedarポリシー — 必要に応じてカスタマイズ |
| 署名 + レート制限を含むJSONポリシー |
| Claude Code用 |
アーキテクチャ
Claude Code → POST /hook → protect-mcp (Cedar + sign) → response
↓
.protect-mcp-log.jsonl
.protect-mcp-receipts.jsonlPreToolUse: 同期的なCedarポリシーチェック → 拒否(deny)でツールをブロック
PostToolUse: 非同期のレシート署名 → レイテンシへの影響なし
denyはアーキテクチャ上最終的なもの — モデルや他のフックによって上書きすることはできません
エンドポイント
メソッド | パス | 説明 |
POST |
| Claude Codeフックエンドポイント |
GET |
| サーバー状態、ポリシー情報、署名者情報 |
GET |
| 最近の署名済みレシート |
GET |
| 最新のレシート |
GET |
| 自動生成されたCedarポリシー修正案 |
GET |
| 設定改ざん検知アラート |
レシートの検証
# Inside Claude Code:
/verify-receipt
# From terminal:
curl http://127.0.0.1:9377/receipts/latest | jq .
npx protect-mcp receipts
# Check policy suggestions:
curl http://127.0.0.1:9377/suggestions | jq .Related MCP server: verify-mcp
クイックスタート — MCPサーバーラッパー
任意のstdio MCPサーバーを透過プロキシとしてラップします:
# Shadow mode — log every tool call, enforce nothing
npx protect-mcp -- node my-server.js
# Enforce mode with policy
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js
# Generate keys + config template
npx protect-mcp init仕組み
protect-mcpは、すべてのツール呼び出しをポリシー(JSON、Cedar、または外部PDP)に対して評価し、その決定をEd25519レシートとして署名し、結果をログに記録します。
2つの統合モード:
モード | トランスポート | ユースケース |
フックサーバー | HTTP ( | Claude Code, エージェントスウォーム |
Stdioプロキシ | stdin/stdout ( | Claude Desktop, Cursor, あらゆるMCPクライアント |
3つのポリシーエンジン:
エンジン | 設定 | 備考 |
JSON |
| シンプルなツールごとのルール |
Cedar |
|
|
外部PDP |
| OPA, Cerbos, または任意のHTTP PDP |
スウォーム追跡
マルチエージェントセッションにおいて、protect-mcpは自動的にスウォームトポロジを追跡します。
11のフックイベントを処理:
イベント | タイプ | 説明 |
| 同期 | ツール実行前のCedar/ポリシー評価 |
| 非同期 | ツール実行後のレシート署名 |
| ライフサイクル | ワーカーエージェントの生成/完了 |
| ライフサイクル | コーディネーターのタスク割り当て |
| ライフサイクル | サンドボックス検知を含むセッションライフサイクル |
| ライフサイクル | エージェント利用状況の監視 |
| セキュリティ |
|
| ライフサイクル | 終了処理 + ポリシー提案の要約 |
各レシートには以下が含まれます:
swarm.agent_id,swarm.agent_type,swarm.team_nametiming.tool_duration_ms,timing.hook_latency_mspayload_digest(1KBを超えるペイロードのSHA-256ハッシュ)deny_iteration(拒否後の再試行回数)sandbox_state(有効/無効/利用不可)OpenTelemetry
otel_trace_idおよびotel_span_id
ポリシーファイル
{
"default_tier": "unknown",
"tools": {
"dangerous_tool": { "block": true },
"admin_tool": { "min_tier": "signed-known", "rate_limit": "5/hour" },
"read_tool": { "require": "any", "rate_limit": "100/hour" },
"*": { "rate_limit": "500/hour" }
},
"signing": {
"key_path": "./keys/gateway.json",
"issuer": "protect-mcp",
"enabled": true
}
}Cedarポリシー
Cedarの拒否決定は権威的であり、上書きすることはできません。
// Allow read-only tools
permit(
principal,
action == Action::"MCP::Tool::call",
resource == Tool::"Read"
);
// Block destructive tools
forbid(
principal,
action == Action::"MCP::Tool::call",
resource == Tool::"delete_file"
);ツールが拒否された場合、protect-mcpは GET /suggestions を通じて最小限のCedar permit() ルールを自動提案します。
CVEベースのポリシーパック
それぞれが実際の攻撃を防ぎます:
ポリシー | インシデント | OWASP |
| CVE-2025-6514: MCP OAuthプロキシハイジャック (437K環境) | A01, A03 |
| 自律型Terraformエージェントによる本番環境破壊 | A05, A06 |
| 細工されたGitHub Issueによるプロンプトインジェクション | A01, A02, A03 |
| アウトバウンドツール悪用によるエージェントデータ窃取 | A02, A04 |
| 不正な金融取引 | A05, A06 |
Cedar版は policies/cedar/ にあります。
MCPクライアント設定
Claude Desktop
{
"mcpServers": {
"my-protected-server": {
"command": "npx",
"args": [
"-y", "protect-mcp",
"--policy", "/path/to/protect-mcp.json",
"--enforce",
"--", "node", "my-server.js"
]
}
}
}Cursor / VS Code
同様のパターン — サーバーコマンドを protect-mcp でラップしたものに置き換えます。
CLIコマンド
Commands:
serve Start HTTP hook server for Claude Code (port 9377)
init-hooks Generate Claude Code hook config + skill + sample Cedar policy
quickstart Zero-config onboarding: init + demo + show receipts
init Generate Ed25519 keypair + config template
demo Start a demo server wrapped with protect-mcp
doctor Check your setup: keys, policies, verifier, connectivity
trace <id> Visualize the receipt DAG from a given receipt_id
status Show tool call statistics from the decision log
digest Generate a human-readable summary of agent activity
receipts Show recent persisted signed receipts
bundle Export an offline-verifiable audit bundle
simulate Dry-run a policy against recorded tool calls
report Generate a compliance report from an audit bundle
Options:
--policy <path> Policy/config JSON file
--cedar <dir> Cedar policy directory
--enforce Enable enforcement mode (default: shadow)
--port <port> HTTP server port (default: 9377 for serve)
--verbose Enable debug logging決定ログ
すべてのツール呼び出しは構造化されたJSONを stderr に出力します:
[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"cedar_allow","policy_digest":"a1b2c3...","mode":"enforce","hook_event":"PreToolUse","timing":{"hook_latency_ms":1},"otel_trace_id":"..."}署名が設定されている場合、署名済みレシートが .protect-mcp-receipts.jsonl に保存されます。
監査バンドル
npx protect-mcp bundle --output audit.jsonレシートと署名キーを含む、オフライン検証可能な自己完結型バンドル。npx @veritasacta/verify で検証します。
検証済みナレッジベース (acta.today/wiki)
protect-mcpのレシート署名は、acta.today/wiki にある世界初の検証済みマルチモデルナレッジベースを支えています。
各ナレッジユニットは、4つのフロンティアモデルが3ラウンドの対抗的議論を経て生成し、すべてのモデル応答にEd25519レシートが付与されています。現在のラインナップ:
モデル | プロバイダー | 原産国 |
Claude Opus 4.6 | Anthropic | 米国 |
GPT-5.4 | OpenAI | 米国 |
Grok 4.20 | xAI | 米国 |
Gemini 3.1 Pro | 米国 | |
DeepSeek V3.2 | DeepSeek | 中国 |
MiniMax M2.7 | MiniMax | 中国 |
Kimi K2.5 | Moonshot | 中国 |
Qwen 2.5 72B | Alibaba | 中国 |
各KUは個別に検証可能です: npx @veritasacta/verify receipt.json
エコシステム統合
プロジェクト | スター数 | 統合内容 | ステータス |
600+ | Cedarポリシーブリッジ + レシート署名 | マージ済み (PR #667) | |
3,700+ | MCP監査パイプライン用Ed25519レシート署名 | PR #556 提出済み | |
— | 証拠ソースとしての署名済みレシート | 活発な議論 (#1029) | |
24,500+ | スキル実行の暗号学的監査証跡 | Issue #5041 | |
57,600+ | 永続化レイヤーの暗号学的整合性 | 議論 #1855 | |
1,500+ | MCP設定の推奨 | PR #41 | |
1,400+ | バリデーター判定用の暗号学的レシート | Issue #464 |
標準と知的財産
IETF Internet-Drafts:
draft-farley-acta-signed-receipts-01 — マシン間アクセス制御のための署名済み決定レシート
draft-farley-acta-knowledge-units-00 — マルチモデル議論のためのナレッジユニット
ソース: VeritasActa/drafts
特許状況: 設定可能な開示、ツール呼び出しゲートウェイ、エージェントマニフェスト、ポータブルIDを備えた決定レシートをカバーするオーストラリアの仮特許4件が申請中 (2025-2026)
検証: Apache-2.0 —
npx @veritasacta/verify --self-testMicrosoft AGT統合: PR #667 — Agent Governance Toolkit用Cedarポリシーブリッジ
関連リポジトリ
リポジトリ | 説明 |
争議可能な公開記録のためのオープンプロトコル (Apache-2.0) | |
IETF Internet-Draftソースファイル | |
統合例: Claude Codeフック、Express API、MCPサーバー署名 | |
オフラインレシート検証ツール (Apache-2.0) | |
エージェントID SDK (Apache-2.0) | |
Google ADKレシート署名プラグイン (MIT, Python) |
貢献
Issueやプルリクエストを歓迎します。重要な変更を行う前に、まずIssueを開いてください。
バグ報告: protect-mcpのバージョン、Node.jsのバージョン、再現手順を含めてください
Cedarポリシー: 再利用可能なポリシーは
policies/cedar/ディレクトリへのPRを通じて共有してください統合例: ScopeBlind/examples に追加してください
ライセンス
MIT — 制限なしで自由に使用、変更、配布、構築が可能です。
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ScopeBlind/scopeblind-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server