Claude sicheren Read-only-Zugriff auf eine Produktions-Postgres geben
Wann einsetzen: Claude soll Fragen über eine echte Datenbank beantworten, ohne ein generisches execute_sql-Tool, das TABLE droppen kann.
Voraussetzungen
- Postgres via libpq-URL erreichbar — Nur eine Read-only-Rolle verwenden; niemals den schreibbaren App-User
- Docker oder Go installiert — Toolbox wird als einzelnes Binary ausgeliefert; Docker-Image ist am einfachsten
Ablauf
-
Toolbox mit dem vordefinierten Postgres-Profil startenStarte mcp-toolbox im stdio-Modus mit
--prebuilt postgresund POSTGRES_URL, der auf das Read-Replica zeigt.✓ Kopiert→ Toolbox loggttools registered: list_tables, describe_table, execute_sql_readonly -
In Claude Desktop einbindenFüge die Toolbox-Docker-Konfiguration unter mcpServers in claude_desktop_config.json hinzu und starte Claude neu.✓ Kopiert→
/mcplistet Toolbox-Tools — keine Fehler -
Eine echte Frage stellenToolbox: Tabellen auflisten. Dann für
orders: Welcher ist der Median-Bestellwert der letzten 7 Tage? Zeige mir das exakte SQL, das ausgeführt wurde.✓ Kopiert→ Claude ruft list_tables → describe_table → execute_sql_readonly mit einem SELECT (niemals UPDATE/DELETE) auf
Ergebnis: Read-only-Analysen über echte Daten ohne Mutationsrisiko, mit Audit-Log jeder Query.
Fallstricke
- Verbindung mit dem schreibbaren User — Claude ruft irgendwann ein mutierendes Tool auf — Immer eine Rolle mit nur
GRANT SELECTverwenden; mit\duin psql prüfen - Connection Pool bei parallelen Agent-Aufrufen erschöpft —
pool.max_open_connsin tools.yaml setzen; Standardwert ist konservativ