
Sicherheits-Gateway für MCP-Server mit richtlinienbasierter Durchsetzung pro Tool, Ed25519-signierten Audit-Belegen und Schattenmodus-Protokollierung. Unterstützt externe Richtlinien-Engines Cedar, OPA und Cerbos für die Zugriffskontrolle von KI-Agenten.
⚠️ Dieses Repository wurde verschoben. Die aktive Entwicklung wird unter ScopeBlind/scopeblind-gateway fortgesetzt.
Dieser persönliche Fork könnte hinter dem kanonischen Repository zurück sein. Bitte nutzen Sie das Org-Repo für Issues, Pull-Requests und den aktuellsten Code.
Sicherheits-Gateway für MCP-Server. Shadow-Modus protokolliert standardmäßig, pro-Tool-Richtlinien, optionale lokale Ed25519-Quittungen und verifizierungsfreundliche Audit-Ausgabe.
Aktueller CLI-Pfad: Umhüllen Sie jeden stdio MCP-Server als transparenten Proxy. Im Shadow-Modus protokolliert er jede tools/call-Anfrage und lässt alles durch. Fügen Sie eine Richtliniendatei hinzu, um Pro-Tool-Regeln durchzusetzen. Führen Sie protect-mcp init aus, um lokale Signierschlüssel und Konfiguration zu generieren, sodass das Gateway auch signierte Quittungen ausgeben kann.
# Wrap an existing OpenClaw / MCP config into a usable pack
npx @scopeblind/passport wrap --runtime openclaw --config ./openclaw.json --policy email-safe
# Shadow mode — log every tool call, enforce nothing
npx protect-mcp -- node my-server.js
# Generate keys + config template for local signing
npx protect-mcp init
# Shadow mode with local signing enabled
npx protect-mcp --policy protect-mcp.json -- node my-server.js
# Enforce mode
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js
# Export an offline-verifiable audit bundle
npx protect-mcp bundle --output audit.json
protect-mcp sitzt zwischen Ihrem MCP-Client und -Server als stdio-Proxy:
MCP Client ←stdin/stdout→ protect-mcp ←stdin/stdout→ your MCP server
Es fängt tools/call JSON-RPC-Anfragen ab und:
block, rate_limit und min_tier anAlle anderen MCP-Nachrichten (initialize, tools/list, Benachrichtigungen) werden transparent durchgelassen.
stderr mit [PROTECT_MCP] ausgegebensigning.key_path enthält, in .protect-mcp-receipts.jsonl gespeichert und unter http://127.0.0.1:9876/receipts bereitgestelltnpx @veritasacta/verifyDiese sind wichtig, bevor Sie dies ausrollen oder mit Benutzern sprechen:
npx protect-mcp -- ...-Pfad. Dieser Pfad protokolliert Entscheidungen im Shadow-Modus. Für lokales Signieren führen Sie npx protect-mcp init aus und starten dann das Gateway mit der generierten Richtliniendatei.unknown, es sei denn, eine Host-Integration ruft die Admissions-API programmatisch auf.{
"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
},
"credentials": {
"internal_api": {
"inject": "env",
"name": "INTERNAL_API_KEY",
"value_env": "INTERNAL_API_KEY"
}
}
}
Tool-Namen stimmen exakt überein, mit "*" als Platzhalter-Fallback.
Fügen Sie zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"my-protected-server": {
"command": "npx",
"args": [
"-y", "protect-mcp",
"--policy", "/path/to/protect-mcp.json",
"--enforce",
"--", "node", "my-server.js"
]
}
}
}
Gleiches Muster — ersetzen Sie den Server-Befehl durch protect-mcp, der ihn umhüllt.
protect-mcp [options] -- <command> [args...]
protect-mcp init
Commands:
init Generate Ed25519 keypair + config template
status Show decision stats and local passport identity
digest Generate a local human-readable summary
receipts Show recent persisted signed receipts
bundle Export an offline-verifiable audit bundle
Options:
--policy <path> Policy/config JSON file
--slug <slug> Service identifier for logs/receipts
--enforce Enable enforcement mode (default: shadow)
--verbose Enable debug logging
--help Show help
Die Bibliothek stellt auch die Primitiven bereit, die noch nicht in den Standard-CLI-Pfad eingebunden sind:
import {
ProtectGateway,
loadPolicy,
evaluateTier,
meetsMinTier,
resolveCredential,
initSigning,
signDecision,
queryExternalPDP,
buildDecisionContext,
createAuditBundle,
} from 'protect-mcp';
Verwenden Sie diese, wenn Sie Folgendes hinzufügen möchten:
Jeder Tool-Aufruf gibt strukturiertes JSON an stderr aus:
[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"observe_mode","policy_digest":"none","mode":"shadow","timestamp":1710000000}
Wenn das Signieren konfiguriert ist, folgt eine signierte Quittung:
[PROTECT_MCP_RECEIPT] {"v":2,"type":"decision_receipt","algorithm":"ed25519","kid":"...","issuer":"protect-mcp","issued_at":"2026-03-22T00:00:00Z","payload":{"tool":"read_file","decision":"allow","policy_digest":"...","mode":"shadow","request_id":"..."},"signature":"..."}
Verifizieren Sie mit der CLI: npx @veritasacta/verify receipt.json
Verifizieren Sie im Browser: scopeblind.com/verify
Das Paket exportiert einen Helfer für eigenständige Audit-Pakete:
{
"format": "scopeblind:audit-bundle",
"version": 1,
"tenant": "my-service",
"receipts": ["..."],
"verification": {
"algorithm": "ed25519",
"signing_keys": ["..."]
}
}
Verwenden Sie createAuditBundle() um Ihre eigenen gesammelten signierten Quittungen herum.
Wird mit protect-mcp ausgeliefert — jedes verhindert einen echten Angriff:
npx protect-mcp --policy node_modules/protect-mcp/policies/clinejection.json -- node server.js
Vollständige OWASP Agentic Top 10 Zuordnung: scopeblind.com/docs/owasp
Unterstützt OPA, Cerbos, Cedar (AWS AgentCore) und generische HTTP-Endpunkte:
{
"policy_engine": "hybrid",
"external": {
"endpoint": "http://localhost:8181/v1/data/mcp/allow",
"format": "cedar",
"timeout_ms": 200,
"fallback": "deny"
}
}
npx @veritasacta/verify --self-testMIT — frei nutzbar, modifizierbar, verteilbar und ohne Einschränkungen darauf aufbauend.
scopeblind.com · npm · GitHub · IETF-Entwurf
| Feld | Werte | Beschreibung |
|---|
block | true | Explizit dieses Tool blockieren |
require | "any", "none" | Grundlegende Zugriffsanforderung |
min_tier | "unknown", "signed-known", "evidenced", "privileged" | Mindeststufe erforderlich, wenn Ihr Host den Admissions-Status setzt |
rate_limit | "N/unit" | Rate-Limit (z.B. "5/hour", "100/day") |
| Richtlinie | Vorfall | OWASP-Kategorien |
|---|
clinejection.json | CVE-2025-6514: MCP OAuth-Proxy-Entführung (437.000 Umgebungen) | A01, A03 |
terraform-destroy.json | Autonomer Terraform-Agent zerstört Produktion | A05, A06 |
github-mcp-hijack.json | Prompt-Injection über manipuliertes GitHub-Issue | A01, A02, A03 |
data-exfiltration.json | Agentendatendiebstahl durch Missbrauch von Outbound-Tools | A02, A04 |
financial-safe.json | Unautorisierte Finanztransaktion | A05, A06 |