GaussDB-MCP
GaussDB MCP
华为云 GaussDB 云数据库 MCP 服务器。基于华为官方 GaussDB 専用 Node.js ドライバ gaussdb-node、MCP 2026-07-28 仕様に準拠し、接続テスト、クエリ、データ書き込み、トランザクション、メタデータ、診断・運用、ユーザー権限など 24 個のツールと 1 個のテーブル構造リソースを提供します。
クイックスタート
npm install
cp .env.example .env # Windows: copy .env.example .env 后编辑
# 编辑 .env,填入 GaussDB 实例地址、密码等
npm run build
node build/index.js # 启动(stdio,供 MCP 客户端拉起)要件:Node.js ≥ 20。
Related MCP server: mcp-db-assistant
接続設定
全環境変数
変数 | 必須 | デフォルト値 | 説明 |
| はい | — | GaussDB インスタンスアドレス。主備マルチノードはカンマ区切り(例: |
| いいえ |
| データベースポート。华为云 GaussDB クラウドインスタンスのデフォルトは 8000 |
| いいえ |
| データベース名 |
| いいえ |
| ログインユーザー。デフォルト管理者は root |
| はい | — | ログインパスワード |
| いいえ | — | デフォルトスキーマ。JDBC の |
| いいえ |
| 主備マルチノード時、主ノードのみに接続(JDBC |
| いいえ |
|
|
| いいえ | — | CA ルート証明書パス(华为云コンソールから |
| いいえ | — | クライアント証明書パス(双方向認証時のみ必要) |
| いいえ | — | クライアント秘密鍵パス(双方向認証時のみ必要) |
| いいえ |
| サーバー証明書を検証するかどうか。デバッグ時は |
内網接続設定
アプリと GaussDB インスタンスが同一 VPC 内にある場合に使用します。SSL は不要(内網トラフィックは外部に漏れないため、华为云公式のデフォルトは内網直結):
GAUSSDB_HOST=10.0.1.11 # 实例"节点列表"中的内网地址
GAUSSDB_PORT=8000
GAUSSDB_DATABASE=postgres
GAUSSDB_USER=root
GAUSSDB_PASSWORD=你的密码
# 不设置任何 GAUSSDB_SSL_* 变量,保持 GAUSSDB_SSL=0(默认)公網接続設定
アプリがインスタンスの VPC 外にあり、弹性公网 IP 経由でアクセスする場合に使用します。SSL を有効化し CA 証明書を設定する必要があります(华为云公式の sslmode=verify-ca 方式):
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公網接続の前に、华为云コンソールのセキュリティグループでクライアントの送信元 IP の 8000 番ポートへのアクセスを許可する必要があります。
環境変数の追加方法
以下の 2 つの方法のいずれかを選択します(両方存在する場合、環境変数が .env より優先されます):
プロジェクトの
.envファイル(推奨):.env.exampleをプロジェクトルートの.envにコピーして記入します。.envの位置はプロジェクトルートに固定され、サーバーがどのディレクトリから起動されるかとは無関係です——MCP クライアントが任意の作業ディレクトリからbuild/index.jsを起動しても読み取れます。上記 2 つの設定をそのまま.envに記述します。MCP クライアントの
envフィールド:mcpServers設定内で直接環境変数を渡します(下記の接続例を参照)。プロジェクト内に認証情報ファイルを置きたくない場合に適しています。
主備デプロイ時、GAUSSDB_HOST はカンマ区切りで複数ノードの IP を指定します。サーバー起動時に順次接続を試み、最初に利用可能なノードを自動選択します。
ツール一覧(24 個)
すべてのツールは MCP 仕様に従って annotations(readOnlyHint/destructiveHint)が付与されており、クライアントはこれに基づいて書き込み操作時に確認ダイアログを表示できます。
接続と状態
ツール | 説明 |
| 接続テスト。GaussDB バージョン、現在のデータベース、現在のユーザーを返す |
クエリと書き込み
ツール | 説明 |
| 読み取り専用クエリを実行(SELECT/WITH/EXPLAIN/SHOW/VALUES で始まる単一ステートメントのみ。書き込みステートメントと複数ステートメントは拒否)。limit(デフォルト100)/offset で返却を切り詰め。オプションで |
| 任意の SQL(DDL/DML)を実行。影響を受けた行数を返す。オプションで |
| パラメータ化バルク挿入(テーブル名 + 行配列、オプションで schema) |
| パラメータ化更新(set + where。where 必須で全テーブル誤更新を防止。オプションで schema) |
| パラメータ化削除(where 必須で全テーブル誤削除を防止。オプションで schema。destructive 注記) |
トランザクション(明示的 handle モード)
ツール | 説明 |
| トランザクションを開始し、 |
| トランザクションをコミット |
| トランザクションをロールバック |
使用方法:transaction_begin → 複数回の query/execute(同じ tx_handle を渡す)→ transaction_commit または transaction_rollback。
メタデータ(読み取り専用)
ツール | 説明 |
| データベース / schema / テーブル一覧 |
| 列定義:型、長さ、NULL 許容、デフォルト値、主キー |
| インデックス / ビュー / シーケンス一覧 |
診断・運用(読み取り専用)
ツール | 説明 |
| 実行計画。 |
| 現在のアクティブセッション |
| ロック競合(ブロックされた側とブロック元) |
| バージョン、データベースサイズ、接続数、サーバーアドレスと時刻 |
ユーザーと権限
ツール | 説明 |
| ユーザー一覧(読み取り専用) |
| ログイン可能なユーザーを作成 |
| 権限付与 / 回収(例: |
リソース
リソース URI | 説明 |
| テーブル構造を JSON で読み取り |
MCP クライアント接続
ビルド後、クライアント設定ファイルに登録します(Claude Desktop / Cursor の mcpServers 形式を例とします)。Windows は二重バックスラッシュパス(E:\\MCP\\GaussDBMCP\\build\\index.js)、Linux/macOS はスラッシュ(/home/user/GaussDBMCP/build/index.js)を使用します。
内網接続
{
"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": "你的密码"
}
}
}
}内網接続は SSL が不要で、GAUSSDB_SSL_* 変数を一切設定する必要はありません。
公網接続
{
"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"
}
}
}
}公網接続は SSL を有効化し CA 証明書を設定する必要があり、セキュリティグループでクライアント送信元 IP の 8000 番ポートを許可する必要があります。
また、env を渡さず、プロジェクトルートの .env ファイルに依存することもできます(サーバー起動時に自動読み込み。プロジェクトルートに固定され、起動ディレクトリとは無関係)。
マルチテナント分離(stream = schema)
GAUSSDB_SEARCH_PATH は同時に MCP 層の schema ホワイトリストとして機能します。設定後、アクセスは対応する stream 自身の schema 内に制限され、他の stream のテーブルは見えません。
MCP 層のインターセプト(信頼性あり、構造パラメータに依存):
list_schemasはホワイトリスト内の schema のみを返し、他の schema 名を漏らさないlist_tables/list_indexes/list_views/list_sequencesは schema を渡さない場合、デフォルトで最初のホワイトリスト schema に固定され、全データベースのテーブルを返さないdescribe_table/insert_rows/update_rows/delete_rowsで明示的にschemaを渡す場合、ホワイトリスト外なら直接エラーで拒否テーブル構造リソース
gaussdb://{schema}/{table}/schemaもホワイトリストの制約を受け、スキーマをまたいだ読み取りは拒否される
データベース権限層のフォールバック(必須、省略不可):execute は任意の SQL であり、MCP 層では SQL 解析を行いません(手書きパーサーには必ずバイパス経路が存在)。query は読み取り専用を強制しますが(先頭キーワードのホワイトリスト + 書き込みキーワードのブラックリスト + 複数ステートメント拒否)、SELECT 形式の副作用関数(例:pg_terminate_backend、setval)は網羅的にインターセプトできません。スキーマをまたいだアクセスと副作用関数は GaussDB の権限で保証します。各 stream は独立した制限付きアカウントを使用し、自分の schema のみを権限付与します:
-- 以管理员执行:为 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 也会被数据库拒绝その後、.env で GAUSSDB_USER=gycwd_app、GAUSSDB_SEARCH_PATH=gycwd を設定します。2 層が重なり合います:構造エントリは MCP がインターセプト、任意の SQL はデータベースがインターセプトします。
セキュリティ注意事項
stdio サーバーのログはすべて stderr に書き込まれ、stdout は MCP メッセージのみを運びます
構造化ツール(insert_rows/update_rows/delete_rows など)のテーブル名/列名/ユーザー名などの識別子はすべて文字検証を行い、値はすべてパラメータ化プレースホルダーを使用して SQL インジェクションを防止します。
query/explain_queryは自由 SQL エントリであり、読み取り専用検証と単一ステートメント制限で範囲を絞ります(上記参照)delete_rows/update_rowsは where 条件を必須としますexplain_queryの analyze=true はステートメントを実際に実行しますが、SELECT/WITH で始まるもののみ許可し、自動的にトランザクションロールバックで包みます(シーケンスの進行、関数の副作用はロールバック不可)DROP/TRUNCATEなどのステートメントはexecuteで実行可能です。クライアントは destructiveHint 注記に基づいて確認を行ってください.envをバージョン管理リポジトリにコミットしないでください
開発とビルド
npm run build # tsc 编译到 build/ソース構造:src/config.ts(設定)、src/db.ts(接続プールとトランザクションハンドル)、src/sql.ts(SQL 構築と読み取り専用検証)、src/format.ts(結果フォーマット)、src/index.ts(MCP サーバーとツール登録)。
実際の GaussDB インスタンスを取得後:.env を記入 → npm run build → node build/index.js を任意の MCP クライアントと組み合わせて実測します。または先に接続を単独検証:env を設定後、test_connection ツールを実行します。
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