mcp-gate
mcp-gate
Ein Pfad ist eine Anfrage. Die Roots-Grenze ist die Garantie.
Ein MCP-Dateizugriffsserver erzwingt über roots — eine Menge autorisierter Verzeichnisse —, welche Dateien ein Modell berühren darf. mcp-gate demonstriert den Unterschied zwischen der Anweisung an den Server, innerhalb seiner Roots zu bleiben, und der Durchsetzung dieser Anweisung: Dieselbe Angriffssuite wird gegen eine Version ausgeführt, die nur eine Instruktion besitzt, und gegen eine Version, die jeden Pfad kanonisiert und ihn vor jedem Lesevorgang gegen die Grenze prüft. Eine leakt; die andere hält. Beide Richtungen werden in CI erzwungen.
Dies ist eine unabhängige Implementierung von Konzepten aus Anthropics fortgeschrittenem MCP-Material, geschrieben, um drei Dinge ausdrücklich zu zeigen:
Fähigkeit | Wo sie sichtbar wird |
Fortgeschrittener MCP-Server |
|
Logs & Fortschritt | Jedes Werkzeug streamt während der Ausführung MCP-Log-Benachrichtigungen ( |
Zugriffskontrolle |
|
Die beiden Modi
Modus | Entscheidungsgrundlage | Ergebnis |
| Eine System-Prompt-Anweisung sagt: „Nur Dateien unterhalb der Roots lesen“ – der Pfad wird jedoch unverändert gegangen. | Leakt – die naive Pfadbehandlung ist absichtlich eine Worst-Case-Kontrolle. |
| Jeder Pfad wird dekodiert, mit | Hält – Anfragen außerhalb der Grenzen werden abgewiesen, bevor eine Datei geöffnet wird. |
Die Angriffssuite
Angriff |
|
|
| bedient ✓ | bedient ✓ |
| leakt | blockiert |
| leakt | blockiert |
| leakt | blockiert |
| leakt | blockiert |
direct_ask, die in beiden Modi erfolgreich ist, ist das Tückische: Ein schneller manueller Test der Prompt-Ebenen-Sicherheit wirkt sicher und scheitert dann bei einem Angriff, den man nicht ausprobiert hat.
Related MCP server: personal-mcp-bridge
Das Gate (durch CI erzwungen, in beide Richtungen)
python -m mcp_gate gate boundary # exit 0 only if 0 escapes
python -m mcp_gate gate prompt # exit 0 only if the leak is still demonstrated
python -m mcp_gate suite # both halves must holdFalls ein gate prompt nicht leakt, wäre die Demo sinnhandelnt (das „sichere“ Ergebnis ist bedeutungslos, wenn das unsichere ebenfalls besteht). Deshalb behandelt CI das ebenfalls als Build-Fehler.
Schnellstart
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest -q
python -m mcp_gate gate boundary
python -m mcp_gate gate prompt
python -m mcp_gate suiteFühre die Live-Demo „MCP-Server + Client“ aus (benötigt pip install -e ".[demo]" und einen ANTHROPIC_API_KEY in deiner Umgebung für das Sampling-Werkzeug):
python -m mcp_gate serve ./data/sandbox # start the server over stdio
python -m mcp_gate.client ./data/sandbox # drive it: logs, progress, sampling, a blocked attackSiehe RESULTS.md für aufgezeichnete Ausgaben – jeder Block dort ist echte Befehlsausgabe, neu erstellt durch scripts/make_results.py, niemals handkorrigiert.
Hinweise
Alle Daten unter
data/sind fiktiv;data/out_of_bounds/secret.txtist ein gekennzeichneter Platzhalter für „eine Datei, die der Server niemals ausliefern darf“.Teil der
-gate-Familie: Nichts wird ausgeliefert, bis es ein Gate besteht.
This server cannot be deployed
Maintenance
Related MCP Connectors
Bounded readonly SHA256 verification with the official MCP SDK. No code execution or model calls.
Read-only verifier for 25 ProofRelay MCP tools and non-confidential evidence bundles.
MCP enforcement layer that intercepts AI agent actions and blocks rule violations before execution.
Read-only MCP for identity resolution and write guardrails.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides safe local file operations through MCP, including reading, writing, searching, organizing, and protected deletion with configurable path restrictions.121ISC
- AlicenseNot gradedqualityDmaintenanceEnables safe, read-only browsing of allowlisted local directories through MCP, providing tools to list roots, read files, and search text.MIT
- AlicenseNot gradedqualityDmaintenanceProvides safe, allowlisted local filesystem access for MCP-compatible AI clients, enabling directory listing, file reading/writing (with byte limits), and text search while blocking paths outside approved roots and symlink escapes.MIT
- FlicenseNot gradedqualityCmaintenanceEnables secure filesystem operations (read, write, list, move, search files/directories) through the Model Context Protocol, with dynamic directory access control via MCP Roots.-