db-mcp-server
db-mcp-server
Ein lokaler MCP-Server, der einem KI-Codierungsassistenten (z. B. Claude Code) zugangsdatenisolierten Zugriff auf Ihre PostgreSQL-Datenbanken gewährt. Der Assistent sendet nur SQL und erhält nur Zeilen — Datenbank-Benutzernamen, Passwörter und SSH-Schlüssel gelangen nie in den Kontext des Modells oder das Gesprächsprotokoll.
Warum
Die Verbindung eines KI-Assistenten mit einer Datenbank bedeutet normalerweise, Verbindungszeichenfolgen und Passwörter an einem Ort zu platzieren, an dem das Modell (und sein Protokoll) sie lesen kann. Dieser Server hält diese Grenze ein: Er besitzt die verschlüsselten Anmeldedaten und die SSH-Tunnel, stellt eine kleine, nur-SQL-Werkzeugoberfläche bereit und ist standardmäßig schreibgeschützt.
Related MCP server: Postgres Scout MCP
So funktioniert es
Katalog (
registry.yaml) — nicht-geheime Weiterleitung. Organisiert alsKunden → Umgebungen → Dienste; jeder Dienst ist einem Datenbanknamen und einemsecret_ref(einem Zeiger in den Tresor — niemals einer Anmeldeinformation) zugeordnet.Tresor (
vault.enc) — AES-256-GCM mit einem aus scrypt abgeleiteten Schlüssel. Enthält die DB-Anmeldedaten, die beim Start einmalig mit einer Passphrase in den Speicher entschlüsselt werden.Tunnel-Pool — ein SSH-Tunnel pro
(Kunde, Umgebung)übersshtunnel, gebunden an einen ephemeren127.0.0.1-Port.Ausführer —
psycopg.run_queryläuft in einer PostgreSQL READ ONLY-Transaktion (die Engine lehnt jeden Schreibvorgang ab);run_write_queryerfordertconfirm=true.
Installation
python -m venv .venv
# Windows PowerShell: .venv\Scripts\Activate.ps1 (bash: source .venv/Scripts/activate)
pip install -e ".[dev]"Konfiguration
Die Konfiguration erfolgt über Umgebungsvariablen; Standardwerte werden relativ zum Projektstamm aufgelöst.
Variable | Zweck | Standard |
| Tresor-Passphrase (erforderlich zum Ausführen des Servers) | — |
| Pfad zu |
|
| Pfad zu |
|
| Verzeichnis mit den SSH-PEM-Schlüsseln |
|
| Pfad zu |
|
Bereitstellung (Erstsetup)
Kopieren Sie die Vorlage und füllen Sie echte Werte ein:
cp bootstrap.example.yaml bootstrap.yamlLegen Sie Ihre SSH-Privatekeys in
keys/ab (Dateinamen müssen denpem_key-Feldern im Katalog entsprechen).Generieren Sie den nicht-geheimen Katalog und den verschlüsselten Tresor (fragt nach der Passphrase, die Sie zum Ausführen des Servers wiederverwenden):
python -m db_mcp_server.bootstrap --dry-run # preview, writes nothing python -m db_mcp_server.bootstrap # writes registry.yaml + vault.enc python -m db_mcp_server.vault_admin verify # expect {"ok": true}
bootstrap.yaml enthält Klartext-Anmeldedaten — es ist git-ignoriert; löschen Sie es
oder bewahren Sie es offline auf, sobald der Tresor existiert.
Befehlszeilenwerkzeuge
Befehl | Zweck |
| Der MCP-Server (stdio). Wird vom MCP-Client gestartet, nicht von Hand. |
| Anmeldedaten im Tresor verwalten: |
|
|
(Konsolenbefehle existieren nach pip install -e .; die Form python -m db_mcp_server.<Modul>
funktioniert immer.)
Dem Assistenten bereitgestellte Werkzeuge
list_databases()— der Katalog (Kunden → Umgebungen → Dienste); keine Geheimnisse.run_query(customer, environment, service, sql, max_rows?)— schreibgeschützt.run_write_query(customer, environment, service, sql, confirm)— gesteuerter Schreibzugriff.
Domänenfehler werden als strukturiertes {error_code, message} zurückgegeben, nicht als
Ausnahme, sodass der Assistent reagieren kann.
Bei einem MCP-Client registrieren
Beispiel .mcp.json (Pfade anpassen). Verwenden Sie ${DB_MCP_PASSPHRASE}, damit die Passphrase
aus der Shell gelesen wird, statt in die Datei geschrieben zu werden:
{
"mcpServers": {
"db": {
"command": "/absolute/path/to/db-mcp-server/.venv/Scripts/python.exe",
"args": ["-m", "db_mcp_server.server"],
"env": {
"DB_MCP_PASSPHRASE": "${DB_MCP_PASSPHRASE}"
}
}
}
}Sicherheitshinweise
vault.enc,keys/,bootstrap.yaml,*.envund*.pemsind git-ignoriert — committen Sie sie niemals.Die Tresor-Passphrase wird über
DB_MCP_PASSPHRASE(oder eine Eingabeaufforderung) bereitgestellt — niemals inregistry.yaml, argv oder Protokollen gespeichert.db-vaultliest das DB-Passwort über eine versteckte Eingabeaufforderung (getpass), niemals über argv.run_queryist auf PostgreSQL-Engine-Ebene schreibgeschützt; Schreibvorgänge erfordernconfirm=true.
Tests
pip install -e ".[dev]" && python -m pytest -qDer DB-Integrationstest wird übersprungen, es sei denn, DB_MCP_TEST_DSN zeigt auf ein erreichbares
PostgreSQL.
Roadmap (nicht in diesem Build)
Persistenter Prüfpfad, Mehrbenutzerbetrieb, externe Secret-Manager-Anbindung, Schema-Introspektionswerkzeuge und eine Berechtigungs-Denylist, um die Anmeldedatenisolation zu einer harten Grenze zu machen.
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
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with PostgreSQL databases using natural language queries, providing secure read-only access to database schemas and SQL translation capabilities.67
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to safely explore, analyze, and maintain PostgreSQL databases with read-only mode by default, SQL injection prevention, query performance analysis, and optional write operations.90Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with PostgreSQL databases through MCP, supporting multi-database and schema access with security controls like read-only mode and SQL auditing.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.
Related MCP Connectors
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Generate realistic, FK-consistent synthetic test data for your databases from your AI assistant.
Comprehensive PostgreSQL documentation and best practices, including ecosystem tools
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/gwdmnn/keyward-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server