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
🌟 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-AbfrageAlle 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-AnweisungAutomatisch 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 seinGibt 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 TransaktionSichere 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 sollVerwirft 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 TabelleGibt 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 nach feststeckenden Transaktionen gesucht 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 Model Context Protocol-Server, der LLMs vollständigen Lese-/Schreibzugriff auf PostgreSQL-Datenbanken bietet und sowohl das Abfragen als auch das Ändern von Datenbankinhalten mit Transaktionsverwaltung und Sicherheitskontrollen ermöglicht.
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that provides read-only access to PostgreSQL databases. This server enables LLMs to inspect database schemas and execute read-only queries.Last updated -21,55268,916MIT License
- -securityAlicense-qualityA Model Context Protocol server providing LLMs read-only access to PostgreSQL databases for inspecting schemas and executing queries.Last updated -21,55223MIT License
- -securityFlicense-qualityA Model Context Protocol server providing both read and write access to PostgreSQL databases, enabling LLMs to query data, modify records, and manage database schemas.Last updated -6487
- -securityFlicense-qualityA Model Context Protocol server that provides read-only access to PostgreSQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -21,552