
Proxy-Server, der MCP-Server mit Verhaltensprofilerstellung, Sicherheitsscans, Risikobewertung und sicherer Ausführung umschließt. Erkennt Prompt-Injection, bösartige Tool-Metadaten, Argument-Injection, Quellcode-Risiken und die Offenlegung von Anmeldedaten.
MCP Safety Warden ist ein Proxy-Server, der jeden MCP-Server umhüllt und Verhaltensprofilierung, Sicherheitsscans, Risikosteuuerung und sichere Ausführung für dessen Werkzeuge hinzufügt.
[!IMPORTANT] MCP-Sicherheit ist ein aktives Forschungsfeld. Aktuelle Überblicke katalogisieren eine Vielzahl protokollspezifischer Bedrohungskategorien, die Tool-Vergiftung, Prompt-Injection, Rug-Pull-Angriffe, Lieferkettenkompromittierung, Credential-Exfiltration und Zusammensetzungsangriffe über den gesamten Serverlebenszyklus hinweg umfassen. Siehe Securing the MCP (OpenReview), Landscape & Threats (arXiv), When MCP Servers Attack (arXiv) und MCP-38 Taxonomy (arXiv).
Verwenden Sie ihn als Proxy, um jedem MCP-Server eine Sicherheitssteuerung hinzuzufügen, oder richten Sie ihn auf einen Server, der Ihnen nicht gehört, und führen Sie ein vollständiges Sicherheitsaudit durch, ohne einen einzigen Tool-Aufruf zu tätigen.
Abb. 1. Zwei Betriebsmodi: Proxy und Audit
Verhaltensprofilierung: Effektklasse, Wiederholungssicherheit, Zerstörungskraft. LLM-unterstützt (Anthropic, OpenAI, Gemini, Ollama) mit regelbasiertem Fallback. Beobachtete Statistiken (Latenz p50/p95, Fehlerrate, Ausgabegröße) werden nach jedem proxied-Aufruf aktualisiert.
Sicherheitsscan: mcpsafety+ Fünf-Stufen-Pipeline (Recon, Planner, Hacker, Auditor, Supervisor). Cisco AI Defense (AST/YARA). Snyk (Metadatenanalyse). Kali- und Burp-Suite-Integrationen reichern die Pipeline mit echten Netzwerkdaten und HTTP-Ebenen-Probes an. Quellcode-Scan von GitHub mit Entropie, AST, Taint-Flow und Rug-Pull-Erkennung.
Abb. 2. mcpsafety+ Fünf-Stufen-Pipeline, ausgelöst bei einem vollständigen Sicherheitsaudit eines beliebigen MCP-Servers
Sichere Ausführung: Argument-Scan (20+ Angriffskategorien, LLM-Zweitprüfung). Zwei-Schicht-Ausgabe-Injection-Scan. Risikosteuerung mit Alternativen und tool-spezifischen Richtlinien. Drift-Erkennung bei jedem Aufruf und eigenständige Prüfung.
Abb. 3. Pipeline zur sicheren Ausführung: Die fünf Prüfungen, die jeder proxied-Tool-Aufruf durchläuft
CLI: 24 Unterbefehle, interaktives Risikomenü, --json-Flag bei jedem Befehl, --yes für CI.
Was es erkennt
Ohne einen Schlüssel arbeitet der Wrapper nur im regelbasierten Modus: niedrigere Konfidenz bei der Tool-Klassifikation, reiner Regex-Injection-Scan, keine Alternativen in der Risikosteuerung, keine mcpsafety+ Pipeline. Für ein vollständig lokales Setup führen Sie Ollama aus, setzen Sie OLLAMA_MODEL und übergeben Sie explizit --provider ollama (Ollama wird nicht automatisch erkannt).
[!NOTE] stdio-Server, die eine lokale Einrichtung erfordern (stdio-Server, die vor dem Start eine lokale Konfiguration benötigen – fehlende Konfigurationsdateien, Anmeldeinformationen, Datenverzeichnisse oder OS-spezifische Abhängigkeiten) können vom Wrapper nicht inspiziert werden – die Tool-Erkennung schlägt fehl und es werden 0 Tools gespeichert. Sie können dennoch einen vollständigen Quellcode-Sicherheitsscan durchführen, ohne den Server zu starten, indem Sie
--github-urlanscan/onboardoder den Parametergithub_urlansecurity_scan_serverübergeben. Die mcpsafety+ Pipeline holt den Quellcode direkt von GitHub und analysiert ihn.sseundstreamable_httpServer sind nicht betroffen.
pip install mcpsafetywarden
Mit allen optionalen Extras:
pip install "mcpsafetywarden[all]"
Oder mit bestimmten Extras:
pip install "mcpsafetywarden[anthropic,snyk]"
Aus dem Quellcode:
git clone https://github.com/gautamvarmadatla/mcpsafetywarden
cd mcpsafetywarden
pip install .
Die SQLite-Datenbank wird beim ersten Start automatisch im plattformspezifischen Benutzerdatenverzeichnis erstellt (~/.local/share/mcpsafetywarden/ unter Linux, ~/Library/Application Support/mcpsafetywarden/ unter macOS, %APPDATA%\mcpsafetywarden\ unter Windows). Überschreiben Sie dies mit MCP_DB_PATH.
Credential-Schutz (automatisch, kein Handeln erforderlich)
Geheimniswerte, die an register_server oder onboard_server übergeben werden (Bearer-Tokens, API-Keys in headers oder env), werden automatisch erkannt und durch undurchsichtige cref_-Bezeichner ersetzt, bevor irgendetwas den Modellkontext erreicht. Die echten Anmeldeinformationen werden verschlüsselt in der Datenbank gespeichert und bei der Verbindung stillschweigend aufgelöst. Das Modell, der Gesprächsverlauf und die Protokolle sehen nur cref_<id>.
Optional: Ruhende Verschlüsselung für gespeicherte Anmeldeinformationen
pip install cryptography
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
Setzen Sie den gedruckten Schlüssel als MCP_DB_ENCRYPTION_KEY, bevor Sie den Server starten. Dies verschlüsselt sowohl Server-Anmeldeinformationen als auch cref_-Werte im Ruhezustand.
Die gesamte Konfiguration erfolgt über Umgebungsvariablen.
Sicherheitshinweis: Committen Sie niemals API-Schlüssel oder den Verschlüsselungsschlüssel. Der Wrapper entfernt seine eigenen Secrets aus den Umgebungen untergeordneter Prozesse, bevor er stdio-Server startet.
Fügen Sie den Wrapper in claude_desktop_config.json hinzu:
{
"mcpServers": {
"mcpsafetywarden": {
"command": "mcpsafetywarden-server",
"args": [],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"MCP_DB_ENCRYPTION_KEY": "<generated_fernet_key>"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
}
}
}
Registrieren Sie jeden Server vor der Verwendung beim Wrapper:
mcpsafetywarden register filesystem --transport stdio \
--command npx \
--args '["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]'
Für ein obligatorisches Gateway-Setup, bei dem alle Tool-Aufrufe durch den Wrapper gehen müssen, siehe docs/DEPLOYMENT.md.
Siehe docs/TOOLS.md für die vollständige Tool-Referenz.
24 Unterbefehle, die alle 25 MCP-Tools abdecken. Jeder Befehl unterstützt --json für maschinenlesbare Ausgabe und --yes / -y zum Überspringen von Bestätigungsaufforderungen.
Siehe docs/CLI.md für die vollständige Referenz mit Flags und Beispielen.
Kali Linux MCP, Burp Suite MCP und Snyk integrieren sich nach der Registrierung automatisch. Kali reichert die Recon-Phase und ping_server mit echten nmap/traceroute-Daten an. Burp fügt rohe HTTP-Probing, Out-of-Band-Callbacks und Proxy-Beweise hinzu. Snyk analysiert Tool-Metadaten auf Injection-Strings, Tool-Schattenbildung, hartcodierte Secrets und 16 weitere Prüfungen.
Siehe docs/INTEGRATIONS.md für Einrichtungsanweisungen.
Installieren im bearbeitbaren Modus:
pip install -e ".[all]"
Server ausführen und Logs beobachten:
mcpsafetywarden-server 2>server.log
Jedes Modul verwendet logging.getLogger(__name__). Der Server ruft logging.basicConfig nicht selbst auf – konfigurieren Sie das Logging in Ihrem Einstiegspunkt vor dem Importieren.
pytest tests/ -v
Setzen Sie einen LLM-API-Key, um LLM-gestützte Tests einzuschließen; ohne einen werden sie automatisch übersprungen. Siehe docs/TESTING.md für eine schrittweise Überprüfung von Klassifikation, Injection-Scan, Risikosteuerung und Richtliniendurchsetzung.
Siehe CONTRIBUTING.md für Codestandards und Pull-Request-Richtlinien.
Apache License 2.0. Siehe LICENSE für Details.
| Variable | Standard | Zweck |
|---|
MCP_TRANSPORT | stdio | Transportmodus: stdio, sse oder streamable_http |
MCP_HOST | 127.0.0.1 | Bindeadresse für HTTP-Transporte |
MCP_PORT | 8000 | Bindeadresse für HTTP-Transporte |
MCP_AUTH_TOKEN | (nicht gesetzt) | Bearer-Token für HTTP-Transport-Authentifizierung |
MCP_DB_ENCRYPTION_KEY | (nicht gesetzt) | Fernet-Schlüssel zur ruhenden Verschlüsselung gespeicherter Anmeldeinformationen |
ANTHROPIC_API_KEY | (nicht gesetzt) | Aktiviert Anthropic als LLM-Anbieter |
OPENAI_API_KEY | (nicht gesetzt) | Aktiviert OpenAI als LLM-Anbieter |
GEMINI_API_KEY oder GOOGLE_API_KEY | (nicht gesetzt) | Aktiviert Gemini als LLM-Anbieter (GEMINI_API_KEY bevorzugt) |
OLLAMA_MODEL | (nicht gesetzt) | Modellname für Ollama (z.B. llama3.1) |
OLLAMA_BASE_URL | http://localhost:11434/v1 | Basis-URL der Ollama-API |
SNYK_TOKEN | (nicht gesetzt) | Aktiviert Snyk E001 Prompt-Injection-Erkennung |
MCP_SCANNER_API_KEY | (nicht gesetzt) | Cisco AI Defense Cloud ML Engine Key |
MCP_SCANNER_LLM_API_KEY | (nicht gesetzt) | LLM-Schlüssel für Cisco interne AST-Analyse |
MCP_DB_PATH | (nicht gesetzt) | Überschreibt den Pfad der SQLite-Datenbankdatei |
MCP_GRAPH_POLICY | warn | Graph-Durchsetzung in safe_tool_call: off (deaktiviert), warn (Risikokontext an Antwort anhängen), block (hartes Blockieren kritischer/hoher Blast-Radius-Tools, sofern nicht approved=True) |
GITHUB_TOKEN | (nicht gesetzt) | GitHub Personal Access Token für Quellcode-Scan (erhöht das Ratelimit von 60 auf 5.000 Anfragen/Stunde) |
| Tool | Funktion |
|---|
onboard_server | Registrieren + Inspizieren + Sicherheitsscan in einem Aufruf |
register_server | Server registrieren; optional automatisch inspizieren |
inspect_server | Tool-Liste und Profile aktualisieren |
check_server_drift | Schema- und Tool-Listen-Drift gegenüber gespeicherter Basislinie erkennen |
list_servers | Alle registrierten Server auflisten |
list_server_tools | Tools eines Servers mit Zusammenfassungsprofilen auflisten |
preflight_tool_call | Risikobewertung ohne Ausführung |
safe_tool_call | Ausführung mit Risikosteuerung und Alternativen |
get_tool_profile | Vollständiges Verhaltensprofil mit beobachteten Statistiken |
get_retry_policy | Wiederholungs- und Timeout-Empfehlungen |
suggest_safer_alternative | LLM-gereihte sicherere Alternativen |
run_replay_test | Idempotenztest (Tool zweimal aufrufen) |
security_scan_server | Live-Sicherheitsaudit (mcpsafety+, Cisco, Snyk) |
scan_all_servers | mcpsafety+ Pipeline über alle registrierten Server |
get_security_scan | Letzter gespeicherter Scan-Bericht |
set_tool_policy | Dauerhafte Zulassungs-/Blockierungsrichtlinie für ein Tool |
get_run_history | Letzte Ausführungshistorie eines Tools |
ping_server | Erreichbarkeitsprüfung mit Latenz |
discover_servers | Dateisystem nach MCP-Client-Konfigurationen durchsuchen und Servereinträge extrahieren |
onboard_discovered_servers | Gefundene Server in Bulk registrieren |
get_risk_graph | Risikograph erstellen oder abfragen (Server, Tools, Befunde, Agent-Clients) |
explain_tool_risk | Risikopfade für ein Tool anzeigen: Blast Radius, Zusammensetzungsrisiken, MITRE-Tags, empfohlene Maßnahme |
explain_client_risk | Serverübergreifende Risiken für alle Server unter einem Agent-Client analysieren |
analyze_cve_blast_radius | CVEs melden, die mehrere Server unter demselben Client betreffen |
export_graph | Risikograph als JSON oder Mermaid-Diagramm exportieren |
| Dokument | Inhalt |
|---|
| docs/TOOLS.md | Vollständige Referenz für alle 25 MCP-Tools |
| docs/CLI.md | CLI-Unterbefehle, Flags und Beispiele |
| docs/INTEGRATIONS.md | Kali-, Burp-Suite- und Snyk-Setup |
| docs/DEPLOYMENT.md | stdio-, HTTP-, Container- und Gateway-Bereitstellung |
| docs/TROUBLESHOOTING.md | Häufige Fehler und Lösungen |
| docs/SECURITY.md | Einzelheiten zu Secrets, Authentifizierung, Isolation und Scannen |
| docs/TESTING.md | Überprüfungsschritte für jedes Feature |
| docs/COMPARISON.md | Vergleich mit verwandten Tools |
| docs/ROADMAP.md | Geplante Funktionen |