Skip to main content
Glama
devopam

MCPg - Production-grade PostgreSQL MCP Server

MCPg

MCP Toplist

Ein produktionsreifer Model Context Protocol-Server für PostgreSQL. Er ermöglicht es KI-Agenten, eine Postgres-Datenbank sicher zu inspizieren, abzufragen, zu bedienen und zu tunen – 254 Tools, die Katalog-Introspektion, Query-Intelligenz, natürliche-Sprache-SQL, strukturelle Diffs, Hybrid-Suche, Graph-Abfragen, Datenbewegung, Live-Operationen und mehr abdecken.

PyPI version Python versions License: MIT CI OpenSSF Scorecard OpenSSF Best Practices Stars MCPg MCP server AllMCPs Verified

Live ausprobieren: Richten Sie einen MCP-Client – oder den MCP Inspector – auf den gehosteten, schreibgeschützten Demo-Endpunkt https://devopam-mcpg-demo.hf.space/mcp aus. Es werden Lese-Tools gegen wegwerfbare Demo-Daten bereitgestellt; für den echten Betrieb führen Sie MCPg neben Ihrer eigenen Datenbank aus (siehe Schnellstart).

📍 Gelistet auf


Aspekt

MCPg

Sicherheit

Schreibgeschützt Standard + AST-Validierung

Transport

stdio + HTTP/SSE

Installation

pip install mcpg

Postgres-Versionen

14–19

Haupt-Unterschiedungsmerkmal

Produktions-Überwachung + Multi-Tenancy

Warum MCPg

  • Sicher per Standard. Schreibgeschützter Zugriffsmodus. Jede benutzerbeschaffte SQL Anweisung wird vor der Ausführung durch eine validierte AST-Whitelist geparst. Die Interpolation von Bezeichnern erfolgt über einen strikten [A-Za-z_][A-Za-z0-9_]*-Regex, wo dieser als DB-Input interpretiert wird – eine Entwurfsbeschränkung, die bedeutet, dass Benutzereingaben nie über Zeichenfolgenverkettung in die Datenbank gelangen. Funktionen wie DDL, Shell und LISTEN/NOTIFY bleiben deaktiviert, bis Sie sie opt-in. Jedes Tool veröffentlicht MCP ToolAnnotations (readOnlyHint, openWorldHint), die aus genau diesen Gate-Kategorien abgeleitet sind, sodass Clients Lesevorgänge automatisch genehmigen und Schreibvorgänge ohne Vermutung gattern.

  • Ein Server, große Oberfläche. Anwendungsdatenzugriff (Abfragen, Suche, Cursor, NL→SQL) und DBA-Operationen (Health-Checks, Index-Tuning, EXPLAIN-Analyse, Sperren, Vakuum, Dumps, Replikate, Migrationen) in ein einziger MCP-Server. Agenten müssen nicht zwischen Tools wechseln, um Aufgaben zu wechseln.

  • Alles PostgreSQL-nativ. Kein ORM, keine Abstraktionssteuer, sondern – es nutzt psycopg3 direkt, spricht alle pg_*-Systemansichten, integriert zu timescaleDB, pgvector, PostGIS, Apache AGE und pg_stat_statements wo sie verfügbar sind, und degradiert sauber, wo sie nicht.

  • Produktionsgeformt, nicht demodiert. Verbindungspooling, pro-Request SET ROLE-MTC, Lese-Replica-Routing mit Ausfall-Host-Erkennung, Server-Seitige-Cursor mit dedizierten Verbindungen, Rate-Limiting, Audit-Trail mit Regex-Redaktion, PG-TLS-Erzwingung beim Start, OIDC-JWT-Bearer-Auth, Pro-Session-Statement-/Lock- Timeouts.

  • Integrierte Observabilität. Ein Prometheus-/metrics-Endpunkt auf dem HTTP-Transport gibt mcpg_tool_calls_total{tool,status} und mcpg_tool_duration_seconds aus. Jeder Tool-Aufruf protokolliert ein strukturiertes Audit-Ereignis mit redigierten Anmeldedaten.

  • Testgesteuert, multi-version. Mehr als 2.500 Modultest plus eine Integrationssuite die in CI gegen einen echten Antwort-Container läuft – Matrix deckt PG 14, 15, 16, 17, 18 bei jedem Push ab, dazu PG 19 (Beta) als experimenteller (nicht blockierender) Eintrag, der unter Issue #120 verfolgt wird.


Related MCP server: PostgreSQL MCP Server

Installation

Von PyPI (empfohlen)

pip install mcpg
# or, in an isolated venv exposed globally:
uv tool install mcpg

Verifizierung:

mcpg --version

Docker

Ziehen Sie das vorgefertigte Image aus der GitHub Container Registry (publ auf jedes getaggte Release – :latest trackt die neueste, oder Sie pin eine Version wie :0.6.5):

docker pull ghcr.io/devopam/mcpg:latest
docker run --rm --name mcpg -p 8000:8000 \
    -e MCPG_DATABASE_URL=postgresql://user:pass@host:5432/db \
    -e MCPG_ACCESS_MODE=read-only \
    ghcr.io/devopam/mcpg:latest

In Windows PowerShell ersetzen Sie das abschließende \ durch ein Backtick ` (oder setzen den Befehl in eine Zeile); die Installationsanleitung hat fertige Linux/macOS-, PowerShell- und Command-Prompt-Blöcke.

Oder Sie erstellen es selbst aus dem Quellcode:

docker build -t mcpg https://github.com/devopam/MCPg.git

Multi-Image: Die Ausführungsphase lässt das Build-verfahren weg, läuft als uid=10001 / gid=10001 mit nologin-Shell, die Anwendungsdateien sind Root-Besitz und schreibgeschützt für den Laufzeitbenutzer.

Aus dem Quellcode (Entwickler)

git clone https://github.com/devopam/MCPg && cd MCPg
uv sync

uv sync erstellt eine virtuelle Umgebung mit allen Laufzeit- und Dev-Abhängigkeiten und stellt das mcpg-Konsolenskript bereit.

Mehr Details im Installations-Leitfaden.


Schnellstart

Ein-Klick-Installationen: Add to Cursor Install in VS Code Claude Desktop

Ein-Klick-Installation in Claude Desktop (.mcpb)

Debuggen Sie mcpg-<version>.mcpb aus dem letzten Release und Doppelklick Sie es (oder ziehen Sie es in Claude Desktop im Menü Einstellungen → Erweiterungen). Sie werden Du auf Ihre PostgreSQL-Verbindungs-URL – im OS-Keychain gespeichert – und einen Zugriffsmodus (Standard ist schreibschutz). Das ist die ganze Installation: das Paket ist etwa 2 KB und der Host löst das verankerte mcpg-Release von PyPI für Ihre Plattform.

Oder manuell verdrahten (stdio-Transport)

Fügen Sie Folgendes in Ihre claude_desktop_config.json ein (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "mcpg": {
      "command": "uvx",
      "args": ["mcpg"],
      "env": {
        "MCPG_DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
      }
    }
  }
}

StartClaude neu. Das MCPg-Toolset ist jetzt dem Anwendernmodel verfügbar. Sie können Claude zum Beispiel fragen:

„Welche Schemas existieren in dieser Datenbank? Fassen Sie für jedes Schema die drei größten Tabellen zusammen."

„Warum ist diese Abfrage langsam? SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at DESC"*

Noch keine interessanten Daten? Demo-Datensetseed

MCPG_DATABASE_URL=postgresql://... mcpg --demo

Ein Befehl lädt einen kleinen, kuratierten E-Commerce-Datensatz (3.000 Bestellungen, 900 Produktbewertungen, absichtlich eingebaute Fehler) in ein mcpg_demo Schema – entwickelt, damit der Berater, die Plan-Analyse, Volltextsuche, PII-Audit und Graph-Projektion beim ersten Versuch etwas relevantes finden. Sehen Sie die Tour für einen aufgezeichneten Durchlauf, und entfernen Sie es jederzeit mit mcpg --demo-drop.

Als HTTP-Server ausführen (für IDE-Integrationen, Web-Anwendungen usw.)

GXP8 Dann zeigen Sie jeden MCP-Client auf http://localhost:8000/mcp (oder Aufzähler /sse für den SSE-Transport). Setzen Sie MCPG_HTTP_AUTH_TOKEN=... für einen statischen Bearer-Token oder MCPG_AUTH_MODE=oidc für einen vollständigen JWT-Check gegen einen OIDC-Anbieter.


Konfiguration

MCPg wird vollständig über Umgebungsve Variablen konfiguriert – ke ne Konfigdatei, keine Flags (die CLI---version / --demo / --demo-drop) sind Einmal-Kommando, keine Konfiguration). Die einzige erforderliche ist MCPG_DATABASE_URL; alles andere hat sichere Standardeinstellung.

Häufige Szenarien

Szenario

Setzen

Lokale Erkundung, schreibgeschützt

MCPG_DATABASE_URL

Lesen-Schreiben-Anwendungsdatenzugriff

MCPG_ACCESS_MODE=restricted

DBA-Werkzeugsatz (DDL, Erstellung usw.)

MCPG_ACCESS_MODE=unrestricted + MCPG_ALLOW_DDL=true

HTTP-Transport mit Bearer-Auth

MCPG_TRANSPORT=streamable-http + MCPG_HTTP_AUTH_TOKEN=…

Multi-Mandanten-Cloud

MCPG_DEFAULT_ROLE=tenant_a + MCPG_ALLOWED_ROLES=tenant_a,tenant_b,…

Lang-Statistik-Leseverteilzu

MCPG_REPLICA_URLS=postgresql://…?sslmode=require,postgresql://…?sslmode=require

NL→SQL – mit einem Anbieter

Jeden Schlüssel von Anbietern (ohne fest: wie ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, XAI_API_KEY, GROQ_API_KEY, HUGGINGFACE_TOKEN, … . MCPg hat 22 Anbieter). Die für die Variablen nicht gesetzt sind, nutzt er frei.

NL→SQL – mehrere Anbieter, Anrufer wählt

Setzen Sie alle Vanderschlüssel, die aktive sein sollen. Jeder Aufruf an translate_nl_to_sql kann provider="…" (jeder unterstützten integrierten oder eigenen) annehmen.

Umfassend

Kern

Variable

Standard

Beschreibung

MCPG_DATABASE_URL

erforderlich

Primäre PostgreSQL-DSN. Unterstützt URI-Formate (postgresql://…) und Schlüsselwort-Formate (host=… user=…). Remote-Hosts erfordern sslmode=require (oder stärker).

MCPG_ACCESS_MODE

read-only

read-only | restricted (ermöglicht Schreibwerkzeuge) | unrestricted (entsperrt zusätzlich DBA-Werkzeuge, wenn mit den Gate-Variablen kombiniert).

MCPG_TRANSPORT

stdio

stdio (Standard, für Claude Desktop) | streamable-http | sse.

MCPG_LOG_LEVEL

INFO

DEBUG | INFO | WARNING | ERROR | CRITICAL.

MCPG_HTTP_HOST

127.0.0.1

Bind-Adresse für HTTP-Transports. In Containern auf 0.0.0.0 setzen.

MCPG_HTTP_PORT

8000

Lauschport für HTTP-Transports (1–65535).

Fähigkeits-Gates (Opt-in für Werkzeuge mit größerem Wirkungsradius)

Variable

Standard

Beschreibung

MCPG_ALLOW_DDL

false

DDL-Werkzeuge verfügbar machen (run_ddl, create_graph, drop_graph, Hypertable-Werkzeuge, Migrationswerkzeuge). Erfordert MCPG_ACCESS_MODE=unrestricted.

MCPG_ALLOW_SHELL

false

Subprozess-gestützte Werkzeuge verfügbar machen (dump_database, restore_database, run_pg_binary). Erforderliche PG-Client-Binaries müssen im PATH liegen.

MCPG_ALLOW_LISTEN

false

LISTEN/NOTIFY-Werkzeuge verfügbar machen (subscribe_channel, poll_notifications, unsubscribe_channel, list_notification_subscriptions).

Authentifizierung (nur HTTP-Transports)

Variable

Standard

Beschreibung

MCPG_AUTH_MODE

static

static (Bearer mit MCPG_HTTP_AUTH_TOKEN vergleichen) | oidc (vollständige JWT-Validierung).

MCPG_HTTP_AUTH_TOKEN

Erforderliches Bearer-Token, wenn MCPG_AUTH_MODE=static. Vergleich in konstanter Zeit.

MCPG_OIDC_ISSUER

OIDC-Issuer-URL (erforderlich, wenn MCPG_AUTH_MODE=oidc).

MCPG_OIDC_AUDIENCE

Erwarteter aud-Anspruch (erforderlich, wenn MCPG_AUTH_MODE=oidc).

MCPG_OIDC_JWKS_URL

ermittelt

JWKS-Endpunkt überschreiben (andernfalls automatisch aus dem .well-known des Issuers ermittelt).

MCPG_OIDC_ROLE_CLAIM

JWT-Anspruch, dessen Wert zur PG-Rolle pro Anfrage wird (SET LOCAL ROLE). Kombinierbar mit dem Tenancy-Treiber.

HTTP-Härtung (nur HTTP-Transports)

Variable

Standard

Beschreibung

MCPG_HTTP_MAX_BODY_BYTES

1048576

(1 MiB) Anfragekörper darüber erhalten eine 413. Zählt gestreamte Bytes, sodass eine fehlende/falsche Content-Length dies nicht umgehen kann.

MCPG_HTTP_ALLOWED_ORIGINS

Kommagetrennte CORS-Whitelist. Nicht gesetzt = keine CORS-Middleware (keine Cross-Origin-Header werden ausgegeben).

MCPG_HTTP_HSTS_MAX_AGE

31536000

Strict-Transport-Security-Max-Age. 0 deaktiviert den HSTS-Header. Sicherheitsheader (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy) werden immer hinzugefügt, sofern die App sie nicht bereits gesetzt hat.

MCPG_HTTP_REQUEST_TIMEOUT_SECONDS

0

Obergrenze pro Anfrage (Echtzeit, 504 bei Ablauf). 0 = deaktiviert. Weglassen, wenn Sie auf langlebige SSE-/streamable-http-Streams angewiesen sind – eine harte Obergrenze trennt auch diese.

Multi-Tenancy (SET ROLE)

Variable

Standard

Beschreibung

MCPG_DEFAULT_ROLE

Statische PG-Rolle, die auf jede Abfrage angewendet wird. Bezeichner-validiert.

MCPG_ALLOWED_ROLES

Kommagetrennte Whitelist. Wenn gesetzt, müssen der X-MCPG-Role-Header / OIDC-Rollenanspruch in dieser Liste enthalten sein.

Lesereplikate

Variable

Standard

Beschreibung

MCPG_REPLICA_URLS

Kommagetrennte Replikat-DSNs. force_readonly-Abfragen werden im Round-Robin-Verfahren über gesunde Replikate verteilt; bei Fehlern Fallback auf das Primärsystem; 30 s Fenster für Wiederholungsversuche bei degradierten Replikaten.

Mehrere Datenbanken (schreibgeschützte Sekundärdatenbanken)

Variable

Standard

Beschreibung

MCPG_SECONDARY_DATABASE_URLS

Komma- oder zeilengetrennte name=dsn-Einträge, die zusätzliche schreibgeschützte Datenbanken benennen, die dieser eine Server bedienen kann (z. B. analytics=postgresql://…?sslmode=require,reporting=postgresql://…?sslmode=require). Lese-fähige Werkzeuge akzeptieren ein optionales database-Argument, das eine Sekundärdatenbank nach Namen auswählt; weglassen für die primäre. Sekundärdatenbanken sind schreibgeschützt – durch PostgreSQL erzwungen (jede Abfrage läuft in einer READ ONLY-Transaktion), sodass Schreibvorgänge / DDL / Shell / Migration immer auf die primäre Datenbank zielen. Namen müssen einfache Bezeichner sein ([a-z0-9_]+), eindeutig und nicht primary (die reservierte ID von MCPG_DATABASE_URL). Gleiche TLS-Regeln wie bei der primären DSN. Rufen Sie list_databases auf, um die konfigurierten IDs und deren Erreichbarkeit zu ermitteln.

Pool / Timeouts / TLS

Variable

Standard

Beschreibung

MCPG_POOL_MIN_SIZE

1

Mindestanzahl an Pool-Verbindungen.

MCPG_POOL_MAX_SIZE

5

Maximale Anzahl an Pool-Verbindungen. Muss ≥ MCPG_POOL_MIN_SIZE sein.

MCPG_STATEMENT_TIMEOUT_MS

30000

Pro Sitzung statement_timeout, das beim Verbindungs-Checkout gesetzt wird. Außer Kontrolle geratene Abfragen beenden sich selbst.

MCPG_LOCK_TIMEOUT_MS

5000

Pro Sitzung lock_timeout. Hängende Sperr-Wartezeiten beenden sich selbst.

MCPG_ENABLE_ANALYTICAL_QUERIES

true

run_analytical_query verfügbar machen (langlaufende Lesevorgänge auf einem isolierten Pool). Auf false setzen, um das Werkzeug zurückzuziehen.

MCPG_ANALYTICAL_TIMEOUT_MS

120000

Standardbudget pro Aufruf für run_analytical_query (2 Min.).

MCPG_ANALYTICAL_MAX_TIMEOUT_MS

600000

Harte Obergrenze für run_analytical_query; ein timeout_ms pro Aufruf wird darauf begrenzt (10 Min.). Muss ≥ MCPG_ANALYTICAL_TIMEOUT_MS sein.

MCPG_ANALYTICAL_MAX_CONCURRENCY

2

Größe des isolierten Analyse-Pools – maximale gleichzeitige run_analytical_query-Aufrufe.

MCPG_ALLOW_INSECURE_TLS

false

Die TLS-Prüfung beim Start umgehen, die Remote-DSNs ohne sslmode=require (oder stärker) ablehnt. Loopback-Hosts sind immer ausgenommen.

MCPG_SHUTDOWN_DRAIN_SECONDS

30

Bei SIGTERM bis zu dieser Dauer auf laufende Werkzeugaufrufe warten, bevor Pool und Cursor geschlossen werden.

Subprozess-Werkzeuge (nur mit MCPG_ALLOW_SHELL=true)

Variable

Standard

Beschreibung

MCPG_SHELL_TIMEOUT_SEC

60

Maximale Wanduhrzeit für pg_dump- / pg_restore- / psql-Aufrufe.

MCPG_SHELL_MAX_OUTPUT_BYTES

67108864

(64 MiB) Obergrenze für erfasste Standardausgabe pro Subprozess-Aufruf.

MCPG_SUBPROCESS_BIN_ALLOWLIST

Kommagetrennte absolute Verzeichnisse, unter denen die aufgelösten pg_dump- / pg_restore- / psql-Binaries liegen müssen. Leer = PATH vertrauen. Verhindert einen PATH-Shim dieser Binaries.

MCPG_SUBPROCESS_CPU_SECONDS

RLIMIT_CPU pro Kindprozess (Sekunden). Nur POSIX; nicht gesetzt = erben.

MCPG_SUBPROCESS_MEMORY_MB

RLIMIT_AS pro Kindprozess (MiB). Nur POSIX; nicht gesetzt = erben.

LISTEN/NOTIFY (nur mit MCPG_ALLOW_LISTEN=true)

Variable

Standard

Beschreibung

MCPG_LISTEN_QUEUE_MAX

1000

Puffer pro Kanal; älteste Benachrichtigungen werden bei Überlauf verworfen.

Audit

Variable

Standard

Beschreibung

MCPG_AUDIT_PERSIST

false

Wenn true, persistiert jeder run_write- / run_ddl-Aufruf in eine mcpg_audit.events-Tabelle (idempotent automatisch erstellt).

MCPG_AUDIT_REDACT_KEYS

Kommagetrennte Regex-Fragmente, die zum Secret-Namensmuster hinzugefügt werden (Standardwerte decken bereits password, passwd, secret, token, api[_-]?key, bearer, authorization, database_url, dsn, conninfo ab).

MCPG_AUDIT_INTEGRITY

false

Wenn true, wird jedes persistierte Ereignis mit einem HMAC signiert, der über das vorherige Ereignis verkettet ist; das verify_audit_chain-Tool durchläuft die Kette und meldet die erste Unterbrechung. Erfordert MCPG_AUDIT_HMAC_KEY.

MCPG_AUDIT_HMAC_KEY

Geheimer Schlüssel für die Audit-HMAC-Kette. Erforderlich, wenn MCPG_AUDIT_INTEGRITY=true. Erscheint nie in repr/Logs.

Secrets-Backend

Standardmäßig wird jedes Secret direkt aus der Umgebung gelesen. Setzen Sie MCPG_SECRETS_BACKEND=file, um stattdessen API-Schlüssel / Bearer-Token / HMAC-Schlüssel aus einer eingehängten Datei zu laden – ein Name in der Datei gewinnt; alles, was fehlt, fällt auf die Umgebungsvariable zurück, sodass partielle Dateien funktionieren.

Variable

Standard

Beschreibung

MCPG_SECRETS_BACKEND

env

env (jedes Secret aus der Umgebung lesen) | file (eine Secrets-Datei über die Umgebung legen).

MCPG_SECRETS_FILE_PATH

Erforderlich, wenn MCPG_SECRETS_BACKEND=file. Pfad zu einer flachen Name → Wert-Zuordnung: immer JSON, oder YAML (.yaml/.yml), wenn PyYAML installiert ist. Deckt ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY / GOOGLE_API_KEY / MCPG_NL2SQL_API_KEY, MCPG_HTTP_AUTH_TOKEN und MCPG_AUDIT_HMAC_KEY ab.

Ratenbegrenzung

Variable

Standard

Beschreibung

MCPG_RATE_LIMIT_ENABLED

false

Token-Bucket-Ratenbegrenzung pro Tool aktivieren.

MCPG_RATE_LIMIT_MAX_REQUESTS

60

Globale Obergrenze pro Fenster über alle Tools.

MCPG_RATE_LIMIT_WINDOW_SECONDS

60

Fensterlänge für das globale Kontingent.

MCPG_RATE_LIMIT_HEAVY_MAX

5

Obergrenze für schwere Tools (run_write, run_ddl, dump_database usw.).

MCPG_RATE_LIMIT_HEAVY_WINDOW

60

Fensterlänge für das Kontingent schwerer Tools.

Caching & Feature-Flags

Variable

Standard

Beschreibung

MCPG_CACHE_ENABLED

true

Die adaptive Cache-Ebene aktivieren oder deaktivieren.

MCPG_CACHE_TTL_SECONDS

300

Standard-Cache-Lebensdauer in Sekunden.

MCPG_CACHE_MAXSIZE

1024

Maximale LRU-Kapazitätsgrenze für den Speichercache.

MCPG_REDIS_URL

Optionale Redis-Backend-Verbindungszeichenfolge für externes, Multi-Node-Caching.

MCPG_ENABLE_HEAVY_DIAGNOSTICS

true

Rechenintensive Diagnose-, Diagramm- und Berater-Tools umschalten.

MCPG_ELICIT_CONFIRM_WRITES

false

Wenn true, erfordert jeder Schreib-/DDL-/Shell-/Listen-/Migrate-Tier-Toolaufruf (jedes Tool, dessen readOnlyHint-Annotation nicht true ist) eine akzeptierte interaktive Bestätigung (ctx.elicit()), bevor er ausgeführt wird. Best-Effort, keine Durchsetzungsgrenze: Es greift nur für Clients, die sowohl einen Anfrage-context übergeben als auch die elicitation-Fähigkeit während initialize deklarieren – ein Client, der eines davon weglässt, umgeht das Tor stillschweigend und das Tool läuft wie gewohnt.

Natürlichsprachliches SQL

MCPg erkennt automatisch jeden konfigurierten Anbieter aus der Umgebung beim Start – setzen Sie so viele Anbieter-Schlüssel, wie Sie haben, und jeder wird aufrufbar. Neunzehn Anbieter sind integriert. Drei sind First-Party (Anthropic, OpenAI, Gemini); die anderen sechzehn sprechen die OpenAI-kompatible API mit anbietervoreingestellten Endpunkten: DeepSeek, Qwen, OpenRouter, Perplexity, xAI (Grok), Groq, Mistral, Together, Fireworks, DeepInfra, Cerebras, Nebius, Hugging Face, GitHub Models, SambaNova und Moonshot (Kimi). Jeder integrierte Anbieter ist Plug-and-Play – setzen Sie die übliche API-Schlüssel-Umgebungsvariable des Anbieters und er wird automatisch erkannt – und jeder andere OpenAI-kompatible Anbieter oder lokale Modellserver (Ollama, vLLM, LM Studio) ist dennoch allein durch Konfiguration anschließbar über MCPG_NL2SQL_CUSTOM_PROVIDERS. Die gesamte integrierte Liste ist ein deklaratives Register in nl2sql.py, sodass das Hinzufügen eines Anbieters oder das Aktualisieren eines veralteten Standardmodells eine einzellige Datenänderung ist.

Wenn MCPG_NL2SQL_PROVIDER nicht gesetzt ist, wählt MCPg automatisch den Standard in Registerreihenfolge – anthropic → openai → gemini bleiben zuerst, sodass bestehende Bereitstellungen nicht betroffen sind. translate_nl_to_sql akzeptiert ein optionales provider="…"-Argument, um pro Aufruf zu routen; get_server_info meldet, welche konfiguriert sind.

Variable

Standard

Beschreibung

<VENDOR>_API_KEY

Durch das Setzen des herstellerüblichen Schlüssels wird dieser Anbieter aktiviert. Übliche Slugs: ANTHROPIC_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, OPENROUTER_API_KEY, PERPLEXITY_API_KEY, XAI_API_KEY, GROQ_API_KEY, MISTRAL_API_KEY, TOGETHER_API_KEY, FIREWORKS_API_KEY, CEREBRAS_API_KEY, NEBIUS_API_KEY, SAMBANOVA_API_KEY, MOONSHOT_API_KEY.

(abweichende Schlüssel)

Einige Anbieter folgen nicht <VENDOR>_API_KEY: GeminiGEMINI_API_KEY or GOOGLE_API_KEY; QwenDASHSCOPE_API_KEY or QWEN_API_KEY; Hugging FaceHF_TOKEN; GitHub ModelsGITHUB_TOKEN; DeepInfraDEEPINFRA_TOKEN.

MCPG_NL2SQL_PROVIDER

automatisch

Jeder eingebaute Slug (siehe oben) oder ein eigener Name. Legt den Standardanbieter fest, der verwendet wird, wenn das Werkzeug ohne provider= aufgerufen wird. Wird nicht gesetzt + ein beliebiger Anbieterschlüssel liegt vorhanden, → wählt MCPg automatisch in der Reihenfolge der Registrierung.

MCPG_NL2SQL_API_KEY

Expliziter Schlüssel für den konfigurierten MCPG_NL2SQL_PROVIDER. Überschreibt die herstellerspezifische Umgebungsvariable nur für diesen Anbieter. Erfordert, dass MCPG_NL2SQL_PROVIDER gesetzt ist.

MCPG_NL2SQL_MODEL

Standard des Anbieters

Überschreibt das Standardmodell (z. B. claude-sonnet-4-6, gpt-4o-mini, grok-3-mini). Gilt nur für den Standardanbieter.

MCPG_NL2SQL_BASE_URL

Endeindeutiger Endpunkt, zur Überschreibung für den Standardanbieter (private Gateways / regionale Endpunkte).

MCPG_NL2SQL_CUSTOM_PROVIDERS

Bring is ryou Hast provider – keine Codeänderung. Komma- bzw. zeilenumbruchgetrennte name=base_url|model-Einträge, die zusätzliche OpenAI-kompatible Anbieter über die eingebauten hinaus deklarieren (lokales Ollama / vLLM / LM Studio oder beliebige Nischenanbieter). Schlüssel laut Konvention aus <NAME>_API_KEY, alternativ |KEY_ENV_VAR für abweichende; für lokale Loopback-Endpunkte ist grad Keyless Tweaks. Ü Bachelor jeder name über provider= aufrufbar.

MCPG_NL2SQL_MAX_TOKENS

2048

Quelle limit kaptoundeine generierte Tokens (Hard-Limit: 16384).


Anwendungsbeispiele

Die MCP-Tools werden vom Agenten (Claude, Cursor, Continue, …) auf der Grundlage deiner natürlich formulierten Anweisungen aufgerufen. Einige Veranschaulichende Round-Trips:

Schema inspizieren

Du: Welche Tabellen leben im public-Schema, und welche sind die größten nach Anzahl Zeilen?

Agent (mit list_tables + summarize_table × N): Sechs Tabellen: customers (1,2 Mio. Zeilen), orders (4,7 Mio.), line_items (18,3 Mio.), products (340), addresses (1,4 Mio.), audit_log (45,8 Mio. – die größte, wächst ohne Aufbewahrung).

Eine langsamer Freigabe Adressen beheben

Du: Warum braucht SELECT * FROM orders o JOIN line_items l ON o.id = l.order_id WHERE o.created_at > now() - interval '7 days' 8 Sekunden?

Agent (mit why_is_this_slow + recommend_indexes): EXPLAIN ANALYZE zeigt einen sequenziellen Scan über orders (4,7 Mio. Zeilen) gefiltert nach created_at. Es gibt keinen Index auf orders.created_at. Empfohlen: CREATE INDEX CONCURRENTLY orders_created_at_idx ON orders (created_tick DESC); Erwartete Verbesserung: ~95 % Reduzierung (Index-Scan unter neu ~33.000 Zeilen statt der gesamten Tabelle). Führe validate_migration dort vor der Anwendung aus, um sicherzugehen, dass es keine Sperroverbindung gibt.

Einfaches Englisch in SQL übersetzen

Du: Finde Kundschaft, deren Bestellung in diesem Monat aufgegeben wurde, aber nie in den vorherigen drei Monaten – zeig mir ihre E-Mail und ihren aktuellen ausgegebenen Gesamtpreis (Lifetime Spend).

Agent (mit translate_nl_to_sql):

SELECT c.email, SUM(l.price * l.quantity) AS lifetime_spend
FROM customers c
JOIN orders o ON o.customer_id = c.id
JOIN line_items l ON l.order_id = o.id
WHERE EXISTS (
  SELECT 1 FROM orders o2 WHERE o2.customer_id = c.id
    AND o2.created_at >= date_trunc('month', now()))
  AND NOT EXISTS (
  SELECT 1 FROM orders o3 WHERE o3.customer_id = c.id
    AND o3.created_at >= date_trunc('month', now()) - interval '3 months'
    AND o3.created_at <  date_trunc('month', now()))
GROUP BY c.email;

Schema grafisch darstellen

Du: Zeichen mir ein ER-Diagramm des public-Schemas.

Agent (mit generate_schema_diagram): Gibt ein Mermaid-En Diagramm zurück, das du direkt in GitHub / Notion / Obsidian einfügen kannst.

Datenbank auditieren

Du: Wie gesund hat es diese Datenbank gerade?

Du (mit audit_database): Gibt einen bewerteten Bericht aus: Memory & I/O-Punkte & I/O: 92 (GUT), Transaktion & Verbindung: 78 (WARNUNG: Rollback-Rate 0,4 %, Blick in die App-Logs), Gleichzugriff & Sperren: 60 (KRITISCH: 14 Backends warten), Sauberkeit & Bloat: 88 (GUT), Langsam Abfragen: 70 (WARNUNG: die meistauf gravierte Abfrage-Schnittstelle läuft 5000×, ⏳ 90 ms? – siehe optimize_query).

Geschützten Schreibzugriff durchführen

Du: Soft-Delete alle Bestellungen, die älter als 5 Jahre sind.

Agent (mit run_write und MCPG_AUDIT_PERSIST=true): Valdiert die Anweisung durch den Safe-SQL-Kern, führt sie innerhalb einer Movene Transaktion aus, gibt Anzahl betroffener Zeilen zurück, persistiert Aufruf (SQL + Argumente – mit Regex redigierten Geheimnissen – + Status) in mcpg_audit.events zur späteren Prüfung.

Für dutzende weitere Rezepte – Multi-tenant-routing, RLS-Tests, NL→SQL, Hybride Vektor- + Festsuche (Full-Text), Apache AGE Cypher, TimescaleDB, ORM-Schema exportieren, Serverseitige Cursor – siehe docs/cookbook.md.


Was in der Box ist

Kompakte Kategorienliste. Für die vollständige, aktuelle Tool-Referenz siehe docs/tools.md; für eine geführte Tour siehe docs/tour.md.

  • Catalog-Introspection – Schemas, Tabellen, Spalten, Indizes, Beschränkungen, View, Functions, Trigger, Sequences, Partitionen, Policies, Rollen, Grants, Enums, Domains, zusammengesetzte Typen, FDWs, Publications, Subscriptions, Extensions, generierte Spalten.

  • Query Intelligencerun_select, run_select_parallel, explique_query, analyze_query_plan, why_is_this_slow, recommend_indexes, analyze_workload, check_database_health, detect_n_plus_one, audit_database.

  • Suchefuzzy_search (Trigramm), full_text_search, vector_search, hybrid_search (pgvector + FTS über RKF), geo_search (PostGIS k-nearest-Neighbor).

  • Natürliche Sprache → SQL – Hoodies? translate_nl_to_sql (22 eingebaute Provider – Anthropic, OpenAI, Gemini, xAI, Groq, Mistral, /HuggingFace Face, … – plus beliebige benutzerdefinierte OpenAI-kompatible Endpunkte; Ausgabe passiert durch denselben Safe-SQL-Kernel wie handgeschriebene Abfragen.

    • Visualizationgenerate_schema_diagram (ER), generate_fk_cascade_graph (Blastradius of ON DELETE CASCADE), generate_graph_diagram (APACHE AGE property graphs).

  • Strukturelle Diffsions & Migrationencompare_schemas, validate_migration, gestufte Workflow prepare_migration / complete_migration , cancel_migration.

  • Apache AGE graph + Cypherlist_graphs, describe_graph, run_cyphert, create_graph, drop_graph, generate_graph_diagram.

  • Zusammen unfassende & Beratungswerk tools, stabil – summarize_table, find_unused_objects, find_sensitive_columns (PII-Heuristik), lint_naming_conventions, test_rls_for_role, list_locks, find_blocking_chains, read_pg_stat_session_io (PG16+), generate_test_data (test_data_generator).

  • Live Betrieb & Wartunglist_active_queries, verify_connection_encryption (TLS-Status der Live-Verbindung), run_maintenance (VACUUM/ANALYZE), prune_audit_events (Prüfprotokollretention), cancel_query, terminate_backend, run_write, run_ddl, `enable_te o Enable Extension.

  • Datenbereich (Data Moving)export_query / export_table (CSV/JSON), dump_database / restore_database, import_csv / import_json (COPY FROM STDIN), copy_table_between_asquery.

  • Server-side cursorsopen_cursor, fetch_cursor, close_cursor, list_cursors) für seitenweise Read mittels Millionen von Zeilen (pageable).

  • TimescaleDBlist_hypertables, list_chunks, create_hypertable, add_compression_policy, add_retention_policy.

  • ORM schema exporter – Prisma, Drizzle, SQLAlchemy, sqlc, Diesel, jOOQ, Ent, Ecto.

  • Ereignis-Streamssubscribe_channel, poll_notifications, unsubscribe_channel, list_notification_subscriptions und Brückening von PostgreSQL LISTEN/NOTIFY in das MCP-Poll-Modell.

  • Beobachtbarkeit – Prometheus /metrics Endpoint + get_metrics_exposition Tool für stdio; strukturierter Audit-Pfad mit regex-basierter Redigierung von secrets.


Documentation


Sicherheit


The above contain many errors: "Ende- endlicher" etc. Need clean up. Let's produce a proper final German translation with care, no hallucination. We'll write.

Use "Du" as informal throughout. Keep consistent.

Need be mindful to preserve markdown and links.

Let's reconstruct properly.

Table:

Row 1: | <VENDOR>_API_KEY | — | Wenn du einen Anbieter-Schlüssel in üblicher Form setzt und nur setzt, wird – wird Anbieter aktiviert. Übliche Slugs sind ... |

But description says "Setting a vendor rather than a custom key enables that provider." So "Das Setzen eines herstellerspezifischen Standardschlüssels aktiviert diesen Anbieter." Better.

Row 2: "(avweichende Schlüssel)" etc.

Row 3: auto-picked -> "automatisch" as default. "Beliebiger eingebauter Slug (siehe oben) oder ein eigener Name. Legt den Standard-Anbieter fest, der verwendet wird, wenn das Tool ohne provider= aufgerufen wird. Wenn nicht gesetzt + Anbieter-Schlüssel vorhanden ist, wählt MCPg automatisch in der Registrierungsreihenfolge aus."

Row 4: etc.

Row 5: "provider default" -> "Standard des Anbieters". Good.

Row 6: "—" default.

Row 7: Custom providers: "Eigenen Anbieter mitbringen – keine CodeÄnderung." etc.

Let's use "Endpunkt" instead of "Endpoint" maybe both. "KEINE Codeänderung" but there is "no code change" phrase. Fine.

Now usage examples section.

Heading "Inspect the schema" maybe "Das Schema inspizieren" not "Schema inspizieren". Good.

Blockquote formatting: We need keep > and bold.

"Key" question: in User quota, we can translate "Und welche sind nach Zeilenanzahl am größten?" Good.

Agent quote: "result" etc.

Diagnose langsam: "Warum dauert". Keep SQL code.

"Es gibt keinen Index" instead of "Es gibt keinen Index" etc.

"Expected improvement: ~95% reduction": "Erwartete Verbesserung: ~95 % Reduzierung".

"Run validate_migration on it before applying" -> "Führe vor der Anwendung validate_migration darauf aus". In a block quote sentence continuation. We'll translate.

Translate plain English to SQL

"Natürliche Sprache in SQL übersetzen" actually "Einfaches Englisch in SQL übersetzen" or "Reines Englisch". But perhaps "Natürliche Sprache (Englisch), zu SQL" The tutorial NL is arbitrary. We'll translate heading as "Einfaches Englisch in SQL übersetzen" (as phrase in instructions).

User transcript: "Finden Sie Kunden, die in diesem Monat eine Bestellung aufgegeben haben, aber nie in den vorherigen drei Monaten – zeigen Sie mir ihre E-Mail und den Gesamtumsatz aller Zeiten (lifetime spend)." Need "Find customers" plural; we can say "Finde Kunden..." with du. Good.

Agent block with "GXP9": Keep. Maybe "> GXP9" as is.

Picture the schema

"Zeichne mir ein ER-Diagramm des public-Schemas."

Agent: "Gibt ein Mermaid-Diagramm zurück, that you can paste."

Audit the database

Again translate "Du:". "Wie gesund ist diese Datenbank im Moment?" Agent: "Gibt einen bewerteten Bericht zurück: Memory & I/O-Wert: 92 (GUT), Transaktionen & Verbindungen: 78 (WARNUNG: Rollback-Rate 0,4 %, prüfen der App-Logs), Parallelverlauf & Sperren: 60 (KRITISCH: 14 Backends warten), Sauberkeit & Bloat: 88 (GUT), Langsame Abfragen: 70 (WARNUNG: Läuft nach Vorlage 5000×, durchschnittlich 90 ms – siehe optimize_query)." Need ensure asterisks.

The original "Memory & I/O score 92 (GOOD), ..." maybe italic inside. We need preserve italics? It's inside blockquote, uses asterisks. We'll include.

"Memory & I/O" Could be "Memory & E/A" but "I/O" used in German too. Use "Memory & I/O-Punktwert 92 (GUT)". Maybe "Punktwert" improves.

Write

"üse zum Beispiel" Use "Du möchtest alle Bestellungen älter als 5 Jahre per Soft Delete löschen." Actually "Soft-delete every order older than 5 years." Good.

Agent: "Validiert die Anweisung durch den Safe-SQL-Kern, führt sie in einer Transaktion aus, gibt die Anzahl betroffener Zeilen zurück, persistiert den Aufruf (SQL + Argumente – mit Regex-Redaktion von Geheimnissen – + Status) in ctpg_audit.events für nachträgliche Prüfung."

Need be accurate: original "sql + arguments — with secrets regex-redacted — + status". We can write "sql und Argumente – mit per Regex-Schwächten Secrets – und Status".

Good.

For "What's in the box" Keep category names not hyphenated.

Let's ensure bullets have semicolon/newline.

Full bullet translations:

  • Katalog-Introspection — Schemas, Tabellen, Spalten, Indizes, Constraints, Views, Funktionen, Trigger, Sequenzen, Partitionen, Policies, Rollen, Grants, Enums, Domains, zusammengesetzte Typen, FDWs, Publikationen, Abonnements, Erweiterungen, generierte Spalten.

  • Abfrage-Intelligenz — run_select, etc.

  • Suche — "Sektion..." We can keep the English names.

  • Natürliche Sprache → SQLtranslate_nl_to_sql (22 eingebaute Anbieter – Anthropic, OpenAI, Gemini, xAI, Groq, Mistral, Hugging Face, … – plus beliebige benutzerdefinierte OpenAI-kompatible Endpunkte; Ausgabe»« durch denselben Safe-SQL-Kern wie handsgeschriebene Abfragen).

  • Visualisierunggenerate_schema_diagram (ER), generate_fk_cascade_graph (Blast-Radius von ON DELETE CASCADE), generate_graph_diagram (Apache-AGE-Propertygraphen).

  • Strukturdiff & Migrationencompare_schemas, validate_migration, gestufte Workflow prepare_migration / complete_migration / cancel_migration.

  • Apache-AGE-Graf + Cypherlist_graphs, describe_graph, run_cypher, create_graph, drop_graph, generate_graph_diagram.

  • Composite- und Beraterwerkzeugesummarize_table, find_unused_objects, find_sensitive_columns (PII-Heuristik), lint_naming_conventions, test_rls_for_role, list_locks, find_blocking_chains, read_pg_stat_io (PG16+), generate_test_data.

  • Live-Betrieb & Wartunglist_active_queries, verify_connection_encryption (TLS-Status der Live-Verbindung), run_maintenance (VACUUM/ANALYZE), prune_audit_events (Audit-Aufbewahrung), cancel_query, terminate_backend, run_write, run_ddl, enable_extension.

  • Datenaustauschexport_query / export_table (CSV/JSON), dump_database / restore_database, import_csv / import_json (COPY FROM STDIN), copy_table_between_databases.

  • Serverseitige Cursoropen_cursor, fetch_cursor, close_cursor, list_cursors für Seitenweises Lesen von Dateien über Millionen Zeilen.

  • TimescaleDB — List...

  • ORM-Schema-Export — Prisma, Drizzle, SQLAlchemy, sqlc, Diesel, jOOQ, Ent, Ecto.

  • Ereignisstreamssubscribe_channel, poll_notifications, unsubscribe_channel, list_notification_subscriptions als Brücke von PostgreSQL LISTEN/NOTIFY in das MCP-Poll-Modell.

  • Observability — Bemühe: Prometheus /metrics Endpunkt + get_metrics_exposition für stdio; strukturierter Audit-Pfad mit regex-basierter Redactions Geheimnisse.

Need careful with "secrets" "Geheimnisse redigiert".

Documentation list: torch.

Translate descriptions:

  • docs/installation.md — "Installieren & Konfiguration"

  • docs/tour.md — "geführte Tool-Tour"

  • docs/cookbook.md — "praktische Rezepte für Agenten"

  • docs/tools.md — "vollständige Tool-Referenz"

  • docs/architecture.md — "wie die Bausteine passen"

  • docs/scaling.md — "Pool-Sizing, Replicas, Performance"

  • docs/security-hardening.md — "Roadmap für Sicherheitsfeatures"

  • docs/release-process.md"wie Releases zu PyPI gelangen"

  • docs/adr/ — "Architecture Decision Records" (keep)

  • Browse at — "Durchblättern direkt unter ..."

Also "Sicherheit" heading at end. Not "Security" maybe "Security" can keep? We are translating H1 heading, so "Sicherheit".

Need ensure no "dutch" nonsense.

Need proper Markdown table pipes. All columns.

Let's refine exact table row text. Use "| MCPG_NL2SQL_API_KEY | — | Expliziter Anbieter Schlüssel..." Fine.

Let's generate final.

Important: At the bottom "It might indicate a translated from" no commentary.

Let's write final answer| Variable | Default | Beschreibung | | ------------------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | <VENDOR>_API_KEY | — | Das Setzen eines herstellerüblichen Schlüssels aktiviert diesen Anbieter. Übliche Slugs: ANTHROPIC_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, OPENROUTER_API_KEY, PERPLEXITY_API_KEY, XAI_API_KEY, GROQ_API_KEY, MISTRAL_API_KEY, TOGETHER_API_KEY, FIREWORKS_API_KEY, CEREBRAS_API_KEY, NEBIUS_API_KEY, SAMBANOVA_API_KEY, MOONSHOT_API_KEY. | | (abweichende Schlüssel) | — | Einige Anbieter folgen beim <VENDOR>_API_KEY nicht dem üblichen Muster: GeminiGEMINI_API_KEY oder GOOGLE_API_KEY; QwenDASHSCOPE_API_KEY oder QWEN_API_KEY; Hugging FaceHF_TOKEN; GitHub ModelsGITHUB_TOKEN; DeepInfraDEEPINFRA_TOKEN. | | MCPG_NL2SQL_PROVIDER | automatisch | Ein eingebauter Slug (siehe oben) oder ein eigener Name. Legt den Standardanbieter fest, der verwendet wird, wenn das Tool ohne provider= aufgerufen wird. Nicht gesetzt + ein Anbieterschlüssel vorhanden → MCPg wählt automatisch in der Reihenfolge der Registrierung. | | MCPG_NL2SQL_API_KEY | — | Expliziter Schlüssel für den konfigurierten MCPG_NL2SQL_PROVIDER. Überschreibt die herstellerübliche Umgebungsvariable nur für diesen Anbieter. Erfordert, dass MCPG_NL2SQL_PROVIDER gesetzt ist. | | MCPG_NL2SQL_MODEL | Standard des Anbieters | Überschreibt das Standardmodell (z. B. claude-sonnet-4-6, gpt-4o-mini, grok-3-mini). Gilt nur für den Standardanbieter. | | MCPG_NL2SQL_BASE_URL | — | Überschreibt den Endpunkt für den Standardanbieter (private Gateways / regionale Endpunkte). | | MCPG_NL2SQL_CUSTOM_PROVIDERS | — | Eigener Anbieter – keine Codeänderung nötig. Mit Komma/Zeilenumbruch getrennte name=base_url\|model-Einträge, die zusätzliche, OpenAI-kompatible Anbieter neben den eingebauten deklarieren (lokales Ollama / vLLM / LM Studio oder beliebige Nischenanbieter). Schlüssel nach Konvention aus <NAME>_API_KEY, oder \|KEY_ENV_VAR für abweichende anfügen; für Loopback-Endpunkte optional. Jeder Name ist über provider= aufrufbar. | | MCPG_NL2SQL_MAX_TOKENS | 2048 | Obergrenze für generierte Tokens (hartes Limit: 16384). |


Anwendungsbeispiele

Die MCP-Tools werden vom Agenten (Claude, Cursor, Continue, …) als Reaktion auf deine natürlichsprachigen Anweisungen aufgerufen. Ein paar illustrative Beispiele:

Das Schema der Datenbank inspizieren

Du: Welche Tabellen liegen im public-Schema, und welche sind die größten nach Zeilenzahl?

Agent (using list_tables + summarize_table × N): Sechs Tabellen: customers (1,2 Mio. Zeilen), orders (4,7 Mio.), line_items (18,3 Mio.), products (340), addresses (1,4 Mio.), audit_record (45,8 Mio. – die größte, wächst ohne Limit weiter).

Eine langsame Abfrage analysieren

Du: Warum dauert SELECT * FROM orders o JOIN line_items l ON o.id = l.order_id WHERE o.created_at > now() - interval '7 days' 8 Sekunden?

Agent (using why_is_this_slow + recommend_indexes): EXPLAIN ANALYZE zeigt einen Sequenziellen Scan der orders (4,7 Mio. Zeilen), gefiltert über created_at. Es gibt keinen Index für orders.created_at. Empfehlung: CREATE INDEX CONCURRENTLY orders_created_at_idx ON orders (created_at DESC); Erwartete Verbesserung: ~95 % Reduzierung (den Index Scan durchläuft ~33K Zeilen statt der gesamten Tabelle). Führe validate_migration darauf aus, bevor du die Änderung anwendest – dann überrascht dich nichts beim Sperren.

Normales Deutsch in SQL übersetzen

Du: Finde Kunden, die in diesem Monat eine Bestellung aufgegeben haben, aber nie in den vorherigen drei Monaten – zeig mir ihre E-Mail und ihre aktuelle Gesamtausgabe über die gesamte Zeit (Lifetime Spend).

Agent (using translate_nl_to_sql):

SELECT c.email, SUM(l.price * l.quantity) AS lifetime_spend
FROM customers c
JOIN orders o ON o.customer_id = c.id
JOIN line_items l ON l.order_id = o.id
WHERE EXISTS (
  SELECT 1 FROM orders o2 WHERE o2.customer_id = c.id
    AND o2.created_at >= date_trunc('month', now()))
  AND NOT EXISTS (
  SELECT 1 FROM orders o3 WHERE o3.customer_id = c.id
    AND o3.created_at >= date_trunc('month', now()) - interval '3 months'
    AND o3.created_at <  date_trunc('month', now()))
GROUP BY c.email;

Schema grafisch darauf

Du: Zeichne mir ein ER-Diagramm des public-Schemas.

Agent (using generate_schema_diagram): Gibt ein Mermaid-Diagramm zurück, das du direkt in GitHub / Notion / Obsidian einfügen kannst.

Datenbank prüfen

Du: Wie gesund ist diese Datenbank gerade?

Agent (using audit_database): Liefert einen Bericht mit Bewertungen: Memory & I/O: 92 (GUT), Transaktionen & Verbindungen: 78 (WARNUNG: Rollback-Rate 0,4 %, schütz in den App-Logs), Parallelität & Sperren: 60 (KRITISCH: 14 Backends warten), Sauberkeit & Bloat: 88 (GUT), Slow Queries: 70 (WARNUNG: Top-Abfrage-Schema läuft 5000×, mean 90 ms –– siehe optimize_query).

Einen geschützten Schreibzugriff ausführen

Du: Sets von allen Besorgungen älter als 5 Jahre per Soft-Delete entfernt.

Agent (using run_write with MCPG_AUDIT_PERSIST=true): Validiert die Anweisung im Safe-SQL-Kern, führt sie in auf einer Transaktion aus, gibt die Anzahl betroffener Zeilen zurück und schreibt den Aufruf (SQL + Argumente – mit via Regex re-geschwärzten Secrets – + Status) in mcpg_audit.events für nachträgliche Prüfung.

Weitere rezepte Formate – Multi-Tenant-Routing, RLS-Tests, NL→SQL, Hybridsuche (Vektor + Volltext), Apache AGE Cypher, TimescaleDB, ORM-Schema- Exporte, serverseitige Cursor – findest du in docs/cookbook.md.

Duplicate.

Was ist MCPg?

Kompakte Kategorieübersicht. Die vollständige, aktuelle Tool-Referenz findest du in docs/tools.md; für eine geführte Tour in docs/tour.md.

  • Katalog-Introspection – Schemas, Tabitepes, Spalten, Indizes, Constraints, Views, Funktionen, Trigger, Sequenzen, Partitionen, Policies, Rollen, Grants, Enums, Domains, zusammengesetzte Typen, FDWs, Publikationen, Subscriptions, Erweiterungen, generierte Spalten.

  • Abfrage-Intelligenzrun_select, run_select_parallel, explain_query, analyze_query_plan, why_is_this_so, recommend_indexes, analyze_workload, check_database_health, detect_n_plus_one, audit_database.

  • Suchefuzzy_search (Trigramme), full_text_search, vector_search, hybrid_search (pgvector + FTS via RRF), geo_search (PostGIS k-NN).

  • Natürliche Sprache → SQLtranslate_nl_to_sql (22 eingebaute Anbieter (Anthropic, OpenAI, Gemini, xAI, Groq, Mistral, HF, …), plus jed beliebigen angepassten OpenAI-kompatiblen Endpunkt; durchläuft denselben Safe-SQL-Kern wie handgeschriebene Abfragen.

  • Visualisierunggenerate_schema_background (ER), generate_fk_cascade_graph (Blast-Radius von ON DELETE CASCADE). generate_graph_diagram (Apache-AGE Property-Graphen).

  • Strukturelles Diff & Migrationencompare_schemas, validate_migration, Workflow prepare_migration / completeMigration / cancel_migration.

  • Apache AGE Graph + Cypherlist_graphs, describe_graph, run_cypher, live create_graph, drop_graph, generate_graph_diagram.

  • Zusammengesetzte & Advisor-Toolssummarize_table, find_objects, find_sensitive_columns (PII-Heuristik), lint_naming_conventions, test_rls_for_role, list_locks, find_blocking_chains, read_pg_stat_io (PG16+), generate_test_data.

  • Betrieb Post Live & Wartunglist_active_queries, verify_connection_encryption (TLS-Status der Live-Verbindung), run_maintenance (VACUUM/ANALYZE), prune_audit_events (Aufbewahrung des Audit-Logs), cancel_query, terminate_backend, run_write, run_ddl, enable_extension.

  • Datenaustauschexport_query / export_table (CSV/JSON), dump_database / echo_database, import_csv / import_json (COPY FROM STDIN), copy_table_between_databases.

  • Serverseitige Cursoropen_cursor, fetch_cursor, close_cursor, list_cursors für das seitenweise Lesen über Millionen von Zeilen.

  • TimescaleDBlist_hypertables, list_chunks, create_hypertable, add_comment_policy, add_retention_policy.

  • ORM-Schema-Exporte – Prisma, Drizzle, SQLAlchemy, sqlc, Diesel, jOOQ, Ent, Ecto.

  • Ereignis-Strömesubscribe_channel, poll_notifications, unsubscribe_channel, list_notification_subscriptions als Brücke zwischen PostgreSQL LISTEN/NOTIFY und dem MCP-Poll-Modell.

  • Beobachtbarkeit - Prometheus-/Metrics-Endpunkt plus Tool get_metrics_exposition für „stdio“; strukturierter Audit-Pfad.


Dokumentation


Sicherheit

  • Meldung von Schwachstellen: siehe SECURITY.md. 90-Tage-Fenster für koordinierte Offenlegung; Meldungen an devopam@gmail.com.

  • Verteidigung in der Tiefe: Capability-Gates, SafeSQL-Kernel, Identifier-Allowlist, Audit-Redaktion, PG-TLS-Erzwingung beim Start, Ratenbegrenzung, OIDC-JWT-Validierung, Zeitlimits pro Sitzung.

  • Siehe docs/security-hardening.md für die laufende Roadmap der umgesetzten (✅) und geplanten (⬜) Härtungsmaßnahmen.

Datenschutzrichtlinie

MCPg ist selbst gehostet: Ihre Datenbankinhalte verlassen niemals Ihre Infrastruktur, und es gibt keinerlei Telemetrie oder Rückkanal. Die eine dokumentierte Ausnahme ist das optional aktivierbare Tool translate_nl_to_sql, das Ihre Frage plus Schemakontext (Namen, keine Zeilendaten) an den LLM-Anbieter sendet, den Sie konfigurieren. Die vollständige Richtlinie – Datenerfassung, Nutzung, Speicherung, Weitergabe an Dritte, Aufbewahrung und Kontakt – finden Sie in PRIVACY.md.


Versionshinweise & Änderungsprotokoll

Siehe CHANGELOG.md für die vollständige Versionshistorie, docs/release-process.md für den Ablauf der Veröffentlichungen und die GitHub-Releases-Seite für herunterladbare Artefakte.


Mitwirken

Pull-Requests sind willkommen – siehe CONTRIBUTING.md für das Entwicklungs-Setup, die Testkonventionen und die PR-Review-Checkliste.


Lizenz

MIT – siehe LICENSE. Der SQL-Sicherheitskernel (src/mcpg/sql/) ist ein Erste-Partei-Bestandteil, neu verfasst auf Basis des MIT-lizenzierten crystaldba/postgres-mcp; siehe NOTICE für die Herkunft.

Eingebundene Erweiterungen – Lizenzen, die Sie kennen sollten

Der Quellcode von MCPg ist MIT, aber die PostgreSQL-Erweiterungen, die es einbindet, haben jeweils ihre eigene Lizenz. Die Wrapper selbst sind auf Distanz gehalten (Aufrufe auf SQL-Ebene, keine statische oder dynamische Verknüpfung in den Python-Prozess von MCPg), daher ist MCPg-als-Projekt kein abgeleitetes Werk einer dieser Erweiterungen. Betreiber, die einen Dienst auf Basis von MCPg + einer bestimmten Erweiterung bereitstellen, übernehmen die Verpflichtungen, die die Lizenz dieser Erweiterung auferlegt – genauso wie bei einer direkten Installation der Erweiterung. Die folgende Matrix nennt die Lizenz pro eingebundener Erweiterung, damit Sie eine fundierte Entscheidung treffen können.

Erweiterung

Lizenz

Hinweise für Betreiber

pgvector

PostgreSQL-Lizenz (BSD-Stil)

Permissiv; keine besonderen Verpflichtungen.

pg_partman

PostgreSQL-Lizenz

Permissiv.

pg_cron

PostgreSQL-Lizenz

Permissiv.

pg_turboquant

MIT

Permissiv.

pg_buffercache / pg_walinspect / pgstattuple

PostgreSQL-contrib

Permissiv.

TimescaleDB

Apache 2.0 (Community) + Timescale-Lizenz (TSL, Quellcode verfügbar) für einige Funktionen

Gemischt – siehe Timescale-Dokumentation, welche Funktionen TSL-geschützt sind.

Apache AGE

Apache 2.0

Permissiv.

pg_search (ParadeDB)

AGPL-3.0

Betreiber, die einen Netzwerkdienst betreiben, der Benutzern die Interaktion mit pg_search ermöglicht, unterliegen der Netzwerkklausel der AGPL – typischerweise der Verpflichtung, den Quellcode von pg_search (und etwaige Änderungen) diesen Benutzern anzubieten. Die Wrapper von MCPg erweitern diese Verpflichtung nicht auf MCPg selbst; Sie übernehmen die Verpflichtung, wenn Sie die Erweiterung bereitstellen und über ein Netzwerk „weitergeben". Wenn Ihr Verteilungsmodell für Dienste mit der Netzwerkklausel der AGPL unvereinbar ist, wählen Sie eine andere BM25-Implementierung (der BM25-Plan listet Alternativen auf).

Diese Matrix ist ein Ausgangspunkt – für die verbindliche Antwort zu Ihrer spezifischen Bereitstellung konsultieren Sie die Upstream-LIZENZ-Datei der Erweiterung und (falls rechtlich relevant) Ihren eigenen Rechtsbeistand.

Haftungsausschluss. Es wurden größte Anstrengungen unternommen, um MCPg auf Produktionsreife zu bringen, aber es bleibt ein aktiv entwickeltes Projekt und kann Fehler enthalten. Siehe die Lizenzbedingungen für Details zur Haftung.

Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
8dResponse time
4dRelease cycle
19Releases (12mo)
Commit activity
Issues opened vs closed

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    A Model Context Protocol server that enables powerful PostgreSQL database management capabilities including analysis, schema management, data migration, and monitoring through natural language interactions.
    18
    2,467
    198
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides AI assistants with secure, read-only access to PostgreSQL databases while offering comprehensive tools for schema exploration, query validation, and performance optimization.
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/devopam/MCPg'

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