GaussDB-MCP
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 |
| Ja | — | GaussDB-Instanzadresse; bei Haupt-/Standby-Mehrknoten mit englischen Kommas getrennt (z. B. |
| Nein |
| Datenbankport, Huawei Cloud GaussDB-Cloudinstanz standardmäßig 8000 |
| Nein |
| Datenbankname |
| Nein |
| Anmeldebenutzer, Standardadministrator ist root |
| Ja | — | Anmeldekennwort |
| Nein | — | Standard-Schema, entspricht |
| Nein |
| Bei Haupt-/Standby-Mehrfnoten nur den Hauptknoten verbinden (entspricht JDBC |
| Nein |
| Auf |
| Nein | — | Pfad zum CA-Root-Zertifikat (von Huawei Cloud Konsole |
| Nein | — | Pfad zum Client-Zertifikat (nur für gegenseitige Authentifizierung erforderlich) |
| Nein | — | Pfad zum Client-Private Key (nur für gegenseitige Authentifizierung erforderlich) |
| Nein |
| Ob das Serverzertifikat überprüft werden soll; für Debugging kann |
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=trueVor 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):
Projekt-
.env-Datei (empfohlen): Kopieren Sie.env.exampleals.envim Projektstammverzeichnis und füllen Sie es aus. Die Position von.envist am Projektstammverzeichnis verankert, unabhängig davon, aus welchem Verzeichnis der Server gestartet wird – der MCP-Client kannbuild/index.jsaus jedem Arbeitsverzeichnis starten und es wird gelesen. Die beiden obigen Konfigurationen können direkt in.envgeschrieben werden.env-Feld des MCP-Clients: Umgebungsvariablen direkt in dermcpServers-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 |
| Testet die Verbindung, gibt GaussDB-Version, aktuelle Datenbank, aktuellen Benutzer zurück |
Abfrage und Schreiben
Werkzeug | Beschreibung |
| 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 |
| Führt beliebiges SQL aus (DDL/DML), gibt die Anzahl der betroffenen Zeilen zurück, optional |
| Parametrisierte Masseneinfügung (Tabellenname + Zeilenarray, optional schema) |
| Parametrisierte Aktualisierung (set + where, where erforderlich, um versehentliche Aktualisierung der gesamten Tabelle zu verhindern, optional schema) |
| Parametrisiertes Löschen (where erforderlich, um versehentliches Löschen der gesamten Tabelle zu verhindern, optional schema, destructive markiert) |
Transaktionen (expliziter Handle-Modus)
Werkzeug | Beschreibung |
| Startet eine Transaktion, gibt |
| Committet die Transaktion |
| Rollback der Transaktion |
Verwendung: transaction_begin → mehrere query/execute (mit demselben tx_handle) → transaction_commit oder transaction_rollback.
Metadaten (schreibgeschützt)
Werkzeug | Beschreibung |
| Datenbank-/Schema-/Tabellenliste |
| Spaltendefinition: Typ, Länge, Nullable, Standardwert, Primärschlüssel |
| Index-/View-/Sequenzliste |
Diagnose und Betrieb (nur lesend)
Werkzeug | Beschreibung |
| Ausführungsplan; bei |
| Aktuelle aktive Sitzungen |
| Sperrkonflikte (blockierte Seite und Blockierungsquelle) |
| Version, Datenbankgröße, Verbindungsanzahl, Serveradresse und -zeit |
Benutzer und Berechtigungen
Werkzeug | Beschreibung |
| Benutzerliste (nur lesend) |
| Erstellt einen anmeldbaren Benutzer |
| Berechtigung erteilen / entziehen (z. B. |
Ressourcen
Ressourcen-URI | Beschreibung |
| 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_schemasgibt nur Schemas in der Whitelist zurück, keine anderen Schemanamen werden preisgegebenlist_tables/list_indexes/list_views/list_sequencesstandardmäßig auf das erste Whitelist-Schema fixiert, wenn kein Schema übergeben wird, keine Rückgabe aller Datenbanktabellendescribe_table/insert_rows/update_rows/delete_rowsmit explizitemschema-Parameter: Wenn nicht in der Whitelist, wird direkt ein Fehler abgelehntDie Tabellenstruktur-Ressource
gaussdb://{schema}/{table}/schemaunterliegt 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_querysind freie SQL-Einstiegspunkte, die durch Nur-Lese-Prüfung und Einzelanweisungsbegrenzung eingeschränkt werden (siehe oben)delete_rows/update_rowserzwingen eine where-Bedingungexplain_querymit 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 überexecuteausgeführt werden, der Client sollte sich auf die destructiveHint-Annotation verlassen, um eine Bestätigung zu erhaltenBitte committen Sie
.envnicht 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 build → node 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.
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceMCP server for connecting to databases (PostgreSQL, MySQL, SQL Server, Redis) enabling SQL queries, table exploration, and Redis key-value operations.1MIT
- AlicenseNot gradedqualityBmaintenanceA database operation server based on the MCP protocol, providing database connection, querying, schema exploration, data analysis, and SQL generation tools.MIT
- AlicenseNot gradedqualityBmaintenanceMCP 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
- AlicenseAqualityCmaintenanceA comprehensive PostgreSQL MCP server providing 27 tools for database management and administration, including connection management, query execution, schema introspection, CRUD operations, and server monitoring.2738AGPL 3.0
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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