/ Verzeichnis / Playground / Postgres
● Offiziell modelcontextprotocol 🔑 Eigener Schlüssel nötig

Postgres

von modelcontextprotocol · modelcontextprotocol/servers

Lassen Sie Claude Ihre Postgres-Datenbank mit Lesesicherheit, vollständiger Schema-Introspektion und EXPLAIN-Plänen abfragen – ohne ihr jemals Schreibzugriff zu gewähren.

Der Referenz-Postgres-MCP-Server. Stellt eine Verbindung mit einer Standard-URL „postgres://“ her und ermöglicht das Durchsuchen von Schemata, die Ausführung von Abfragen und EXPLAIN. Streng schreibgeschützt – kein INSERT/UPDATE/DELETE/DDL – wodurch es sicher ist, auf Produktions-Lesereplikate zu verweisen.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

postgres.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://..."
      ]
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://..."
      ]
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://..."
      ]
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://..."
      ]
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "postgres",
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://..."
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "postgres": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@modelcontextprotocol/server-postgres",
          "postgresql://..."
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres postgresql://...

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: Postgres

Beantworten Sie Ad-hoc-Geschäftsfragen, ohne SQL zu berühren

👤 PMs, Gründer, alle, die lieber kein SQL schreiben möchten ⏱ ~10 min beginner

Wann einsetzen: Sie haben eine Frage zu Ihren Daten („Wie viele Benutzer kamen diese Woche zurück?“) und das BI-Dashboard enthält diese nicht.

Voraussetzungen
  • Schreibgeschützte „postgres://“-Verbindungszeichenfolge zu einem Replikat — Bei den meisten verwalteten PGs (RDS, Neon, Supabase) können Sie schreibgeschützte Anmeldeinformationen erstellen
  • Netzwerkzugriff von wo aus Claude zur DB läuft — Setzen Sie Ihren Computer auf die Zulassungsliste für VPN oder IP
Ablauf
  1. Lassen Sie Claude zunächst die relevanten Tabellen durchsehen
    Listen Sie alle Tabellen in unserer Datenbank auf. Beschreiben Sie für Tabellen, die sich auf Benutzer, Bestellungen oder Sitzungen beziehen, deren Schemata.✓ Kopiert
    → Schemaübersicht vor jeder Abfrage
  2. Stellen Sie die eigentliche Frage
    Wie viele Benutzer haben sich in den letzten 30 Tagen angemeldet, aber noch keine Bestellung aufgegeben? Gruppieren Sie nach Anmeldewoche.✓ Kopiert
    → Claude schreibt SQL, führt es aus und gibt eine Ergebnistabelle zurück
  3. Suchen Sie nach Vorbehalten
    Gibt es Gründe, warum diese Zahl irreführend sein könnte? Vorläufige Löschungen? Zeitzone in erstellt_at? Bestimmte Benutzertypen, die wir ausschließen sollten?✓ Kopiert
    → Ehrlicher Hinweis auf Daten-Macken

Ergebnis: Eine vertretbare Antwort auf eine Geschäftsfrage mit SQL, dem Ergebnis und den Vorbehalten – in 2 Minuten, anstatt 2 Tage auf das Datenteam zu warten.

Fallstricke
  • Claude schreibt eine Abfrage, die Ihre größte Tabelle ohne Einschränkungen durchsucht — Legen Sie „statement_timeout = ‚30s‘“ für die Verbindung fest und fügen Sie „standardmäßig immer LIMIT 1000 einschließen“ zu Ihrer Systemaufforderung hinzu
  • Die Zählung von „Benutzern“ hängt davon ab, was als Benutzer zählt (gelöscht? Bot? Test?) — Teilen Sie Claude Ihre Konventionen im Voraus mit: „Zeilen ausschließen, in denen delete_at NICHT NULL IST“ usw.
Kombinieren mit: notion

Diagnostizieren Sie, warum eine Abfrage langsam ist, und schlagen Sie Indizes vor

👤 Backend-Ingenieure, Datenbankadministratoren ⏱ ~15 min intermediate

Wann einsetzen: Sie haben eine Abfrage, die langsamer ist, als sie sein sollte. Sie möchten ein zweites Augenpaar, das beim Lesen der EXPLAIN ANALYZE-Ausgabe nicht müde wird.

Ablauf
  1. Holen Sie sich den Abfrageplan
    Führen Sie EXPLAIN ANALYZE für diese Abfrage aus: [Einfügen]. Erläutern Sie mir, was der Planer tut.✓ Kopiert
    → Schritt-für-Schritt-Anleitung zum Plan
  2. Identifizieren Sie den Kostentreiber
    Welcher Schritt verursacht die meisten Kosten? Handelt es sich um einen sequenziellen Scan, eine schlechte Join-Reihenfolge oder eine teure Filterung?✓ Kopiert
    → Spezifischer Knoten mit Grund identifiziert
  3. Schlagen Sie einen Index vor oder schreiben Sie ihn neu
    Schlagen Sie die kleinste Änderung vor, um dies schnell zu erreichen. Fügen Sie lieber einen Index hinzu, als die Abfrage neu zu schreiben, aber nur, wenn der Index für mehr als eine Abfrage nützlich wäre.✓ Kopiert
    → Konkrete CREATE INDEX-Anweisung ODER umgeschriebene Abfrage

Ergebnis: Eine indizierte oder neu geschriebene Abfrage mit Begründung, die Sie durch erneutes Ausführen von EXPLAIN überprüfen können.

Fallstricke
  • EXPLAIN für einen nicht repräsentativen Datensatz (kleine Entwicklungsdatenbank) liefert irreführende Pläne — Führen Sie EXPLAIN immer für eine Datenbank mit produktionsbezogenen Daten aus. Ansonsten ist der Plan Fiktion
  • Das Hinzufügen eines Index scheint kostenlos zu sein, verlangsamt jedoch die Schreibvorgänge — Sagen Sie Claude, dass er mit EXPLAIN prüfen soll, ob der Index verwendet wird, BEVOR er Sie auffordert, ihn hinzuzufügen
Kombinieren mit: sentry

Überprüfen Sie eine Tabelle auf Datenqualitätsprobleme

👤 Dateningenieure, alle, die ein unbekanntes Schema erben ⏱ ~25 min intermediate

Wann einsetzen: Sie sind dabei, eine Funktion auf einer Tabelle zu erstellen, die Sie nicht entworfen haben, und vermuten, dass es Probleme gibt.

Ablauf
  1. Führen Sie eine Reihe von NULL-, Duplikat- und Waisenprüfungen durch
    Für die Tabelle „Bestellungen“: Zählen Sie NULL-Werte pro Spalte, zählen Sie doppelte Zeilen anhand eines natürlichen Schlüssels (z. B. (Benutzer-ID, Streifen_Zahlungsabsichts-ID)), zählen Sie Zeilen mit Fremdschlüsseln, die auf gelöschte übergeordnete Zeilen verweisen.✓ Kopiert
    → Anzahl der Ausgaben pro Scheck
  2. Überprüfen Sie, ob die Werteverteilung ungewöhnlich ist
    Was sind die Mindest-, Höchst- und Perzentilverteilung für „total_cents“? Gibt es verdächtig viele Zeilen mit 0 oder negativen Werten?✓ Kopiert
    → Verteilungsstatistiken, Ausreißer markiert
  3. Vergleichen Sie die erwarteten Geschäftsregeln
    Jede „abgeschlossene“ Bestellung sollte ein „paid_at“ ungleich Null haben. Gibt es Ausnahmen?✓ Kopiert
    → Anzahl der Verstöße + Beispiel-IDs

Ergebnis: Eine kurze Liste konkreter Datenintegritätsfehler mit jeweils einer Anzahl und einem Behebungspfad.

Fallstricke
  • Einige „Probleme“ sind absichtliche historische Artefakte (Datenmigrationen). — Lassen Sie sich immer von jemandem beraten, der die Geschichte kennt, bevor Sie davon ausgehen, dass es sich um einen Fehler handelt

Generieren Sie automatisch eine Schemadokumentation für Ihr Team

👤 Tech leitet das Onboarding neuer Ingenieure ⏱ ~20 min beginner

Wann einsetzen: Ihre Datenbank hat 40 Tabellen, das Wiki hat 0. Neue Mitarbeiter fragen immer wieder: „Was ist das für eine Spalte?“

Ablauf
  1. Holen Sie sich alle Tabellen und ihre Schemata
    Listen Sie jede Tabelle im öffentlichen Schema auf. Geben Sie mir jeweils Spalten, Typen, NULL-Zulässigkeit, Standardwerte und etwaige Fremdschlüssel an.✓ Kopiert
    → Vollständiger Schema-Dump
  2. Zweck aus Benennung und Beispieldaten ableiten
    Probieren Sie für jede Tabelle drei Zeilen aus und beschreiben Sie in einem Absatz, was diese Tabelle für unser Unternehmen darstellt.✓ Kopiert
    → Prosa-Erklärung pro Tisch
  3. Kennzeichnen Sie unbekannte/verdächtige Tabellen
    Gibt es Tische, die unbenutzt aussehen oder für die Sie keinen Zweck erkennen können? Listen Sie sie auf, damit ich den ursprünglichen Autor fragen kann.✓ Kopiert
    → Ehrlich gesagt: „Ich weiß nicht, was das ist“-Liste

Ergebnis: Ein Markdown-Dokument, das Ihr Team in Notion oder ein Wiki einfügen kann – es deckt 80 % dessen ab, was neue Mitarbeiter wissen müssen.

Fallstricke
  • Erfassung sensibler Daten (PII) im LLM-Kontext — Bitten Sie Claude für Tabellen mit PII, nur Schemata ohne Stichprobenzeilen zu beschreiben
Kombinieren mit: notion · filesystem

Berechnen Sie A/B-Testergebnisse aus rohen Ereignisdaten

👤 Produktanalysten, Wachstumsingenieure ⏱ ~30 min advanced

Wann einsetzen: Sie haben ein Experiment durchgeführt, die Daten befinden sich in Ihrer Datenbank und Sie möchten Signifikanzzahlen, ohne SQL von Hand schreiben zu müssen.

Voraussetzungen
  • Ereignistabelle mit Experimentzuweisung und Conversion-Ereignissen — Standardschema: Ereignisse (Benutzer-ID, Experiment, Variante, Zeitstempel), Konvertierungen (Benutzer-ID, Typ, Zeitstempel)
Ablauf
  1. Berechnen Sie die Conversion-Rate pro Variante
    Für Experiment „checkout-redesign-2026“: Wie viele Benutzer wurden jeder Variante zugewiesen und wie hoch war die Conversion-Rate (nach [Ihrem Conversion-Ereignis]) pro Variante?✓ Kopiert
    → Tabelle pro Variante mit Tarifen
  2. Berechnen Sie die statistische Signifikanz
    Berechnen Sie den Chi-Quadrat-p-Wert für die Differenz zwischen Kontrolle und Behandlung. Ist das Ergebnis bei p < 0,05 statistisch signifikant?✓ Kopiert
    → p-Wert mit Urteil
  3. Überprüfen Sie die Zahlen
    Sind die Stichprobengrößen ausgewogen? Hat das Experiment lange genug gedauert? Gibt es Segmente, in denen sich das Ergebnis umkehrt?✓ Kopiert
    → Gesundheitscheck, nicht nur p-Wert

Ergebnis: Eine statistisch vertretbare A/B-Testauswertung mit SQL, Zahlen und Vorbehalten.

Fallstricke
  • Ein Blick auf die Ergebnisse vor der vordefinierten Stichprobengröße führt zu falsch positiven Ergebnissen — Lassen Sie Claude prüfen, ob der Test seine Zielstichprobengröße erreicht hat, bevor er die Signifikanz berechnet
Kombinieren mit: notion

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

postgres + notion

Führen Sie eine Abfrage aus und veröffentlichen Sie die Ergebnisse als Notion-Tabelle für Stakeholder, die keinen DB-Zugriff haben

Fragen Sie unsere Top-10-Kunden nach Lebenszeitumsatz in diesem Quartal ab und erstellen Sie dann eine Notion-Seite in „Verkaufsberichte“ mit den Ergebnissen als formatierte Tabelle.✓ Kopiert
postgres + sentry

Querverweis auf DB-Status mit Fehlern – wenn in einem Fehler eine Datensatz-ID erwähnt wird, schlagen Sie diese nach

In der Sentry-Ausgabe WEB-3a91 wird die Bestell-ID 99214 erwähnt. Schlagen Sie diese Bestellung nach und sagen Sie mir, ob irgendetwas in den Zeilendaten den Absturz erklären könnte.✓ Kopiert
postgres + filesystem

Exportieren Sie Abfrageergebnisse als CSV/JSON zur nachgelagerten Verwendung

Führen Sie meine Churn-Kohorten-Abfrage aus und speichern Sie das Ergebnis als /reports/churn-2026-04.csv.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
list_tables schema?: str Der erste Schritt in jeder Sitzung: Entdecken Sie das Schema free
describe_table table: str, schema?: str Erhalten Sie vor der Abfrage die vollständige Struktur einer bestimmten Tabelle free
query sql: str Führen Sie eine beliebige schreibgeschützte SQL aus – nur SELECT depends on query

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Begrenzt durch das Verbindungslimit und das Abfrage-Timeout Ihrer Datenbank
Tokens pro Aufruf
Schemaabfragen: ~500 Token. Ergebnismengen: abhängig von der Zeilenanzahl – mit LIMIT begrenzen
Kosten in €
Kostenlos – die Kosten richten sich nach der Höhe Ihrer DB-Hosting-Rechnung
Tipp
Legen Sie immer ein „statement_timeout“ für die Verbindung fest (z. B. „?options=-c%20statement_timeout%3D30000“), damit eine außer Kontrolle geratene Abfrage Ihre Datenbank nicht lahmlegen kann.

Sicherheit

Rechte, Secrets, Reichweite

Minimale Scopes: SELECT on the tables you want exposed
Credential-Speicherung: Verbindungszeichenfolge in der Umgebungsvariable. Verwenden Sie eine dedizierte schreibgeschützte Rolle: CREATE ROLE claude_readonly LOGIN PASSWORD '...'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_readonly;
Datenabfluss: Alle Anfragen an Ihre DB; Ergebniszeilen werden an den von Ihnen verwendeten LLM-Anbieter gesendet
Niemals gewähren: INSERT UPDATE DELETE DROP TRUNCATE ALTER

Fehlerbehebung

Häufige Fehler und Lösungen

FATAL: password authentication failed

Überprüfen Sie die Verbindungszeichenfolge. Häufige Ursache: Sonderzeichen im Passwort sind nicht URL-kodiert.

Prüfen: psql 'postgres://...' -c 'SELECT 1'
no pg_hba.conf entry / SSL required

Hängen Sie „?sslmode=require“ an die Verbindungszeichenfolge an. Die meisten verwalteten Postgres erfordern SSL.

permission denied for table X

Die Rolle verfügt nicht über SELECT für diese Tabelle. Führen Sie „GRANT SELECT ON X TO claude_readonly“ aus.

Prüfen: psql -c '\dp X'
canceling statement due to statement timeout

Die Abfrage war zu langsam. Optimieren Sie es entweder (fügen Sie einen Index hinzu, schränken Sie die WHERE-Klausel ein) oder erhöhen Sie das Timeout für diese eine Verbindung.

Alternativen

Postgres vs. andere

AlternativeWann stattdessenKompromiss
Supabase MCPSie sind auf Supabase – erhalten Sie umfassendes Projektmanagement plus SQLBeinhaltet Schreibzugriff; weniger sicher für Produkt
Neon MCPSie sind auf Neon – fügt Verzweigung für sichere Migrationstests hinzuNeon-spezifische Funktionen funktionieren nur auf Neon-DBs
dbHubSie benötigen Unterstützung für mehrere Datenbanken (Postgres, MySQL, MongoDB usw.) in einem MCPNeuer; unterstützt mehr DBs, aber jede Integration ist flacher
sqlite MCPLokale dateibasierte Datenbank anstelle eines ServersKein gleichzeitiger Zugriff, kein Netzwerk, aber keine Einrichtung

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen