protect-mcp
⚠️ Dieses Repository wurde verschoben. Die aktive Entwicklung wird unter ScopeBlind/scopeblind-gateway fortgesetzt.
Dieser persönliche Fork ist möglicherweise nicht auf dem Stand des kanonischen Repositorys. Bitte verwenden Sie das Organisations-Repository für Issues, Pull Requests und den neuesten Code.
protect-mcp
Sicherheits-Gateway für MCP-Server. Standardmäßig Protokollierung im Shadow-Modus, tool-spezifische Richtlinien, optionale lokale Ed25519-Belege 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 tool-spezifische Regeln durchzusetzen. Führen Sie protect-mcp init aus, um lokale Signierschlüssel und Konfigurationen zu generieren, damit das Gateway auch signierte Belege ausstellen kann.
Schnellstart
# 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.jsonWas es tut
protect-mcp sitzt als stdio-Proxy zwischen Ihrem MCP-Client und -Server:
MCP Client ←stdin/stdout→ protect-mcp ←stdin/stdout→ your MCP serverEs fängt tools/call JSON-RPC-Anfragen ab und:
Shadow-Modus (Standard): protokolliert jeden Tool-Aufruf und lässt alles durch
Enforce-Modus: wendet tool-spezifische Richtlinienregeln wie
block,rate_limitundmin_tieranOptionale lokale Signierung: wenn die Signierung konfiguriert ist, wird neben dem strukturierten Protokoll ein Ed25519-signierter Beleg ausgegeben
Alle anderen MCP-Nachrichten (initialize, tools/list, Benachrichtigungen) werden transparent durchgereicht.
Was heute verfügbar ist
Tool-spezifische Richtlinien — blockieren Sie destruktive Tools, begrenzen Sie die Rate teurer Tools und fügen Sie Mindest-Tier-Anforderungen hinzu
Strukturierte Entscheidungsprotokolle — jede Entscheidung wird mit
[PROTECT_MCP]anstderrausgegebenOptionale lokal signierte Belege — werden generiert, wenn Sie mit einer Richtlinie ausführen, die
signing.key_pathenthält, in.protect-mcp-receipts.jsonlgespeichert und unterhttp://127.0.0.1:9876/receiptsbereitgestelltOffline-Verifizierung — verifizieren Sie Belege oder Pakete mit
npx @veritasacta/verifyKein Konto erforderlich — lokale Schlüssel, lokale Richtlinie, lokaler Prozess
Aktuelle Funktionsgrenzen
Diese Punkte sind wichtig, bevor Sie dies einführen oder mit Benutzern sprechen:
Die Signierung erfolgt nicht automatisch auf dem einfachen
npx protect-mcp -- ...Pfad. Dieser Pfad protokolliert Entscheidungen im Shadow-Modus. Für die lokale Signierung führen Sienpx protect-mcp initaus und starten dann das Gateway mit der generierten Richtliniendatei.Tier-bewusste Richtlinienprüfungen sind aktiv, aber die Manifest-Zulassung ist nicht im Standard-CLI/stdio-Pfad integriert. Die CLI setzt Sitzungen standardmäßig auf
unknown, es sei denn, eine Host-Integration ruft die Zulassungs-API programmatisch auf.Die Anmeldeinformationskonfiguration validiert derzeit umgebungsbasierte Referenzen und zeichnet Anmeldeinformations-Labels in Protokollen/Belegen auf. Die generische Injektion pro Aufruf in beliebige stdio-Tools ist adapterspezifisch und wird vom Standard-Proxy-Pfad nicht durchgeführt.
Externe PDP-Adapter und Audit-Bundle-Helfer existieren als exportierte Dienstprogramme. Sie sind noch nicht vollständig in den Standard-CLI-Pfad integriert.
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
},
"credentials": {
"internal_api": {
"inject": "env",
"name": "INTERNAL_API_KEY",
"value_env": "INTERNAL_API_KEY"
}
}
}Richtlinienregeln
Feld | Werte | Beschreibung |
|
| Blockiert dieses Tool explizit |
|
| Grundlegende Zugriffsanforderung |
|
| Mindest-Tier erforderlich, falls Ihr Host den Zulassungsstatus festlegt |
|
| Ratenbegrenzung (z. B. |
Tool-Namen stimmen exakt überein, wobei "*" als Wildcard-Fallback dient.
MCP-Client-Konfiguration
Claude Desktop
Fügen Sie dies 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"
]
}
}
}Cursor / VS Code
Das gleiche Muster — ersetzen Sie den Server-Befehl durch protect-mcp, das ihn umhüllt.
CLI-Optionen
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 helpProgrammatische Hooks
Die Bibliothek macht auch die Primitive verfügbar, die noch nicht in den Standard-CLI-Pfad integriert 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:
Manifest-Zulassung vor Beginn einer Sitzung
einen externen PDP (OPA, Cerbos oder einen generischen HTTP-Webhook)
benutzerdefinierte, durch Anmeldeinformationen vermittelte Integrationen
Audit-Bundle-Export für Ihren eigenen Belegspeicher
Entscheidungsprotokolle und Belege
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 die Signierung konfiguriert ist, folgt ein signierter Beleg:
[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 mit der CLI: npx @veritasacta/verify receipt.json
Verifizieren im Browser: scopeblind.com/verify
Audit-Bundles
Das Paket exportiert einen Helfer für in sich geschlossene Audit-Bundles:
{
"format": "scopeblind:audit-bundle",
"version": 1,
"tenant": "my-service",
"receipts": ["..."],
"verification": {
"algorithm": "ed25519",
"signing_keys": ["..."]
}
}Verwenden Sie createAuditBundle() für Ihre eigenen gesammelten signierten Belege.
Philosophie
Shadow zuerst. Sehen Sie, was Agenten tun, bevor Sie etwas erzwingen.
Belege sind besser als reine Dashboard-Protokolle. Signierte Artefakte sollten unabhängig verifizierbar sein.
Halten Sie die Ansprüche eng. Der Standard-CLI-Pfad leistet noch nicht alles, was die langfristige Architektur unterstützen wird.
Bauen Sie auf bestehender Authentifizierung auf. Reißen Sie Ihren Stack nicht auseinander, nur um Kontrolle und Nachweise hinzuzufügen.
Vorfall-verankerte Richtlinienpakete
Werden mit protect-mcp ausgeliefert — jedes verhindert einen echten Angriff:
Richtlinie | Vorfall | OWASP-Kategorien |
| CVE-2025-6514: MCP OAuth-Proxy-Hijack (437K Umgebungen) | A01, A03 |
| Autonomer Terraform-Agent zerstört Produktion | A05, A06 |
| Prompt-Injection über manipuliertes GitHub-Issue | A01, A02, A03 |
| Datendiebstahl durch Agenten über ausgehenden Tool-Missbrauch | A02, A04 |
| Nicht autorisierte Finanztransaktion | A05, A06 |
npx protect-mcp --policy node_modules/protect-mcp/policies/clinejection.json -- node server.jsVollständige OWASP Agentic Top 10 Zuordnung: scopeblind.com/docs/owasp
BYOPE: Externe Richtlinien-Engines
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"
}
}Standards & IP
IETF Internet-Draft: draft-farley-acta-signed-receipts-00 — Signierte Entscheidungsbelege für Machine-to-Machine-Zugriffskontrolle
Patentstatus: 4 australische vorläufige Patente angemeldet (2025-2026), die Entscheidungsbelege mit konfigurierbarer Offenlegung, Tool-Call-Gateway, Agenten-Manifeste und portable Identität abdecken
Verifizierung: MIT-lizenziert —
npx @veritasacta/verify --self-test
Lizenz
MIT — frei zu verwenden, zu ändern, zu verteilen und ohne Einschränkungen darauf aufzubauen.
scopeblind.com · npm · GitHub · IETF Draft
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/tomjwxf/scopeblind-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server