Skip to main content
Glama
mengqi1436

GaussDB-MCP

by mengqi1436

GaussDB MCP

MCP-сервер для облачной базы данных GaussDB от Huawei Cloud. Основан на официальном Node.js-драйвере GaussDB 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_HOST

да

Адрес экземпляра GaussDB; для ведущего/ведомого с несколькими узлами — через запятую (например, 10.0.0.1,10.0.0.2)

GAUSSDB_PORT

нет

8000

Порт базы данных, по умолчанию 8000 для облачных экземпляров GaussDB Huawei Cloud

GAUSSDB_DATABASE

нет

postgres

Имя базы данных

GAUSSDB_USER

нет

root

Пользователь для входа, администратор по умолчанию — root

GAUSSDB_PASSWORD

да

Пароль для входа

GAUSSDB_SEARCH_PATH

нет

Схема по умолчанию, соответствует currentSchema в JDBC (передаётся через опции подключения как GUC search_path, например gycwd)

GAUSSDB_MASTER_ONLY

нет

0

При ведущем/ведомом с несколькими узлами подключаться только к ведущему (соответствует targetServerType=master в JDBC, определяется по pg_is_in_recovery())

GAUSSDB_SSL

нет

0

Установите 1 для включения SSL-шифрования

GAUSSDB_SSL_CA

нет

Путь к корневому сертификату CA (скачайте root.crt в консоли Huawei Cloud)

GAUSSDB_SSL_CERT

нет

Путь к клиентскому сертификату (только для двусторонней аутентификации)

GAUSSDB_SSL_KEY

нет

Путь к клиентскому закрытому ключу (только для двусторонней аутентификации)

GAUSSDB_SSL_REJECT_UNAUTHORIZED

нет

true

Проверять ли сертификат сервера; при отладке можно установить false (небезопасно, только для тестов)

Конфигурация подключения по внутренней сети

Используется, когда приложение и экземпляр GaussDB находятся в одной VPC. SSL не требуется (внутренний трафик не выходит наружу, официально Huawei Cloud рекомендует прямое подключение по внутренней сети):

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 (официальный способ Huawei Cloud 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

Перед подключением по публичной сети также необходимо разрешить доступ к порту 8000 с исходящего IP клиента в группе безопасности консоли Huawei Cloud.

Как добавить переменные окружения

Два способа, на выбор (при одновременном использовании переменные окружения имеют приоритет над .env):

  1. Файл .env проекта (рекомендуется): скопируйте .env.example в .env в корне проекта и заполните. Расположение .env привязано к корню проекта и не зависит от того, из какой директории запущен сервер — MCP-клиент сможет прочитать его при запуске build/index.js из любого рабочего каталога. Обе конфигурации выше можно просто записать в .env.

  2. Поле env MCP-клиента: передавайте переменные окружения напрямую в конфигурации mcpServers (см. примеры подключения ниже), подходит для сценариев, когда не хочется хранить файлы с учётными данными в проекте.

При ведущем/ведомом развёртывании GAUSSDB_HOST содержит несколько IP-адресов узлов через запятую; при запуске сервер последовательно пробует подключиться и автоматически выбирает первый доступный узел.

Обзор инструментов (24)

Все инструменты помечены аннотациями в соответствии со спецификацией MCP (readOnlyHint/destructiveHint), клиент может на их основе показывать подтверждение для операций записи.

Подключение и статус

Инструмент

Описание

test_connection

Проверка подключения, возвращает версию GaussDB, текущую базу, текущего пользователя

Запросы и запись

Инструмент

Описание

query

Выполняет read-only запрос (начинается с SELECT/WITH/EXPLAIN/SHOW/VALUES, одна инструкция; инструкции записи и множественные инструкции отклоняются), обрезка по limit (по умолчанию 100)/offset, опционально tx_handle

execute

Выполняет произвольный SQL (DDL/DML), возвращает количество затронутых строк, опционально tx_handle

insert_rows

Параметризованная массовая вставка (имя таблицы + массив строк, опционально schema)

update_rows

Параметризованное обновление (set + where, where обязателен для предотвращения случайного обновления всей таблицы, опционально schema)

delete_rows

Параметризованное удаление (where обязателен для предотвращения случайного удаления всей таблицы, опционально schema, помечено как destructive)

Транзакции (явный режим handle)

Инструмент

Описание

transaction_begin

Начинает транзакцию, возвращает tx_handle (автоматический откат и освобождение через 5 минут простоя)

transaction_commit

Фиксирует транзакцию

transaction_rollback

Откатывает транзакцию

Использование: transaction_begin → несколько query/execute (передавая один и тот же tx_handle) → transaction_commit или transaction_rollback.

Метаданные (только чтение)

Инструмент

Описание

list_databases / list_schemas / list_tables

Список баз / схем / таблиц

describe_table

Определение столбцов: тип, длина, nullable, значение по умолчанию, первичный ключ

list_indexes / list_views / list_sequences

Список индексов / представлений / последовательностей

Диагностика и эксплуатация (только чтение)

Инструмент

Описание

explain_query

План выполнения; при analyze=true реально выполняет и собирает статистику (автоматический откат транзакции, инструкции записи не сохраняются); отклоняет множественные инструкции с точкой с запятой

list_sessions

Текущие активные сессии

list_lock_conflicts

Конфликты блокировок (блокируемые стороны и источники блокировки)

database_stats

Версия, размер базы, количество соединений, адрес сервера и время

Пользователи и права

Инструмент

Описание

list_users

Список пользователей (только чтение)

create_user

Создание пользователя с возможностью входа

grant_privilege / revoke_privilege

Выдача / отзыв прав (например, ALL ON DATABASE d)

Ресурсы

URI ресурса

Описание

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

Чтение структуры таблицы в JSON

Подключение MCP-клиента

После сборки зарегистрируйте в конфигурационном файле клиента (на примере формата mcpServers для Claude Desktop / Cursor). В 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, а также убедиться, что группа безопасности разрешает доступ к порту 8000 с исходящего IP клиента.

Можно также не передавать env, а полагаться на файл .env в корне проекта (сервер автоматически читает его при запуске, привязка к корню проекта, не зависит от каталога запуска).

Изоляция мультитенантности (stream = schema)

GAUSSDB_SEARCH_PATH одновременно служит белым списком схем на уровне MCP: после настройки доступ ограничивается собственной схемой соответствующего stream, таблицы других stream не видны.

Перехват на уровне MCP (надёжный, основан на структурных параметрах):

  • list_schemas возвращает только схемы из белого списка, не раскрывая имена других схем

  • list_tables/list_indexes/list_views/list_sequences без явного schema по умолчанию привязываются к первой схеме из белого списка, больше не возвращают таблицы всей базы

  • describe_table/insert_rows/update_rows/delete_rows при явной передаче schema, не входящей в белый список, немедленно отклоняются с ошибкой

  • Ресурс структуры таблицы gaussdb://{schema}/{table}/schema также ограничен белым списком, чтение через schema отклоняется

Подстраховка на уровне прав базы данных (обязательна, нельзя пропускать): execute — это произвольный SQL, уровень MCP не выполняет разбор SQL (у рукописного парсера всегда найдутся пути обхода); query хотя и принудительно read-only (белый список первых ключевых слов + чёрный список ключевых слов записи + запрет множественных инструкций), но функции с побочными эффектами в форме SELECT (например, pg_terminate_backend, setval) невозможно исчерпывающе перехватить. Доступ между схемами и функции с побочными эффектами обеспечиваются правами GaussDB. Каждый stream использует отдельную ограниченную учётную запись, авторизуется только собственная схема:

-- 以管理员执行:为 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, два уровня叠加: структурные входы перехватывает MCP, произвольный SQL — база данных.

Замечания по безопасности

  • Журналы stdio-сервера пишутся в stderr, stdout используется только для сообщений MCP

  • В структурных инструментах (insert_rows/update_rows/delete_rows и др.) имена таблиц/столбцов/пользователей и другие идентификаторы проходят проверку символов, значения всегда передаются через параметризованные плейсхолдеры, защита от SQL-инъекций; query/explain_query — свободные SQL-входы, суженные проверкой read-only и ограничением одной инструкции (см. выше)

  • 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 и проверка read-only), src/format.ts (форматирование результатов), src/index.ts (MCP-сервер и регистрация инструментов).

После получения реального экземпляра GaussDB: заполните .envnpm run buildnode build/index.js и протестируйте с любым MCP-клиентом; или сначала проверьте подключение отдельно: настройте env и запустите инструмент test_connection.

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