MCP Agent Firewall
MCP Agent Firewall
Ein deterministisches Sicherheits-Gateway für Model Context Protocol (MCP) 2026-07-28-Datenverkehr.
Es sitzt zwischen einem Agenten/MCP-Client und einem entfernten MCP-Server und erzwingt beide Seiten der Vertrauensgrenze:
vor der Ausführung: Protokollintegrität, deterministische Richtlinie, gepinnte Tool-Schemas und signierte menschliche Genehmigung
nach der Ausführung: Credential-DLP auf der Antwortseite, begrenzte Inspektion, explizite Kennzeichnung nicht vertrauenswürdiger Inhalte und datenschutzminimiertes Ausgabe-Audit
Das LLM besitzt niemals die Sicherheitsentscheidung.
Aktueller Meilenstein — v0.5.0
v0.5 fügt Ausgabe-Containment auf der Antwortseite hinzu.
Ein autorisierter Tool-Aufruf wird nicht länger als vertrauenswürdige Ausgabe vorausgesetzt. Jede Upstream-Antwort wird geprüft, bevor sie an den Aufrufer zurückgegeben wird. Geheimnis-/Credential-ähnliche Ausgaben werden blockiert, prompt-injection-artiger Text wird gekennzeichnet, und alle durchgereichten Upstream-Inhalte werden explizit als nicht vertrauenswürdig markiert.
agent / MCP client
|
v
MCP header/body integrity
|
v
deterministic policy
|
+--> DENY ------------------------------> stop
|
v
pinned tool catalog + JSON Schema
|
v
signed human approval when required
|
v
mcp.upstream.dispatch [CLIENT span]
|
v
upstream MCP server
|
| UNTRUSTED OUTPUT
v
mcp.output.inspect
|
+--> credential / secret -------------> BLOCK 502 / -32046
|
+--> malformed / binary / oversized --> BLOCK 502 / -32046
|
+--> prompt-injection signal ----------> FLAG + pass through
|
+--> clean ----------------------------> pass through
|
v
explicit untrusted-content headers
|
v
agent / MCP client
Parallel controls:
- privacy-minimized request + output SQLite audit
- low-cardinality OpenTelemetry metrics
- optional OTLP HTTP exportRelated MCP server: guardrails-mcp-server
Ausgabe-Containment auf der Antwortseite
Credential-/Geheimnis-DLP
Der deterministische Ausgabe-Scanner blockiert erkanntes Credential-Material, einschließlich:
strukturierte geheimnistragende Schlüssel wie
access_token,refresh_token,api_key,private_key,authorization,password,secretund verwandte VariantenPEM-Private-Key-Material
Bearer-Credentials
AWS-Access-Key-IDs
GitHub-artige Tokens
OpenAI-artige
sk--CredentialsJWT-förmige Credential-Strings
Eine blockierte Upstream-Antwort wird durch einen firewall-generierten JSON-RPC-Fehler ersetzt:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32046,
"message": "Upstream MCP response blocked by output containment",
"data": {
"action": "block",
"signals": ["sensitive_key"],
"untrusted": true
}
}
}Der blockierte Antworttext wird nicht im Fehler wiedergegeben.
Prompt-Injection-Behandlung
Ausgabe-Prompt-Injection-Regexes sind Signale, keine Sicherheitsinstanz.
Beispielsweise darf Inhalt wie „ignore previous instructions“ durchgelassen werden, wenn er kein blockierendes Geheimnissignal enthält, aber der Aufrufer erhält:
Mcp-Firewall-Untrusted-Content: true
Mcp-Firewall-Output-Inspection: flagged
Mcp-Firewall-Output-Signals: prompt_injection_signalAuch saubere Ausgaben erhalten:
Mcp-Firewall-Untrusted-Content: true
Mcp-Firewall-Output-Inspection: cleanDies bewahrt die Unterscheidung zwischen von einem Tool zurückgegebenen Daten und vertrauenswürdigen Anweisungen.
Fail-closed-Antwortgrenzen
Die Ausgabeinspektion blockiert:
deklariertes JSON, das nicht geparst werden kann
Nicht-UTF-8-Binärausgaben
Antworten größer als
MAX_RESPONSE_BYTES(Standard 262.144 Bytes)JSON tiefer als 32 Ebenen
JSON-Traversierungen über 10.000 Knoten
UTF-8-Ausgaben, die mit { oder [ beginnen, werden JSON-geparst, auch wenn der Upstream-Server einen irreführenden Nicht-JSON-Medientyp deklariert, wodurch eine einfache Content-Type-Umgehung des strukturierten Schlüssel-DLP verhindert wird.
Aktuelle Einschränkung: httpx puffert die Upstream-Antwort, bevor die Größenprüfung erfolgt. Das Limit begrenzt daher das Inspektions-/Rückgabeverhalten, ist aber noch keine Streaming-Netzwerkspeichergrenze.
Datenschutzminimiertes Ausgabe-Audit
GET /v1/audit/output ist durch dasselbe X-Operator-Token-Kontrollsystem geschützt wie der Request-Audit-Zugriff.
Ausgabe-Audit-Datensätze enthalten nur:
Zeitstempel
Methoden-/Toolname
clean,flaggedoderblocked-ErgebnisSignalnamen mit festem Vokabular
Antwort-SHA-256
Antwort-Byte-Länge
Rohe Upstream-Antworttexte werden niemals im Ausgabe-Audit gespeichert.
OpenTelemetry-Beobachtbarkeit
Sicherheitsfokussierte Spans umfassen:
mcp.firewall.requestmcp.policy.evaluatemcp.schema.validatemcp.approval.issuemcp.approval.verifymcp.approval.consumemcp.upstream.dispatchmcp.output.inspect
Metriken mit niedriger Kardinalität:
Metrik | Dimensionen |
|
|
|
|
|
|
|
|
|
|
Toolnamen und Request-Hashes sind nur für Traces, nicht für Metrik-Dimensionen. Trace-Strings werden bereinigt und längenbegrenzt. Rohe Request-Argumente, Antworttexte, Genehmigungsbelege, Identitäten und Auth-Tokens sind von der Telemetrie ausgeschlossen.
Auf der Request-Seite beibehaltene Kontrollen aus v0.1–v0.4
MCP-Protocol-Version,Mcp-MethodundMcp-Name-IntegritätsprüfungenDefault-Deny-deterministische Tool-Policy
explizite Deny-Muster für Shell-/Befehls-/Credential-artige Tools
menschliche Genehmigung für folgenreiche Senden/Erstellen/Aktualisieren/Löschen/Kaufen/Übertragen/Bereitstellen-Tools
verschachtelte Secret-Schlüssel-, geschützte Pfad-, String-Größen- und numerische Request-Einschränkungen
Prompt-Injection-Signale ohne Regex-Sicherheitsautorität
SHA-256-gepinnte vertrauenswürdige Tool-Katalog
JSON-Schema-2020-12-Argumentvalidierung
vertrauenswürdige
x-mcp-header/Mcp-Param-*-Body-Header-VerifizierungHMAC-SHA256-kurzlebige Einmal-Genehmigungsbelege
Aufrufer-Autorisierung wird niemals an Upstream weitergeleitet
Pro-Prozess-Rate-Limiting und begrenzte Request-Bodies
W3C-TraceContext-Extraktion + generierte Upstream-Propagation
optionaler OTLP-HTTP-Trace-/Metrik-Export
Konfigurieren
UPSTREAM_MCP_URL=https://your-mcp-server.example/mcp
MAX_BODY_BYTES=65536
MAX_RESPONSE_BYTES=262144
APPROVAL_SIGNING_KEY=<random-secret-at-least-32-bytes>
APPROVAL_ISSUER_TOKEN=<operator-only-token>
APPROVAL_DEFAULT_TTL_SECONDS=300
APPROVAL_MAX_TTL_SECONDS=900
TRUSTED_TOOL_CATALOG_PATH=./config/trusted_tools.example.json
TRUSTED_TOOL_CATALOG_SHA256=<canonical-catalog-sha256>
AUDIT_READ_TOKEN=<operator-only-token>
OTEL_ENABLED=false
OTEL_SERVICE_NAME=mcp-agent-firewall
OTEL_EXPORTER_OTLP_ENDPOINT=Alle Gates ausführen
pip install -e ".[dev]"
ruff check app tests scripts
pytest -q
python scripts/run_benchmark.py --fail-on-unsafe
python scripts/run_approval_benchmark.py
python scripts/run_schema_benchmark.py
python scripts/run_observability_benchmark.py
python scripts/run_output_benchmark.py
docker build -t mcp-agent-firewall:test .Verifizierte v0.5-Regressionsnachweise
Verifiziert auf GitHub Actions für die v0.5-Implementierung:
74 pytest-Tests bestanden
Policy-Sicherheits-Benchmark: 32/32 exakte Entscheidungen
Policy-Sicherheits-Benchmark: 0 unsichere False-Accepts, 0 False-Blocks
Signierte Genehmigungs-Sicherheits-Benchmark: 11/11 bestanden
Signierte Genehmigungs-Sicherheits-Benchmark: 0 unsichere False-Accepts
Vertrauenswürdiges Schema / MCP-Header-Benchmark: 12/12 bestanden
Vertrauenswürdiges Schema / MCP-Header-Benchmark: 0 unsichere False-Accepts, 0 False-Blocks
Beobachtbarkeits-Datenschutz-/Propagations-Benchmark: 14/14 bestanden
Beobachtbarkeits-Benchmark: 0 erkannte Telemetrie-Lecks
Ausgabe-Containment-Benchmark: 11/11 bestanden
Ausgabe-Containment-Benchmark: 0 unsichere False-Accepts
Ruff: bestanden
Docker-Build: bestanden
Der Ausgabe-Containment-Benchmark deckt sauberen Durchgang, strukturierte Secret-Schlüssel, PEM-Private-Keys, Bearer-Credentials, GitHub-artige Credentials, Prompt-Injection-Signalisierung, fehlerhaftes JSON, Binärausgabe, Antwortgrößenlimits, irreführende Content-Types und nicht-echoende öffentliche Inspektionsmetadaten ab.
Der Beobachtbarkeits-Benchmark übt echte FastAPI/MCP-Anfragen aus und prüft W3C-Elternkontext, Policy-/Schema-/Genehmigungs-/Ausgabe-Spiffe, begrenzte Metrik-Dimensionen, generierte Upstream-Trace-Propagation, Ausgabe-Unvertrauenswürdigkeits-Kennzeichnung und Abwesenheit eines injizierten Secret-Sentinels aus erfasster Telemetrie.
Dies sind synthetische Regressionstests, kein Anspruch auf universelle Produktionssicherheit oder vollständige Credential-/Prompt-Injection-Erkennung.
Siehe docs/THREAT_MODEL.md für Vertrauensgrenzen, Kontrollen und Restrisiken.
Nächste Meilensteine
Genehmigungs-Signaturschlüssel-Rotation mit Schlüssel-IDs und begrenzter Überlappung
Streaming-Antwortgrößen-Durchsetzung und optionale sichere Content-Type-Allowlists
gemeinsamer Replay-/Rate-Limit-Zustand für Multi-Replica-Bereitstellung
Live-Upstream-
tools/list-Drift-Erkennung gegen den gepinnten Katalogoptionales OPA/Rego-Backend mit deterministischem lokalem Fallback
adversarielles Korpus aus echten MCP-Traces
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
AlicenseNot gradedqualityCmaintenancePolicy enforcement gateway for MCP tool calls, evaluating every tool invocation against declarative YAML policies (allow/deny/escalate-to-human), generating cryptographic hash-chained audit receipts, and including built-in content safety scanning.2MIT- AlicenseNot gradedqualityCmaintenanceMCP server for AI agent security guardrails. Provides input validation, prompt injection detection, PII redaction, output filtering, policy enforcement, rate limiting, and comprehensive audit logging.451MIT
- AlicenseNot gradedqualityCmaintenanceA drop-in proxy that guards MCP servers with policy enforcement, secret redaction, prompt-injection screening, rug-pull detection, rate limiting, and audit logging.12Apache 2.0
- AlicenseNot gradedqualityDmaintenanceGoverns AI agent HTTP requests with policy enforcement, security scanning, and audit logging via MCP.MIT
Related MCP Connectors
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
Crypto transaction firewall and risk tools for MCP agents.
The WAF for agents. Pattern-based + heuristic firewall scans prompts, RAG documents, tool argume...
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/zubairz4far/mcp-agent-firewall'
If you have feedback or need assistance with the MCP directory API, please join our Discord server