PostgreSQL-MCP-Server mit vollem Zugriff
Ein leistungsstarker Model Context Protocol-Server mit vollem Lese- und Schreibzugriff auf PostgreSQL-Datenbanken. Im Gegensatz zum offiziellen MCP-PostgreSQL-Server mit Lesezugriff ermöglicht diese erweiterte Implementierung Large Language Models (LLMs) das Abfragen und Ändern von Datenbankinhalten mit ordnungsgemäßem Transaktionsmanagement und Sicherheitskontrollen.
Inhaltsverzeichnis
- Merkmale
- Werkzeuge
- Ressourcen
- Verwendung mit Claude Desktop
- Umgebungsvariablen
- Vollständigen Datenbankzugriff mit Claude verwenden
- Sicherheitsüberlegungen
- Docker
- Lizenz
- Vergleich mit dem offiziellen PostgreSQL MCP-Server
🌟 Funktionen
Vollständiger Lese-/Schreibzugriff
- Sicheres Ausführen von DML-Operationen (INSERT, UPDATE, DELETE)
- Erstellen, ändern und verwalten Sie Datenbankobjekte mit DDL
- Transaktionsmanagement mit explizitem Commit
- Sicherheitstimeouts und automatischer Rollback-Schutz
Umfangreiche Schemainformationen
- Detaillierte Spaltenmetadaten (Datentypen, Beschreibungen, maximale Länge, Nullbarkeit)
- Primärschlüsselidentifikation
- Fremdschlüsselbeziehungen
- Indexinformationen mit Typ- und Eindeutigkeitsflags
- Schätzungen der Tabellenzeilenanzahl
- Tabellen- und Spaltenbeschreibungen (sofern verfügbar)
Erweiterte Sicherheitskontrollen
- SQL-Abfrageklassifizierung (DQL, DML, DDL, DCL, TCL)
- Erzwungene schreibgeschützte Ausführung für sichere Abfragen
- Alle Operationen werden in isolierten Transaktionen ausgeführt
- Automatische Transaktions-Timeout-Überwachung
- Konfigurierbare Sicherheitsgrenzen
- Zweistufiger Transaktions-Commit-Prozess mit expliziter Benutzerbestätigung
🔧 Werkzeuge
- Abfrage ausführen
- Ausführen schreibgeschützter SQL-Abfragen (SELECT-Anweisungen)
- Eingabe:
sql
(Zeichenfolge): Die auszuführende SQL-Abfrage - Alle Abfragen werden innerhalb einer READ ONLY-Transaktion ausgeführt
- Zu den Ergebnissen gehören Ausführungszeitmetriken und Feldinformationen
- execute_dml_ddl_dcl_tcl
- Führen Sie Datenänderungsvorgänge (INSERT, UPDATE, DELETE) oder Schemaänderungen (CREATE, ALTER, DROP) aus.
- Eingabe:
sql
(Zeichenfolge): Die auszuführende SQL-Anweisung - Automatisch in eine Transaktion mit konfigurierbarem Timeout eingebunden
- Gibt eine Transaktions-ID für explizites Commit zurück
- Wichtige Sicherheitsfunktion : Die Konversation wird nach der Ausführung beendet, sodass der Benutzer die Ergebnisse überprüfen kann, bevor er sich für ein Commit oder Rollback entscheidet.
- Wartung ausführen
- Führen Sie Wartungsbefehle wie VACUUM, ANALYZE oder CREATE DATABASE außerhalb von Transaktionen aus
- Eingabe:
sql
(Zeichenfolge): Die auszuführende SQL-Anweisung – muss VACUUM, ANALYZE oder CREATE DATABASE sein - Gibt ein Ergebnisobjekt mit Ausführungszeitmetriken zurück
- Ausführen_Commit
- Explizites Commit einer Transaktion anhand ihrer ID
- Eingabe:
transaction_id
(Zeichenfolge): ID der zu bestätigenden Transaktion - Sichere Bereinigung nach Commit oder Rollback
- Wendet Änderungen dauerhaft auf die Datenbank an
- execute_rollback
- Explizites Zurücksetzen einer Transaktion anhand ihrer ID
- Eingabe:
transaction_id
(Zeichenfolge): ID der Transaktion, die zurückgesetzt werden soll - Verwirft alle Änderungen sicher und bereinigt die Ressourcen
- Nützlich, wenn Sie Änderungen überprüfen und entscheiden, sie nicht anzuwenden
- list_tables
- Erhalten Sie eine umfassende Liste aller Tabellen in der Datenbank
- Enthält Spaltenanzahl und Tabellenbeschreibungen
- Keine Eingabeparameter erforderlich
- Tabelle beschreiben
- Erhalten Sie detaillierte Informationen zu einer bestimmten Tabellenstruktur
- Eingabe:
table_name
(Zeichenfolge): Name der zu beschreibenden Tabelle - Gibt vollständige Schemainformationen zurück, einschließlich Primärschlüssel, Fremdschlüssel, Indizes und Spaltendetails
📊 Ressourcen
Der Server stellt erweiterte Schemainformationen für Datenbanktabellen bereit:
- Tabellenschemata (
postgres://<host>/<table>/schema
)- Detaillierte JSON-Schemainformationen für jede Tabelle
- Enthält vollständige Spaltenmetadaten, Primärschlüssel und Einschränkungen
- Automatisch aus Datenbankmetadaten ermittelt
🚀 Verwendung mit Claude Desktop
Claude Desktop Integration
Um diesen Server mit Claude Desktop zu verwenden, folgen Sie diesen Schritten:
- Stellen Sie zunächst sicher, dass Node.js auf Ihrem System installiert ist
- Installieren Sie das Paket mit npx oder fügen Sie es Ihrem Projekt hinzu
- Konfigurieren Sie Claude Desktop, indem Sie
claude_desktop_config.json
bearbeiten (normalerweise zu finden unter~/Library/Application Support/Claude/
unter macOS):
- Ersetzen Sie die Datenbankverbindungszeichenfolge durch Ihre tatsächlichen PostgreSQL-Verbindungsdetails
- Starten Sie Claude Desktop vollständig neu
Wichtig: Aus Sicherheitsgründen „Einmal zulassen“ verwenden
Wenn Claude versucht, Änderungen an Ihrer Datenbank vorzunehmen, fordert Claude Desktop Sie zur Genehmigung auf:
Überprüfen Sie die SQL-Änderungen immer sorgfältig, bevor Sie sie genehmigen!
Bewährte Vorgehensweisen für die Sicherheit:
- Klicken Sie bei Commit-Vorgängen immer auf „Einmal zulassen“ (nicht auf „Immer zulassen“).
- Überprüfen Sie die Transaktions-SQL sorgfältig, bevor Sie sie genehmigen
- Erwägen Sie die Verwendung eines Datenbankbenutzers mit eingeschränkten Berechtigungen
- Verwenden Sie nach Möglichkeit eine Testdatenbank, wenn Sie diesen Server zum ersten Mal ausprobieren.
Dieser „Einmal zulassen“-Ansatz gibt Ihnen die volle Kontrolle, um unerwünschte Änderungen an Ihrer Datenbank zu verhindern, während Claude bei Bedarf weiterhin bei Datenverwaltungsaufgaben helfen kann.
⚙️ Umgebungsvariablen
Sie können das Serververhalten mit Umgebungsvariablen in Ihrer Claude Desktop-Konfiguration anpassen:
Wichtige Umgebungsvariablen:
TRANSACTION_TIMEOUT_MS
: Transaktions-Timeout in Millisekunden (Standard: 15000)- Erhöhen Sie diesen Wert, wenn Ihre Transaktionen mehr Zeit benötigen
- Transaktionen, die diese Zeit überschreiten, werden aus Sicherheitsgründen automatisch zurückgesetzt
MAX_CONCURRENT_TRANSACTIONS
: Maximale Anzahl gleichzeitiger Transaktionen (Standard: 10)- Verringern Sie diese Zahl für einen konservativeren Betrieb
- Höhere Werte ermöglichen mehr gleichzeitige Schreibvorgänge
ENABLE_TRANSACTION_MONITOR
: Transaktionsmonitor aktivieren/deaktivieren („true“ oder „false“, Standard: „true“)- Überwacht abgebrochene Transaktionen und macht diese automatisch rückgängig
- Muss selten deaktiviert werden
PG_STATEMENT_TIMEOUT_MS
: Timeout für die Ausführung der SQL-Abfrage in ms (Standard: 30000)- Begrenzt die Dauer der Ausführung einzelner SQL-Anweisungen
- Wichtige Sicherheitsfunktion zur Verhinderung außer Kontrolle geratener Abfragen
PG_MAX_CONNECTIONS
: Maximale PostgreSQL-Verbindungen (Standard: 20)- Wichtig, um innerhalb der Verbindungslimits Ihrer Datenbank zu bleiben
MONITOR_INTERVAL_MS
: Wie oft auf feststeckende Transaktionen geprüft werden soll (Standard: 5000)- Normalerweise muss nichts angepasst werden
🔄 Vollständigen Datenbankzugriff mit Claude verwenden
Dieser Server ermöglicht Claude mit Ihrer Zustimmung das Lesen und Schreiben in Ihrer PostgreSQL-Datenbank. Hier sind einige Beispiele für Konversationsabläufe:
Beispiel: Erstellen einer neuen Tabelle und Hinzufügen von Daten
Sie: „Ich brauche eine neue Produkttabelle mit Spalten für ID, Name, Preis und Lagerbestand.“
Claude: Analysiert Ihre Datenbank und erstellt eine Abfrage
Claude Desktop fordert Sie auf, diesen Vorgang zu genehmigen
Sie: Überprüfen Sie und klicken Sie auf „Einmal zulassen“.
Claude: „Ich habe die Produkttabelle erstellt. Soll ich einige Beispieldaten hinzufügen?“
Sie: „Ja, bitte fügen Sie 5 Beispielprodukte hinzu“
Claude: Erstellt INSERT-Anweisungen und fordert zur Genehmigung auf. Sie überprüfen und genehmigen mit „Einmal zulassen“.
Beispiel: Datenanalyse mit sicheren Abfragen
Sie: „Welches sind meine drei preislich besten Produkte?“
Claude: Führt automatisch eine schreibgeschützte Abfrage aus Zeigt Ihnen die Ergebnisse
Sicherheits-Workflow
Das wichtigste Sicherheitsmerkmal ist der zweistufige Ansatz für alle Vorgänge, die Ihre Datenbank ändern:
- Claude analysiert Ihre Anfrage und bereitet SQL vor
- Für Nur-Lese-Operationen (SELECT) führt Claude automatisch aus
- Für Schreibvorgänge (INSERT, UPDATE, DELETE, CREATE usw.):
- Claude führt das SQL in einer Transaktion aus und beendet die Konversation
- Sie überprüfen die Ergebnisse
- In einer neuen Konversation antworten Sie mit "Ja" zum Festschreiben oder mit "Nein" zum Zurücksetzen
- Claude Desktop zeigt Ihnen genau, was geändert wird und fragt nach Erlaubnis
- Klicken Sie auf „Einmal zulassen“, um den jeweiligen Vorgang zuzulassen
- Claude führt die Operation aus und gibt Ergebnisse zurück
Dadurch haben Sie mehrere Möglichkeiten, Änderungen zu überprüfen, bevor sie dauerhaft in die Datenbank übernommen werden.
⚠️ Sicherheitsüberlegungen
Wenn Sie Claude mit Schreibzugriff mit Ihrer Datenbank verbinden:
Datenbankbenutzerberechtigungen
WICHTIG: Erstellen Sie einen dedizierten Datenbankbenutzer mit entsprechenden Berechtigungen:
Best Practices für die sichere Nutzung
- Verwenden Sie immer „Einmal zulassen“, um jeden Schreibvorgang zu überprüfen
- Wählen Sie bei Datenbankänderungen niemals „Immer zulassen“ aus
- Nehmen Sie sich Zeit, das SQL sorgfältig zu überprüfen
- Stellen Sie bei der ersten Erkundung dieses Tools eine Verbindung zu einer Testdatenbank her
- Erwägen Sie die Verwendung einer Datenbankkopie/eines Backups für erste Tests
- Beschränken Sie die Berechtigungen von Datenbankbenutzern auf das Nötigste
- Vermeiden Sie die Verwendung eines Superuser- oder Administratorkontos
- Erteilen Sie nach Möglichkeit tabellenspezifische Berechtigungen
- Führen Sie vor umfangreicher Nutzung Datenbanksicherungen durch
- Geben Sie niemals vertrauliche Daten weiter , die LLMs nicht zugänglich gemacht werden sollten.
- Überprüfen Sie alle SQL-Operationen, bevor Sie sie genehmigen
- Überprüfen Sie die Tabellennamen
- Überprüfen Sie die Spaltennamen und Daten
- Bestätigen Sie, dass WHERE-Klauseln angemessen sind
- Achten Sie auf eine ordnungsgemäße Transaktionsabwicklung
Docker
Der Server kann einfach in einem Docker-Container ausgeführt werden:
Verwenden Sie für Docker unter macOS host.docker.internal, um eine Verbindung zum Hostnetzwerk herzustellen:
📄 Lizenz
Dieser MCP-Server ist unter der MIT-Lizenz lizenziert.
💡 Vergleich mit dem offiziellen PostgreSQL MCP-Server
Besonderheit | Dieser Server | Offizieller MCP PostgreSQL-Server |
---|---|---|
Lesezugriff | ✅ | ✅ |
Schreibzugriff | ✅ | ❌ |
Schemadetails | Erweitert | Basic |
Transaktionsunterstützung | Explizit mit Timeouts | Schreibgeschützt |
Indexinformationen | ✅ | ❌ |
Fremdschlüsseldetails | ✅ | ❌ |
Zeilenanzahlschätzungen | ✅ | ❌ |
Tabellenbeschreibungen | ✅ | ❌ |
Autor
Erstellt von Syahiid Nur Kamil ( @syahiidkamil )
Copyright © 2024 Syahiid Nur Kamil. Alle Rechte vorbehalten.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Ein erweiterter Model Context Protocol-Server, der es LLMs ermöglicht, Datenbankschemata mit umfangreichen Metadaten zu prüfen und schreibgeschützte SQL-Abfragen mit Sicherheitsüberprüfungen auszuführen.
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server providing LLMs read-only access to PostgreSQL databases for inspecting schemas and executing queries.Last updated -16,94817JavaScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that provides read-only access to PostgreSQL databases with enhanced multi-schema support, allowing LLMs to inspect database schemas across multiple namespaces and execute read-only queries while maintaining schema isolation.Last updated -132JavaScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that provides read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -5,426418TypeScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server providing read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -5,426TypeScriptMIT License