GaussDB-MCP
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; для ведущего/ведомого с несколькими узлами — через запятую (например, |
| нет |
| Порт базы данных, по умолчанию 8000 для облачных экземпляров GaussDB Huawei Cloud |
| нет |
| Имя базы данных |
| нет |
| Пользователь для входа, администратор по умолчанию — root |
| да | — | Пароль для входа |
| нет | — | Схема по умолчанию, соответствует |
| нет |
| При ведущем/ведомом с несколькими узлами подключаться только к ведущему (соответствует |
| нет |
| Установите |
| нет | — | Путь к корневому сертификату CA (скачайте |
| нет | — | Путь к клиентскому сертификату (только для двусторонней аутентификации) |
| нет | — | Путь к клиентскому закрытому ключу (только для двусторонней аутентификации) |
| нет |
| Проверять ли сертификат сервера; при отладке можно установить |
Конфигурация подключения по внутренней сети
Используется, когда приложение и экземпляр 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):
Файл
.envпроекта (рекомендуется): скопируйте.env.exampleв.envв корне проекта и заполните. Расположение.envпривязано к корню проекта и не зависит от того, из какой директории запущен сервер — MCP-клиент сможет прочитать его при запускеbuild/index.jsиз любого рабочего каталога. Обе конфигурации выше можно просто записать в.env.Поле
envMCP-клиента: передавайте переменные окружения напрямую в конфигурацииmcpServers(см. примеры подключения ниже), подходит для сценариев, когда не хочется хранить файлы с учётными данными в проекте.
При ведущем/ведомом развёртывании GAUSSDB_HOST содержит несколько IP-адресов узлов через запятую; при запуске сервер последовательно пробует подключиться и автоматически выбирает первый доступный узел.
Обзор инструментов (24)
Все инструменты помечены аннотациями в соответствии со спецификацией MCP (readOnlyHint/destructiveHint), клиент может на их основе показывать подтверждение для операций записи.
Подключение и статус
Инструмент | Описание |
| Проверка подключения, возвращает версию GaussDB, текущую базу, текущего пользователя |
Запросы и запись
Инструмент | Описание |
| Выполняет read-only запрос (начинается с 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.
Метаданные (только чтение)
Инструмент | Описание |
| Список баз / схем / таблиц |
| Определение столбцов: тип, длина, nullable, значение по умолчанию, первичный ключ |
| Список индексов / представлений / последовательностей |
Диагностика и эксплуатация (только чтение)
Инструмент | Описание |
| План выполнения; при |
| Текущие активные сессии |
| Конфликты блокировок (блокируемые стороны и источники блокировки) |
| Версия, размер базы, количество соединений, адрес сервера и время |
Пользователи и права
Инструмент | Описание |
| Список пользователей (только чтение) |
| Создание пользователя с возможностью входа |
| Выдача / отзыв прав (например, |
Ресурсы
URI ресурса | Описание |
| Чтение структуры таблицы в 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принудительно требуют условие whereexplain_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: заполните .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