protect-mcp
protect-mcp
Unternehmens-Sicherheits-Gateway für MCP-Server und Claude Code Hooks. Signierte Belege, Cedar-Richtlinien und Schwarm-bewusste Audit-Trails.
Integriert in das Microsoft Agent Governance Toolkit | IETF Internet-Draft | Live-Demo: acta.today/wiki
Schnellstart — Claude Code
Zwei Befehle. Jeder Tool-Aufruf wird quittiert.
# 1. Generate hooks, keys, Cedar policy, and /verify-receipt skill
npx protect-mcp init-hooks
# 2. Start the hook server
npx protect-mcp serveÖffnen Sie Claude Code im selben Projekt. Jeder Tool-Aufruf wird nun abgefangen, bewertet und signiert.
Was init-hooks erstellt
Datei | Zweck |
| Hook-Konfiguration (PreToolUse, PostToolUse, + 9 Lebenszyklus-Ereignisse) |
| Ed25519-Signaturschlüsselpaar (automatisch in .gitignore) |
| Starter-Cedar-Richtlinie – an Ihre Bedürfnisse anpassbar |
| JSON-Richtlinie mit Signierung + Ratenbegrenzungen |
|
|
Architektur
Claude Code → POST /hook → protect-mcp (Cedar + sign) → response
↓
.protect-mcp-log.jsonl
.protect-mcp-receipts.jsonlPreToolUse: synchrone Cedar-Richtlinienprüfung → deny blockiert das Tool
PostToolUse: asynchrone Belegsignierung → keine Latenzauswirkungen
deny ist architektonisch endgültig — es kann nicht durch das Modell oder andere Hooks überschrieben werden
Endpunkte
Methode | Pfad | Beschreibung |
POST |
| Claude Code Hook-Endpunkt |
GET |
| Serverstatus, Richtlinieninformationen, Signierer-Informationen |
GET |
| Kürzlich signierte Belege |
GET |
| Zuletzt erstellter Beleg |
GET |
| Automatisch generierte Vorschläge für Cedar-Richtlinienkorrekturen |
GET |
| Warnungen bei Konfigurationsmanipulation |
Belege verifizieren
# 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
Schnellstart — MCP-Server-Wrapper
Umhüllen Sie jeden stdio-MCP-Server als transparenten Proxy:
# 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 initFunktionsweise
protect-mcp bewertet jeden Tool-Aufruf anhand einer Richtlinie (JSON, Cedar oder externer PDP), signiert die Entscheidung als Ed25519-Beleg und protokolliert das Ergebnis.
Zwei Integrationsmodi:
Modus | Transport | Anwendungsfall |
Hook-Server | HTTP ( | Claude Code, Agenten-Schwärme |
Stdio-Proxy | stdin/stdout ( | Claude Desktop, Cursor, jeder MCP-Client |
Drei Richtlinien-Engines:
Engine | Konfiguration | Hinweise |
JSON |
| Einfache Regeln pro Tool |
Cedar |
| Lokale WASM-Auswertung via |
Externer PDP |
| OPA, Cerbos oder jeder HTTP-PDP |
Schwarm-Tracking
In Multi-Agenten-Sitzungen verfolgt protect-mcp automatisch die Schwarm-Topologie.
11 behandelte Hook-Ereignisse:
Ereignis | Typ | Beschreibung |
| Sync | Cedar/Richtlinienbewertung vor Tool-Ausführung |
| Async | Belegsignierung nach Tool-Ausführung |
| Lebenszyklus | Start/Abschluss eines Worker-Agenten |
| Lebenszyklus | Zuweisung einer Koordinator-Aufgabe |
| Lebenszyklus | Sitzungslebenszyklus mit Sandbox-Erkennung |
| Lebenszyklus | Überwachung der Agentenauslastung |
| Sicherheit | Manipulationserkennung für |
| Lebenszyklus | Finalisierung + Zusammenfassung der Richtlinienvorschläge |
Jeder Beleg enthält:
swarm.agent_id,swarm.agent_type,swarm.team_nametiming.tool_duration_ms,timing.hook_latency_mspayload_digest(SHA-256 Hash für Payloads >1KB)deny_iteration(Wiederholungsanzahl nach Ablehnung)sandbox_state(aktiviert/deaktiviert/nicht verfügbar)OpenTelemetry
otel_trace_idundotel_span_id
Richtliniendatei
{
"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-Richtlinien
Cedar-Ablehnungsentscheidungen sind autoritativ — sie können nicht überschrieben werden.
// 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"
);Wenn ein Tool abgelehnt wird, schlägt protect-mcp automatisch die minimale Cedar permit()-Regel via GET /suggestions vor.
CVE-verankerte Richtlinienpakete
Jedes verhindert einen realen Angriff:
Richtlinie | Vorfall | OWASP |
| CVE-2025-6514: MCP OAuth-Proxy-Hijack (437K Umgebungen) | A01, A03 |
| Autonomer Terraform-Agent zerstört Produktion | A05, A06 |
| Prompt-Injection via manipuliertem GitHub-Issue | A01, A02, A03 |
| Datendiebstahl durch Agenten via ausgehendem Tool-Missbrauch | A02, A04 |
| Nicht autorisierte Finanztransaktion | A05, A06 |
Cedar-Äquivalente sind in policies/cedar/ verfügbar.
MCP-Client-Konfiguration
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
Das gleiche Muster — ersetzen Sie den Server-Befehl durch protect-mcp, um ihn zu umhüllen.
CLI-Befehle
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 loggingEntscheidungsprotokolle
Jeder Tool-Aufruf gibt strukturiertes JSON an stderr aus:
[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":"..."}Wenn die Signierung konfiguriert ist, wird ein signierter Beleg in .protect-mcp-receipts.jsonl gespeichert.
Audit-Bundles
npx protect-mcp bundle --output audit.jsonIn sich geschlossenes, offline verifizierbares Bundle mit Belegen + Signaturschlüsseln. Verifizieren mit npx @veritasacta/verify.
Verifizierte Wissensdatenbank (acta.today/wiki)
Die Belegsignierung von protect-mcp unterstützt die weltweit erste verifizierte Multi-Modell-Wissensdatenbank unter acta.today/wiki.
Jede Wissenseinheit (Knowledge Unit) wird von 4 Spitzenmodellen in 3 gegnerischen Runden erstellt, mit Ed25519-Belegen für jede Modellantwort. Die aktuelle Liste:
Modell | Anbieter | Herkunft |
Claude Opus 4.6 | Anthropic | US |
GPT-5.4 | OpenAI | US |
Grok 4.20 | xAI | US |
Gemini 3.1 Pro | US | |
DeepSeek V3.2 | DeepSeek | CN |
MiniMax M2.7 | MiniMax | CN |
Kimi K2.5 | Moonshot | CN |
Qwen 2.5 72B | Alibaba | CN |
Jede KU ist unabhängig verifizierbar: npx @veritasacta/verify receipt.json
Ökosystem-Integrationen
Projekt | Sterne | Integration | Status |
600+ | Cedar-Richtlinienbrücke + Belegsignierung | Zusammengeführt (PR #667) | |
3.700+ | Ed25519-Belegsignierung für MCP-Audit-Pipeline | PR #556 eingereicht | |
— | Signierte Belege als Beweisquelle | Aktive Diskussion (#1029) | |
24.500+ | Kryptografischer Audit-Trail für Skill-Ausführung | Issue #5041 | |
57.600+ | Kryptografische Integrität für Persistenzschicht | Diskussion #1855 | |
1.500+ | MCP-Konfigurationsempfehlung | PR #41 | |
1.400+ | Kryptografische Belege für Validator-Urteile | Issue #464 |
Standards & IP
IETF Internet-Drafts:
draft-farley-acta-signed-receipts-01 — Signierte Entscheidungsbelege für Machine-to-Machine-Zugriffskontrolle
draft-farley-acta-knowledge-units-00 — Wissenseinheiten für Multi-Modell-Beratung
Quelle: VeritasActa/drafts
Patentstatus: 4 australische vorläufige Patente angemeldet (2025-2026), die Entscheidungsbelege mit konfigurierbarer Offenlegung, Tool-Calling-Gateway, Agenten-Manifeste und portable Identität abdecken
Verifizierung: Apache-2.0 —
npx @veritasacta/verify --self-testMicrosoft AGT-Integration: PR #667 — Cedar-Richtlinienbrücke für das Agent Governance Toolkit
Verwandte Repositories
Repository | Beschreibung |
Offenes Protokoll für anfechtbare öffentliche Aufzeichnungen (Apache-2.0) | |
IETF Internet-Draft Quelldateien | |
Integrationsbeispiele: Claude Code Hooks, Express API, MCP-Server-Signierung | |
Offline-Belegverifizierer (Apache-2.0) | |
Agenten-Identitäts-SDK (Apache-2.0) | |
Google ADK Belegsignierungs-Plugin (MIT, Python) |
Mitwirken
Issues und Pull Requests sind willkommen. Bitte eröffnen Sie bei wesentlichen Änderungen zuerst ein Issue.
Fehlerberichte: Geben Sie die protect-mcp-Version, Node.js-Version und Schritte zur Reproduktion an
Cedar-Richtlinien: Teilen Sie wiederverwendbare Richtlinien per PR im Verzeichnis
policies/cedar/Integrationsbeispiele: Fügen Sie diese zu ScopeBlind/examples hinzu
Lizenz
MIT — frei zu verwenden, zu ändern, zu verbreiten und ohne Einschränkungen darauf aufzubauen.
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