Skip to main content
Glama
mengqi1436

GaussDB-MCP

by mengqi1436

GaussDB MCP

GaussDB-Cloud-Datenbank-MCP-Server von Huawei Cloud. Basierend auf dem offiziellen Huawei GaussDB Node.js-Treiber gaussdb-node, folgt der MCP-Spezifikation 2026-07-28 und bietet 24 Tools und 1 Tabellenstruktur-Ressource für Verbindungstests, Abfragen, Datenschreiben, Transaktionen, Metadaten, Diagnose und Betrieb sowie Benutzerberechtigungen.

Schnellstart

npm install
cp .env.example .env   # Windows: copy .env.example .env 后编辑
# 编辑 .env,填入 GaussDB 实例地址、密码等
npm run build
node build/index.js    # 启动(stdio,供 MCP 客户端拉起)

Erfordert Node.js ≥ 20.

Related MCP server: mcp-db-assistant

Verbindungskonfiguration

Alle Umgebungsvariablen

Variable

Erforderlich

Standardwert

Beschreibung

GAUSSDB_HOST

Ja

GaussDB-Instanzadresse; bei Haupt-/Standby-Mehrknoten mit englischen Kommas getrennt (z. B. 10.0.0.1,10.0.0.2)

GAUSSDB_PORT

Nein

8000

Datenbankport, Huawei Cloud GaussDB-Cloudinstanz standardmäßig 8000

GAUSSDB_DATABASE

Nein

postgres

Datenbankname

GAUSSDB_USER

Nein

root

Anmeldebenutzer, Standardadministrator ist root

GAUSSDB_PASSWORD

Ja

Anmeldekennwort

GAUSSDB_SEARCH_PATH

Nein

Standard-Schema, entspricht currentSchema von JDBC (über Verbindungsoptionen als GUC search_path gesendet, z. B. gycwd)

GAUSSDB_MASTER_ONLY

Nein

0

Bei Haupt-/Standby-Mehrfnoten nur den Hauptknoten verbinden (entspricht JDBC targetServerType=master, erkannt über pg_is_in_recovery())

GAUSSDB_SSL

Nein

0

Auf 1 setzen, um SSL-verschlüsselte Verbindung zu aktivieren

GAUSSDB_SSL_CA

Nein

Pfad zum CA-Root-Zertifikat (von Huawei Cloud Konsole root.crt herunterladen)

GAUSSDB_SSL_CERT

Nein

Pfad zum Client-Zertifikat (nur für gegenseitige Authentifizierung erforderlich)

GAUSSDB_SSL_KEY

Nein

Pfad zum Client-Private Key (nur für gegenseitige Authentifizierung erforderlich)

GAUSSDB_SSL_REJECT_UNAUTHORIZED

Nein

true

Ob das Serverzertifikat überprüft werden soll; für Debugging kann false gesetzt werden (unsicher, nur für Tests)

Konfiguration für Intranet-Verbindung

Wird verwendet, wenn sich die Anwendung und die GaussDB-Instanz im selben VPC befinden. SSL ist nicht erforderlich (Intranet-Traffic wird nicht nach außen geleitet, Huawei Cloud offiziell standardmäßig Intranet-Direktverbindung):

GAUSSDB_HOST=10.0.1.11              # 实例"节点列表"中的内网地址
GAUSSDB_PORT=8000
GAUSSDB_DATABASE=postgres
GAUSSDB_USER=root
GAUSSDB_PASSWORD=你的密码
# 不设置任何 GAUSSDB_SSL_* 变量,保持 GAUSSDB_SSL=0(默认)

Konfiguration für öffentliche Verbindung

Wird verwendet, wenn die Anwendung nicht im VPC der Instanz liegt und über eine elastische öffentliche IP-Adresse zugegriffen wird. SSL muss aktiviert und ein CA-Zertifikat konfiguriert werden (Huawei Cloud offiziell sslmode=verify-ca-Methode):

GAUSSDB_HOST=114.114.114.114        # 实例绑定的弹性公网 IP
GAUSSDB_PORT=8000
GAUSSDB_DATABASE=postgres
GAUSSDB_USER=root
GAUSSDB_PASSWORD=你的密码
GAUSSDB_SSL=1
GAUSSDB_SSL_CA=C:/path/to/root.crt   # 华为云控制台下载的 CA 证书(公网连接必需)
GAUSSDB_SSL_REJECT_UNAUTHORIZED=true

Vor der öffentlichen Verbindung muss in der Huawei Cloud Konsole in der Sicherheitsgruppe der Zugriff der Client-Ausgangs-IP auf Port 8000 freigegeben werden.

So fügen Sie Umgebungsvariablen hinzu

Zwei Möglichkeiten, wählen Sie eine (wenn beide vorhanden sind, haben Umgebungsvariablen Vorrang vor .env):

  1. Projekt-.env-Datei (empfohlen): Kopieren Sie .env.example als .env im Projektstammverzeichnis und füllen Sie es aus. Die Position von .env ist am Projektstammverzeichnis verankert, unabhängig davon, aus welchem Verzeichnis der Server gestartet wird – der MCP-Client kann build/index.js aus jedem Arbeitsverzeichnis starten und es wird gelesen. Die beiden obigen Konfigurationen können direkt in .env geschrieben werden.

  2. env-Feld des MCP-Clients: Umgebungsvariablen direkt in der mcpServers-Konfiguration übergeben (siehe Integrationsbeispiel unten), geeignet für Szenarien, in denen keine Anmeldedaten-Dateien im Projekt abgelegt werden sollen.

Bei Haupt-/Standby-Bereitstellung werden mehrere Knoten-IPs in GAUSSDB_HOST mit englischen Kommas getrennt. Der Server versucht beim Start nacheinander zu verbinden und wählt automatisch den ersten verfügbaren Knoten.

Werkzeugübersicht (24)

Alle Werkzeuge sind gemäß MCP-Spezifikation mit Anmerkungen (readOnlyHint/destructiveHint) versehen, sodass der Client bei Schreiboperationen eine Bestätigung anzeigen kann.

Verbindung und Status

Werkzeug

Beschreibung

test_connection

Testet die Verbindung, gibt GaussDB-Version, aktuelle Datenbank, aktuellen Benutzer zurück

Abfrage und Schreiben

Werkzeug

Beschreibung

query

Führt schreibgeschützte Abfragen aus (beginnt mit SELECT/WITH/EXPLAIN/SHOW/VALUES, einzelne Anweisung, Schreibanweisungen und Mehrfachanweisungen werden abgelehnt), limit (Standard 100)/offset begrenzt die Rückgabe, optional tx_handle

execute

Führt beliebiges SQL aus (DDL/DML), gibt die Anzahl der betroffenen Zeilen zurück, optional tx_handle

insert_rows

Parametrisierte Masseneinfügung (Tabellenname + Zeilenarray, optional schema)

update_rows

Parametrisierte Aktualisierung (set + where, where erforderlich, um versehentliche Aktualisierung der gesamten Tabelle zu verhindern, optional schema)

delete_rows

Parametrisiertes Löschen (where erforderlich, um versehentliches Löschen der gesamten Tabelle zu verhindern, optional schema, destructive markiert)

Transaktionen (expliziter Handle-Modus)

Werkzeug

Beschreibung

transaction_begin

Startet eine Transaktion, gibt tx_handle zurück (bei 5 Minuten Leerlauf automatischer Rollback und Freigabe)

transaction_commit

Committet die Transaktion

transaction_rollback

Rollback der Transaktion

Verwendung: transaction_begin → mehrere query/execute (mit demselben tx_handle) → transaction_commit oder transaction_rollback.

Metadaten (schreibgeschützt)

Werkzeug

Beschreibung

list_databases / list_schemas / list_tables

Datenbank-/Schema-/Tabellenliste

describe_table

Spaltendefinition: Typ, Länge, Nullable, Standardwert, Primärschlüssel

list_indexes / list_views / list_sequences

Index-/View-/Sequenzliste

Diagnose und Betrieb (nur lesend)

Werkzeug

Beschreibung

explain_query

Ausführungsplan; bei analyze=true tatsächliche Ausführung mit Statistiken (automatischer Transaktions-Rollback, Schreibanweisungen werden nicht gespeichert); lehnt Mehrfachanweisungen mit Semikolon ab

list_sessions

Aktuelle aktive Sitzungen

list_lock_conflicts

Sperrkonflikte (blockierte Seite und Blockierungsquelle)

database_stats

Version, Datenbankgröße, Verbindungsanzahl, Serveradresse und -zeit

Benutzer und Berechtigungen

Werkzeug

Beschreibung

list_users

Benutzerliste (nur lesend)

create_user

Erstellt einen anmeldbaren Benutzer

grant_privilege / revoke_privilege

Berechtigung erteilen / entziehen (z. B. ALL ON DATABASE d)

Ressourcen

Ressourcen-URI

Beschreibung

gaussdb://{schema}/{table}/schema

Liest die Tabellenstruktur als JSON

MCP-Client-Integration

Nach dem Build in der Client-Konfigurationsdatei registrieren (am Beispiel des mcpServers-Formats von Claude Desktop / Cursor). Windows verwendet doppelte Backslash-Pfade (E:\\MCP\\GaussDBMCP\\build\\index.js), Linux/macOS verwendet Schrägstriche (/home/user/GaussDBMCP/build/index.js).

Intranet-Verbindung

{
  "mcpServers": {
    "gaussdb": {
      "command": "node",
      "args": ["E:\\MCP\\GaussDBMCP\\build\\index.js"],
      "env": {
        "GAUSSDB_HOST": "10.0.1.11",
        "GAUSSDB_PORT": "8000",
        "GAUSSDB_DATABASE": "postgres",
        "GAUSSDB_USER": "root",
        "GAUSSDB_PASSWORD": "你的密码"
      }
    }
  }
}

Für die Intranet-Verbindung ist kein SSL erforderlich, keine GAUSSDB_SSL_*-Variablen setzen.

Öffentliche Verbindung

{
  "mcpServers": {
    "gaussdb": {
      "command": "node",
      "args": ["E:\\MCP\\GaussDBMCP\\build\\index.js"],
      "env": {
        "GAUSSDB_HOST": "114.114.114.114",
        "GAUSSDB_PORT": "8000",
        "GAUSSDB_DATABASE": "postgres",
        "GAUSSDB_USER": "root",
        "GAUSSDB_PASSWORD": "你的密码",
        "GAUSSDB_SSL": "1",
        "GAUSSDB_SSL_CA": "C:\\path\\to\\root.crt",
        "GAUSSDB_SSL_REJECT_UNAUTHORIZED": "true"
      }
    }
  }
}

Für die öffentliche Verbindung muss SSL aktiviert und ein CA-Zertifikat konfiguriert werden, und die Sicherheitsgruppe muss den Zugriff der Client-Ausgangs-IP auf Port 8000 freigeben.

Alternativ kann env weggelassen werden und die .env-Datei im Projektstammverzeichnis verwendet werden (der Server liest sie beim Start automatisch, verankert am Projektstamm, unabhängig vom Startverzeichnis).

Mehrinstanzen-Isolation (stream = schema)

GAUSSDB_SEARCH_PATH dient gleichzeitig als Schema-Whitelist auf MCP-Ebene: Nach der Konfiguration ist der Zugriff auf das eigene Schema des entsprechenden Streams beschränkt, Tabellen anderer Streams sind nicht sichtbar.

Abfangen auf MCP-Ebene (zuverlässig, basierend auf Strukturparametern):

  • list_schemas gibt nur Schemas in der Whitelist zurück, keine anderen Schemanamen werden preisgegeben

  • list_tables/list_indexes/list_views/list_sequences standardmäßig auf das erste Whitelist-Schema fixiert, wenn kein Schema übergeben wird, keine Rückgabe aller Datenbanktabellen

  • describe_table/insert_rows/update_rows/delete_rows mit explizitem schema-Parameter: Wenn nicht in der Whitelist, wird direkt ein Fehler abgelehnt

  • Die Tabellenstruktur-Ressource gaussdb://{schema}/{table}/schema unterliegt ebenfalls der Whitelist, das Lesen über Schemas hinweg wird abgelehnt

Fallback auf Datenbankberechtigungsebene (erforderlich, nicht weglassbar): execute ist beliebiges SQL, die MCP-Ebene führt keine SQL-Analyse durch (handgeschriebene Parser haben immer Umgehungspfade); query erzwingt zwar nur Lesen (Whitelist für erste Schlüsselwörter + Blacklist für Schreibschlüsselwörter + Ablehnung von Mehrfachanweisungen), aber SELECT-förmige Funktionen mit Seiteneffekten (wie pg_terminate_backend, setval) können nicht vollständig abgefangen werden. Zugriff über Schemas hinweg und Seiteneffektfunktionen werden durch GaussDB-Berechtigungen gewährleistet. Jeder Stream verwendet ein separates eingeschränktes Konto, das nur sein eigenes Schema autorisiert:

-- 以管理员执行:为 stream 建受限账号,只授予自己 schema 的权限
CREATE USER gycwd_app WITH PASSWORD 'xxx' LOGIN;
REVOKE ALL ON DATABASE postgres FROM PUBLIC;            -- 收紧库级默认权限
GRANT CONNECT ON DATABASE postgres TO gycwd_app;
GRANT USAGE ON SCHEMA gycwd TO gycwd_app;               -- 只给自己的 schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA gycwd TO gycwd_app;
-- 该账号未授予其他 schema 的 USAGE,即使手写跨 schema SQL 也会被数据库拒绝

Dann in .env GAUSSDB_USER=gycwd_app, GAUSSDB_SEARCH_PATH=gycwd, zwei Ebenen überlagert: Struktureingang MCP-Abfangen, beliebiges SQL Datenbank-Abfangen.

Sicherheitshinweise

  • stdio-Serverprotokolle werden alle auf stderr geschrieben, stdout trägt nur MCP-Nachrichten

  • Strukturierte Werkzeuge (insert_rows/update_rows/delete_rows usw.) führen Zeichenprüfungen für Tabellennamen/Spaltennamen/Benutzernamen usw. durch, Werte laufen immer über parametrisierte Platzhalter, um SQL-Injection zu verhindern; query/explain_query sind freie SQL-Einstiegspunkte, die durch Nur-Lese-Prüfung und Einzelanweisungsbegrenzung eingeschränkt werden (siehe oben)

  • delete_rows/update_rows erzwingen eine where-Bedingung

  • explain_query mit analyze=true führt die Anweisung tatsächlich aus, nur SELECT/WITH am Anfang erlaubt und automatisch in Transaktions-Rollback eingebettet (Sequenzfortschritt, Funktionsseiteneffekte können nicht zurückgerollt werden)

  • DROP/TRUNCATE-Anweisungen können über execute ausgeführt werden, der Client sollte sich auf die destructiveHint-Annotation verlassen, um eine Bestätigung zu erhalten

  • Bitte committen Sie .env nicht in das Versionsverwaltungssystem

Entwicklung und Build

npm run build   # tsc 编译到 build/

Quellcode-Struktur: src/config.ts (Konfiguration), src/db.ts (Verbindungspool und Transaktions-Handles), src/sql.ts (SQL-Konstruktion und Nur-Lese-Prüfung), src/format.ts (Ergebnisformatierung), src/index.ts (MCP-Server und Tool-Registrierung).

Nach Erhalt einer echten GaussDB-Instanz: .env ausfüllen → npm run buildnode build/index.js mit einem beliebigen MCP-Client testen; oder zuerst die Verbindung separat verifizieren: Nach Konfiguration der env das Werkzeug test_connection ausführen.

Install Server
F
license - not found
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for connecting to databases (PostgreSQL, MySQL, SQL Server, Redis) enabling SQL queries, table exploration, and Redis key-value operations.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A database operation server based on the MCP protocol, providing database connection, querying, schema exploration, data analysis, and SQL generation tools.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for multiple databases (PostgreSQL, MySQL, MariaDB, SQLite, MongoDB, Redis) with tools for schema inspection, querying, performance diagnostics, and safe write operations, featuring access modes, PII masking, and audit logging.
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    A comprehensive PostgreSQL MCP server providing 27 tools for database management and administration, including connection management, query execution, schema introspection, CRUD operations, and server monitoring.
    27
    38
    AGPL 3.0

View all related MCP servers

Related MCP Connectors

  • MCP server for managing Prisma Postgres.

  • GibsonAI MCP server: manage your databases with natural language

  • MCP server for interacting with the Supabase platform

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/mengqi1436/GaussDB-MCP'

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