Skip to main content
Glama

PostgreSQL Advanced MCP Server

by syahiidkamil

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-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:

  1. Stellen Sie zunächst sicher, dass Node.js auf Ihrem System installiert ist
  2. Installieren Sie das Paket mit npx oder fügen Sie es Ihrem Projekt hinzu
  3. Konfigurieren Sie Claude Desktop, indem Sie claude_desktop_config.json bearbeiten (normalerweise zu finden unter ~/Library/Application Support/Claude/ unter macOS):
{ "mcpServers": { "postgres-full": { "command": "npx", "args": [ "-y", "mcp-postgres-full-access", "postgresql://username:password@localhost:5432/database" ], "env": { "TRANSACTION_TIMEOUT_MS": "60000", "MAX_CONCURRENT_TRANSACTIONS": "5", "PG_STATEMENT_TIMEOUT_MS": "30000" } } } }
  1. Ersetzen Sie die Datenbankverbindungszeichenfolge durch Ihre tatsächlichen PostgreSQL-Verbindungsdetails
  2. 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:

Dialogfeld „Einmal zulassen“

Ü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:

"env": { "TRANSACTION_TIMEOUT_MS": "60000", "MAX_CONCURRENT_TRANSACTIONS": "5" }

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

CREATE TABLE products ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, price DECIMAL(10,2) NOT NULL, inventory INTEGER DEFAULT 0 );

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:

  1. Claude analysiert Ihre Anfrage und bereitet SQL vor
  2. Für Nur-Lese-Operationen (SELECT) führt Claude automatisch aus
  3. 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:

-- Example of creating a restricted user (adjust as needed) CREATE USER claude_user WITH PASSWORD 'secure_password'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_user; GRANT INSERT, UPDATE, DELETE ON TABLE table1, table2 TO claude_user; -- Only grant specific permissions as needed

Best Practices für die sichere Nutzung

  1. 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
  2. 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
  3. 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
  4. Führen Sie vor umfangreicher Nutzung Datenbanksicherungen durch
  5. Geben Sie niemals vertrauliche Daten weiter , die LLMs nicht zugänglich gemacht werden sollten.
  6. Ü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:

# Build the Docker image docker build -t mcp-postgres-full-access . # Run the container docker run -i --rm mcp-postgres-full-access "postgresql://username:password@host:5432/database"

Verwenden Sie für Docker unter macOS host.docker.internal, um eine Verbindung zum Hostnetzwerk herzustellen:

docker run -i --rm mcp-postgres-full-access "postgresql://username:password@host.docker.internal:5432/database"

📄 Lizenz

Dieser MCP-Server ist unter der MIT-Lizenz lizenziert.

💡 Vergleich mit dem offiziellen PostgreSQL MCP-Server

BesonderheitDieser ServerOffizieller MCP PostgreSQL-Server
Lesezugriff
Schreibzugriff
SchemadetailsErweitertBasic
TransaktionsunterstützungExplizit mit TimeoutsSchreibgeschützt
Indexinformationen
Fremdschlüsseldetails
Zeilenanzahlschätzungen
Tabellenbeschreibungen

Autor

Erstellt von Syahiid Nur Kamil ( @syahiidkamil )


Copyright © 2024 Syahiid Nur Kamil. Alle Rechte vorbehalten.

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol server providing LLMs read-only access to PostgreSQL databases for inspecting schemas and executing queries.
    Last updated -
    16,948
    17
    JavaScript
    MIT License
    • Apple
  • -
    security
    A
    license
    -
    quality
    A 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 -
    13
    2
    JavaScript
    MIT License
  • -
    security
    A
    license
    -
    quality
    A 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,426
    418
    TypeScript
    MIT License
    • Linux
    • Apple
  • -
    security
    A
    license
    -
    quality
    A 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,426
    TypeScript
    MIT License
    • Linux
    • Apple

View all related MCP servers

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/syahiidkamil/mcp-postgres-advanced'

If you have feedback or need assistance with the MCP directory API, please join our Discord server