Skip to main content
Glama
devopam

MCPg - Production-grade PostgreSQL MCP Server

MCPg

MCP Toplist

Промышленный сервер Model Context Protocol для PostgreSQL. Он позволяет ИИ-агентам безопасно просматривать, запрашивать, управлять и настраивать базу данных Postgres — 254 инструмента, охватывающих интроспекцию каталога, интеллектуальные запросы, SQL на естественном языке, структурные диффы, гибридный поиск, графовые запросы, перемещение данных, оперативное управление и многое другое.

PyPI version Python versions License: MIT CI OpenSSF Scorecard OpenSSF Best Practices Stars MCPg MCP server AllMCPs Verified

Попробуйте вживую: укажите MCP-клиенту — или MCP Inspector — на размещённую, доступную только для чтения демонстрационную конечную точку https://devopam-mcpg-demo.hf.space/mcp. Она предоставляет инструменты чтения на одноразовых демонстрационных данных; для реального использования запускайте MCPg рядом со своей базой данных (см. Быстрый старт).

📍 Размещён на


Аспект

MCPg

Безопасность

Только чтение по умолчанию + проверка AST

Транспорт

stdio + HTTP/SSE

Установка

pip install mcpg

Версии PostgreSQL

14–19

Ключевое отличие

Производственная наблюдаемость + мультитенантность

Почему MCPg

  • Безопасен по умолчанию. Режим доступа только для чтения. Каждый пользовательский SQL-запрос проходит через проверенный AST-список разрешённых операций перед выполнением. Интерполяция идентификаторов проходит через строгий regex [A-Za-z_][A-Za-z0-9_]* — проектное ограничение, означающее, что пользовательский ввод никогда не попадает в базу данных через конкатенацию строк. Такие возможности, как DDL, shell и LISTEN/NOTIFY, отключены, пока вы не включите их явно. Каждый инструмент публикует MCP ToolAnnotations (readOnlyHint, openWorldHint), производные от тех же ограничений, поэтому клиенты могут автоматически одобрять чтение и ограничивать запись без догадок.

  • Один сервер, широкий охват. Доступ к данным приложения (запросы, поиск, курсоры, NL→SQL) и операции уровня DBA (проверки работоспособности, настройка индексов, анализ EXPLAIN, блокировки, vacuum, дампы, реплики, миграции) в одном MCP-сервере. Агентам не нужно переключать инструменты для смены задач.

  • Всё нативно для PostgreSQL. Никаких ORM, никакого налога на абстракцию — использует psycopg3 напрямую, говорит на всех системных представлениях pg_*, интегрируется с TimescaleDB, pgvector, PostGIS, Apache AGE и pg_stat_statements, где они доступны, и корректно деградирует, когда их нет.

  • Производственная форма, а не демонстрационная. Пул соединений, мультитенантность с SET ROLE на каждый запрос, маршрутизация к репликам чтения с обнаружением деградировавших хостов, серверные курсоры с выделенными соединениями, ограничение скорости, аудит-журнал с редактированием по регулярным выражениям, принудительный TLS для PG при запуске, аутентификация OIDC JWT bearer, таймауты операторов/блокировок на сессию.

  • Встроенная наблюдаемость. Конечная точка Prometheus /metrics на HTTP-транспорте предоставляет mcpg_tool_calls_total{tool,status} + mcpg_tool_duration_seconds. Каждый вызов инструмента записывает структурированное событие аудита с аргументами, из которых удалены учётные данные.

  • Тестируемость, мультиверсионность. Более 2500 модульных тестов плюс интеграционный набор, который запускается против реального контейнера PostgreSQL в CI — матрица покрывает PG 14, 15, 16, 17, 18 при каждом пуше, а также PG 19 (бета) как экспериментальную (не блокирующую) запись, отслеживаемую в issue #120.


Related MCP server: PostgreSQL MCP Server

Установка

Из PyPI (рекомендуется)

pip install mcpg
# or, in an isolated venv exposed globally:
uv tool install mcpg

Проверка:

mcpg --version

Docker

Скачайте готовый образ из GitHub Container Registry (публикуется при каждом тегированном релизе — :latest отслеживает новейшую версию, или закрепите версию, например :0.6.5):

docker pull ghcr.io/devopam/mcpg:latest
docker run --rm --name mcpg -p 8000:8000 \
    -e MCPG_DATABASE_URL=postgresql://user:pass@host:5432/db \
    -e MCPG_ACCESS_MODE=read-only \
    ghcr.io/devopam/mcpg:latest

В Windows PowerShell замените завершающий \ на обратный апостроф ` (или поместите команду в одну строку); в руководстве по установке есть готовые блоки для Linux/macOS, PowerShell и Command Prompt.

Или соберите сами из исходников:

docker build -t mcpg https://github.com/devopam/MCPg.git

Многоступенчатый образ: этап выполнения удаляет инструменты сборки, работает как uid=10001 / gid=10001 с оболочкой nologin, файлы приложения принадлежат root и доступны только для чтения пользователю выполнения.

Из исходников (для разработчиков)

git clone https://github.com/devopam/MCPg && cd MCPg
uv sync

uv sync создаёт виртуальное окружение со всеми зависимостями выполнения и разработки и предоставляет консольный скрипт mcpg.

Более подробно в Руководстве по установке.


Быстрый старт

Установка в один клик: Add to Cursor Install in VS Code Claude Desktop — настройка для Windsurf, JetBrains, Zed, Cline, Antigravity, Qwen Code, Perplexity, ChatGPT, Copilot Studio, Continue и HTTP-клиентов в руководстве по интеграциям.

Установка в один клик в Claude Desktop (.mcpb)

Скачайте mcpg-<version>.mcpb из последнего релиза и дважды щёлкните по нему (или перетащите его в Настройки Claude Desktop → Расширения). Вам будет предложено указать URL подключения к PostgreSQL — он сохраняется в связке ключей ОС — и режим доступа (по умолчанию только чтение). Это вся установка: пакет весит ~2 кБ, а хост разрешает закреплённый релиз mcpg из PyPI для вашей платформы.

Или настройте вручную (транспорт stdio)

Вставьте это в ваш claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "mcpg": {
      "command": "uvx",
      "args": ["mcpg"],
      "env": {
        "MCPG_DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
      }
    }
  }
}

Перезапустите Claude Desktop. Набор инструментов MCPg теперь доступен модели. Вы можете спрашивать Клода, например:

"Какие схемы существуют в этой базе данных? Для каждой из них кратко опишите три самые большие таблицы."

"Почему этот запрос медленный? SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at DESC"

Нет интересных данных? Заполните демонстрационный набор

MCPG_DATABASE_URL=postgresql://... mcpg --demo

Одна команда заполняет небольшой, подобранный набор данных электронной коммерции (3000 заказов, 900 отзывов о товарах, намеренно внесённые ошибки) в схему mcpg_demo — спроектирован так, чтобы советник по индексам, анализ плана запроса, полнотекстовый поиск, аудит PII и графовая проекция нашли что-то реальное при первой же попытке. См. экскурсию с записанным прохождением, и удалите её в любой момент с помощью mcpg --demo-drop.

Запуск как HTTP-сервер (для интеграций с IDE, веб-приложениями и т. д.)

MCPG_DATABASE_URL=postgresql://user:pass@localhost:5432/mydb \
MCPG_TRANSPORT=streamable-http \
MCPG_HTTP_PORT=8000 \
mcpg

Затем укажите любому MCP-совместимому клиенту на http://localhost:8000/mcp (или /sse для транспорта SSE). Установите MCPG_HTTP_AUTH_TOKEN=... для статического bearer-токена или MCPG_AUTH_MODE=oidc для полной проверки JWT против OIDC-провайдера.


Конфигурация

MCPg настраивается полностью через переменные окружения — нет файла конфигурации, нет флагов (флаги CLI --version / --demo / --demo-drop — это разовые команды, а не конфигурация). Единственная обязательная переменная — MCPG_DATABASE_URL; всё остальное имеет безопасные значения по умолчанию.

Типовые сценарии

Сценарий

Установка

Локальное исследование, только чтение

MCPG_DATABASE_URL

Доступ к данным приложения на чтение/запись

MCPG_ACCESS_MODE=restricted

Набор инструментов DBA (DDL, vacuum и т. д.)

MCPG_ACCESS_MODE=unrestricted + MCPG_ALLOW_DDL=true

HTTP-транспорт с bearer-аутентификацией

MCPG_TRANSPORT=streamable-http + MCPG_HTTP_AUTH_TOKEN=…

Мультитенантный SaaS

MCPG_DEFAULT_ROLE=tenant_a + MCPG_ALLOWED_ROLES=tenant_a,tenant_b,…

Распределение по репликам чтения

MCPG_REPLICA_URLS=postgresql://…?sslmode=require,postgresql://…?sslmode=require

NL→SQL — один провайдер

Установите любой ключ вендора (ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, XAI_API_KEY, GROQ_API_KEY, HF_TOKEN, … — 22 встроенных провайдера). MCPg автоматически выбирает провайдера по умолчанию.

NL→SQL — несколько провайдеров, выбор вызывающим

Установите все ключи вендоров, которые хотите активировать. Каждый вызов translate_nl_to_sql может передавать provider="…" (любой настроенный встроенный или пользовательский).

Полный справочник

Core

Переменная

По умолчанию

Описание

MCPG_DATABASE_URL

обязательно

Основной DSN PostgreSQL. Поддерживаются формы URI (postgresql://…) и ключевых слов (host=… user=…). Для удалённых хостов требуется sslmode=require (или строже).

MCPG_ACCESS_MODE

read-only

read-only | restricted (разрешает инструменты записи) | unrestricted (также открывает инструменты DBA при совместном использовании с гейт-переменными).

MCPG_TRANSPORT

stdio

stdio (по умолчанию, для Claude Desktop) | streamable-http | sse.

MCPG_LOG_LEVEL

INFO

DEBUG | INFO | WARNING | ERROR | CRITICAL.

MCPG_HTTP_HOST

127.0.0.1

Адрес привязки для HTTP-транспортов. В контейнерах задайте 0.0.0.0.

MCPG_HTTP_PORT

8000

Порт прослушивания для HTTP-транспортов (1–65535).

Гейты возможностей (opt-in для инструментов с большим радиусом поражения)

Переменная

По умолчанию

Описание

MCPG_ALLOW_DDL

false

Открывает DDL-инструменты (run_ddl, create_graph, drop_graph, инструменты гипертаблиц, инструменты миграций). Требует MCPG_ACCESS_MODE=unrestricted.

MCPG_ALLOW_SHELL

false

Открывает инструменты на основе подпроцессов (dump_database, restore_database, run_pg_binary). Требуемые клиентские бинарники PG должны находиться в PATH.

MCPG_ALLOW_LISTEN

false

Открывает инструменты LISTEN/NOTIFY (subscribe_channel, poll_notifications, unsubscribe_channel, list_notification_subscriptions).

Аутентификация (только для HTTP-транспортов)

Переменная

По умолчанию

Описание

MCPG_AUTH_MODE

static

static (сравнивает bearer-токен с MCPG_HTTP_AUTH_TOKEN) | oidc (полная проверка JWT).

MCPG_HTTP_AUTH_TOKEN

Обязательный bearer-токен, когда MCPG_AUTH_MODE=static. Сравнение за константное время.

MCPG_OIDC_ISSUER

URL эмитента OIDC (обязателен при MCPG_AUTH_MODE=oidc).

MCPG_OIDC_AUDIENCE

Ожидаемое утверждение aud (обязательно при MCPG_AUTH_MODE=oidc).

MCPG_OIDC_JWKS_URL

автоопределяемое

Переопределяет эндпоинт JWKS (в противном случае автоматически обнаруживается из .well-known эмитента).

MCPG_OIDC_ROLE_CLAIM

Утверждение JWT, значение которого становится ролью PG для конкретного запроса (SET LOCAL ROLE). Сочетается с драйвером мультиарендности.

Усиление безопасности HTTP (только для HTTP-транспортов)

Переменная

По умолчанию

Описание

MCPG_HTTP_MAX_BODY_BYTES

1048576

(1 MiB) Тела запросов, превышающие это значение, получают ответ 413. Учитываются потоковые байты, поэтому отсутствующий или неверный Content-Length не позволит обойти лимит.

MCPG_HTTP_ALLOWED_ORIGINS

Список разрешённых источников CORS через запятую. Если не задано — CORS-мидлвар отсутствует (кросс-доменные заголовки не отправляются).

MCPG_HTTP_HSTS_MAX_AGE

31536000

max-age для Strict-Transport-Security. Значение 0 отключает заголовок HSTS. Заголовки безопасности (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy) добавляются всегда, если только приложение уже не установило их.

MCPG_HTTP_REQUEST_TIMEOUT_SECONDS

0

Ограничение по реальному времени на запрос (по истечении — 504). 0 = отключено. Не задавайте, если вы полагаетесь на долгоживущие потоки SSE / streamable-http, — жёсткий лимит разрывает и их.

Мультиарендность (SET ROLE)

Переменная

По умолчанию

Описание

MCPG_DEFAULT_ROLE

Статическая роль PG, применяемая к каждому запросу. Проверяется как идентификатор.

MCPG_ALLOWED_ROLES

Разрешённый список через запятую. Если задан, заголовок X-MCPG-Role / утверждение роли OIDC должны быть в этом списке.

Реплики для чтения

Переменная

По умолчанию

Описание

MCPG_REPLICA_URLS

DSN реплик через запятую. Запросы force_readonly распределяются циклически (round-robin) между здоровыми репликами; при сбое — откат на primary; окно повторных попыток для деградировавшей реплики — 30 с.

Несколько баз данных (вторичные БД только для чтения)

Переменная

По умолчанию

Описание

MCPG_SECONDARY_DATABASE_URLS

Записи name=dsn через запятую или перевод строки, задающие дополнительные базы данных только для чтения, которые может обслуживать этот сервер (например, analytics=postgresql://…?sslmode=require,reporting=postgresql://…?sslmode=require). Инструменты, поддерживающие чтение, принимают необязательный аргумент database, выбирающий вторичную БД по имени; опустите его, чтобы использовать основную БД. Вторичные БД доступны только для чтения — это гарантируется на уровне PostgreSQL (каждый запрос выполняется в транзакции READ ONLY), поэтому запись / DDL / shell / миграции всегда направляются в основную БД. Имена должны быть простыми идентификаторами ([a-z0-9_]+), уникальными и не быть primary (зарезервированный идентификатор для MCPG_DATABASE_URL). Действуют те же правила TLS, что и для основного DSN. Вызовите list_databases, чтобы узнать настроенные идентификаторы и их доступность.

Пул / тайм-ауты / TLS

Переменная

По умолчанию

Описание

MCPG_POOL_MIN_SIZE

1

Минимальное количество соединений в пуле.

MCPG_POOL_MAX_SIZE

5

Максимальное количество соединений в пуле. Должно быть ≥ MCPG_POOL_MIN_SIZE.

MCPG_STATEMENT_TIMEOUT_MS

30000

statement_timeout на сессию, устанавливаемый при получении соединения из пула. Вышедшие из-под контроля запросы завершаются сами.

MCPG_LOCK_TIMEOUT_MS

5000

lock_timeout на сессию. Зависшие ожидания блокировок завершаются сами.

MCPG_ENABLE_ANALYTICAL_QUERIES

true

Открывает run_analytical_query (долгие операции чтения на изолированном пуле). Установите false, чтобы убрать инструмент.

MCPG_ANALYTICAL_TIMEOUT_MS

120000

Бюджет времени по умолчанию на один вызов run_analytical_query (2 мин).

MCPG_ANALYTICAL_MAX_TIMEOUT_MS

600000

Жёсткий потолок для run_analytical_query; переданный timeout_ms ограничивается этим значением (10 мин). Должно быть ≥ MCPG_ANALYTICAL_TIMEOUT_MS.

MCPG_ANALYTICAL_MAX_CONCURRENCY

2

Размер изолированного аналитического пула — максимум одновременных вызовов run_analytical_query.

MCPG_ALLOW_INSECURE_TLS

false

Обходит проверку TLS при запуске, которая отклоняет удалённые DSN без sslmode=require (или строже). Loopback-хосты всегда являются исключением.

MCPG_SHUTDOWN_DRAIN_SECONDS

30

При получении SIGTERM ждать завершения выполняющихся вызовов инструментов не дольше этого времени, прежде чем закрыть пул и курсоры.

Инструменты подпроцессов (только при MCPG_ALLOW_SHELL=true)

Variable

Default

Description

MCPG_SHELL_TIMEOUT_SEC

60

Максимальное время выполнения для вызовов pg_dump / pg_restore / psql.

MCPG_SHELL_MAX_OUTPUT_BYTES

67108864

(64 МиБ) Ограничение на захваченный stdout для каждого вызова подпроцесса.

MCPG_SUBPROCESS_BIN_ALLOWLIST

Разделенные запятыми абсолютные каталоги, в которых должны находиться разрешенные pg_dump / pg_restore / psql. Пусто = доверять PATH. Предотвращает подмену этих бинарников через PATH.

MCPG_SUBPROCESS_CPU_SECONDS

RLIMIT_CPU для каждого дочернего процесса (секунды). Только POSIX; не задано = наследовать.

MCPG_SUBPROCESS_MEMORY_MB

RLIMIT_AS для каждого дочернего процесса (МиБ). Только POSIX; не задано = наследовать.

LISTEN/NOTIFY (MCPG_ALLOW_LISTEN=true only)

Variable

Default

Description

MCPG_LISTEN_QUEUE_MAX

1000

Буфер на канал; при переполнении отбрасываются самые старые уведомления.

Audit

Variable

Default

Description

MCPG_AUDIT_PERSIST

false

Если true, каждый вызов run_write / run_ddl сохраняется в таблицу mcpg_audit.events (автоматически создается идемпотентно).

MCPG_AUDIT_REDACT_KEYS

Разделенные запятыми фрагменты регулярных выражений, добавляемые к шаблону имени секрета (по умолчанию уже покрыты password, passwd, secret, token, api[_-]?key, bearer, authorization, database_url, dsn, conninfo).

MCPG_AUDIT_INTEGRITY

false

Если true, каждое сохраненное событие подписывается HMAC, связанным с предыдущим событием; инструмент verify_audit_chain проходит по цепочке и сообщает о первом разрыве. Требуется MCPG_AUDIT_HMAC_KEY.

MCPG_AUDIT_HMAC_KEY

Секретный ключ для цепочки HMAC аудита. Обязателен, когда MCPG_AUDIT_INTEGRITY=true. Никогда не появляется в repr/логах.

Secrets backend

По умолчанию каждый секрет читается напрямую из окружения. Установите MCPG_SECRETS_BACKEND=file, чтобы вместо этого загружать API-ключи / bearer-токен / HMAC-ключ из подключенного файла — имя в файле имеет приоритет; все отсутствующее возвращается к переменной окружения, так что частичные файлы работают.

Variable

Default

Description

MCPG_SECRETS_BACKEND

env

env (читать каждый секрет из окружения) | file (наложить файл секретов поверх окружения).

MCPG_SECRETS_FILE_PATH

Обязателен, когда MCPG_SECRETS_BACKEND=file. Путь к плоской карте имя → значение: всегда JSON, или YAML (.yaml/.yml) при установленном PyYAML. Покрывает ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY / GOOGLE_API_KEY / MCPG_NL2SQL_API_KEY, MCPG_HTTP_AUTH_TOKEN и MCPG_AUDIT_HMAC_KEY.

Rate limiting

Variable

Default

Description

MCPG_RATE_LIMIT_ENABLED

false

Включить ограничение скорости на основе token-bucket для каждого инструмента.

MCPG_RATE_LIMIT_MAX_REQUESTS

60

Глобальный лимит на окно для всех инструментов.

MCPG_RATE_LIMIT_WINDOW_SECONDS

60

Длина окна для глобальной квоты.

MCPG_RATE_LIMIT_HEAVY_MAX

5

Лимит для тяжелых инструментов (run_write, run_ddl, dump_database и т.д.).

MCPG_RATE_LIMIT_HEAVY_WINDOW

60

Длина окна для квоты тяжелых инструментов.

Caching & Feature flags

Variable

Default

Description

MCPG_CACHE_ENABLED

true

Включить или отключить адаптивный кэш-слой.

MCPG_CACHE_TTL_SECONDS

300

Время жизни кэша по умолчанию в секундах.

MCPG_CACHE_MAXSIZE

1024

Максимальная емкость LRU для кэша в памяти.

MCPG_REDIS_URL

Необязательная строка подключения к Redis для внешнего многоузлового кэширования.

MCPG_ENABLE_HEAVY_DIAGNOSTICS

true

Переключатель для вычислительно тяжелых инструментов диагностики, диаграмм и советов.

MCPG_ELICIT_CONFIRM_WRITES

false

Если true, каждый вызов инструмента записи/DDL/shell/listen/migrate-tier (любой инструмент, у которого аннотация readOnlyHint не равна true) требует принятого интерактивного подтверждения (ctx.elicit()) перед выполнением. Best-effort, не граница принуждения: он срабатывает только для клиентов, которые одновременно передают context в запросе и объявляют возможность elicitation во время initialize — клиент, опускающий любой из них, молча обходит ворота, и инструмент выполняется как обычно.

Natural-language SQL

MCPg автоматически обнаруживает всех настроенных провайдеров из окружения при запуске — задайте столько ключей вендоров, сколько у вас есть, и каждый станет вызываемым. Встроено девятнадцать провайдеров. Три являются собственными (Anthropic, OpenAI, Gemini); остальные шестнадцать используют API, совместимый с OpenAI, с предустановленными конечными точками вендоров: DeepSeek, Qwen, OpenRouter, Perplexity, xAI (Grok), Groq, Mistral, Together, Fireworks, DeepInfra, Cerebras, Nebius, Hugging Face, GitHub Models, SambaNova и Moonshot (Kimi). Каждый встроенный работает по принципу plug-and-play — задайте стандартную переменную окружения API-ключа вендора, и он будет автоматически обнаружен — и любой другой провайдер, совместимый с OpenAI, или локальный сервер моделей (Ollama, vLLM, LM Studio) по-прежнему подключается только через конфигурацию с помощью MCPG_NL2SQL_CUSTOM_PROVIDERS. Весь список встроенных — это один декларативный реестр в nl2sql.py, так что добавление вендора или обновление устаревшей модели по умолчанию — это изменение одной строки данных.

Когда MCPG_NL2SQL_PROVIDER не задан, MCPg автоматически выбирает значение по умолчанию в порядке реестра — anthropic → openai → gemini остаются первыми, чтобы существующие развертывания не затрагивались. translate_nl_to_sql принимает необязательный аргумент provider="…" для маршрутизации по вызову; get_server_info сообщает, какие настроены.

Переменная

По умолчанию

Описание

<VENDOR>_API_KEY

Установка ключа вендора по стандартному соглашению включает этого провайдера. Стандартные слаги: ANTHROPIC_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, OPENROUTER_API_KEY, PERPLEXITY_API_KEY, XAI_API_KEY, GROQ_API_KEY, MISTRAL_API_KEY, TOGETHER_API_KEY, FIREWORKS_API_KEY, CEREBRAS_API_KEY, NEBIUS_API_KEY, SAMBANOVA_API_KEY, MOONSHOT_API_KEY.

(отклоняющиеся ключи)

Некоторые вендоры не следуют схеме <VENDOR>_API_KEY: GeminiGEMINI_API_KEY или GOOGLE_API_KEY; QwenDASHSCOPE_API_KEY или QWEN_API_KEY; Hugging FaceHF_TOKEN; GitHub ModelsGITHUB_TOKEN; DeepInfraDEEPINFRA_TOKEN.

MCPG_NL2SQL_PROVIDER

выбирается автоматически

Любой встроенный слаг (перечислен выше) или пользовательское имя. Фиксирует провайдера по умолчанию, используемого при вызове инструмента без provider=. Если не задано + присутствует любой ключ вендора → MCPg автоматически выбирает провайдера в порядке реестра.

MCPG_NL2SQL_API_KEY

Явный ключ для настроенного MCPG_NL2SQL_PROVIDER. Переопределяет стандартную переменную окружения вендора только для этого провайдера. Требует, чтобы MCPG_NL2SQL_PROVIDER был задан.

MCPG_NL2SQL_MODEL

модель провайдера по умолчанию

Переопределяет модель по умолчанию (например, claude-sonnet-4-6, gpt-4o-mini, grok-3-mini). Применяется только к провайдеру по умолчанию.

MCPG_NL2SQL_BASE_URL

Переопределение эндпоинта для провайдера по умолчанию (частные шлюзы / региональные эндпоинты).

MCPG_NL2SQL_CUSTOM_PROVIDERS

Приводите своего провайдера — без изменения кода. Записи вида `name=base_url

model, разделённые запятыми или переводами строк, объявляют *дополнительных* провайдеров, совместимых с OpenAI, помимо встроенных (локальные Ollama / vLLM / LM Studio или любой нишевый вендор). Ключ берётся из _API_KEYпо соглашению, а для тех, кто отклоняется, добавляется|KEY_ENV_VAR; для loopback-эндпоинтов ключ допускается не указывать. Каждое имя становится вызываемым через provider=`.

MCPG_NL2SQL_MAX_TOKENS

2048

Лимит на генерируемые токены (жёсткий предел: 16384).


Примеры использования

Инструменты MCP вызываются агентом (Claude, Cursor, Continue, …) в ответ на ваши инструкции из естественного языка. Несколько наглядных диалогов:

Инспекция схемы

Вы: Какие таблицы живут в схеме public и какие из них самые большие по количеству строк?

Агент (через list_tables + summarize_table × N): Шесть таблиц: customers (1,2 млн строк), orders (4,7 млн), line_items (18,3 млн), products (340), addresses (1,4 млн), audit_log (45,8 млн — самая большая, накапливается без политики хранения).

Диагностика медленного запроса

Вы: Почему запрос SELECT * FROM orders o JOIN line_items l ON o.id = l.order_id WHERE o.created_at > now() - interval '7 days' выполняется 8 секунд?

Агент (using why_is_this_slow + recommend_indexes): EXPLAIN ANALYZE показывает последовательное сканирование по orders (4,7 млн строк) с фильтром по created_at. На orders.created_at индекса нет. Рекомендация: CREATE INDEX CONCURRENTLY orders_created_at_idx ON orders (created_at DESC); Ожидаемое улучшение: снижение на ~95% (при сканировании по индексу затрагивается ~33K строк вместо всей таблицы). Прогоните validate_migration перед применением, чтобы убедиться, что сюрпризов с блокировками не будет.

Перевод с обычного английского на SQL

Вы: Найдите клиентов, которые разместили заказ в этом месяце, но никогда не размещали его в предыдущие три месяца, — покажите их email и текущую сумму трат за всё время.

Агент (using translate_nl_to_sql):

SELECT c.email, SUM(l.price * l.quantity) AS lifetime_spend
FROM customers c
JOIN orders o ON o.customer_id = c.id
JOIN line_items l ON l.order_id = o.id
WHERE EXISTS (
  SELECT 1 FROM orders o2 WHERE o2.customer_id = c.id
    AND o2.created_at >= date_trunc('month', now()))
  AND NOT EXISTS (
  SELECT 1 FROM orders o3 WHERE o3.customer_id = c.id
    AND o3.created_at >= date_trunc('month', now()) - interval '3 months'
    AND o3.created_at <  date_trunc('month', now()))
GROUP BY c.email;

Изображение схемы

Вы: Нарисуйте мне ER-диаграмму схемы public.

Агент (using generate_schema_diagram): Возвращает диаграмму Mermaid, которую можно вставить прямо в GitHub / Notion / Obsidian.

Аудит базы данных

Вы: Насколько сейчас здоровое состояние базы данных?

Агент (using audit_database): Возвращает рейтинг: Память и I/O: 92 (GOOD), транзакции и подключения: 78 (WARNING: доля откатов 0,4%, посмотрите логи приложений), параллелизм и блокировки: 60 (CRITICAL: 14 backend-процессов ожидают), чистота и bloat: 88 (GOOD), медленные запросы: 70 (WARNING: самый частый шаблон запроса выполняется 5000 раз, в среднем 90 мс — см. optimize_query).

Выполнение защищённой записи

Вы: Отметьте мягким удалением все заказы старше 5 лет.

Агент (using run_write with MCPG_AUDIT_PERSIST=true): Проверяет выражение через безопасное ядро SQL-запросов, запускает его внутри транзакции, возвращает количество затронутых строк и сохраняет вызов (sql + аргументы — с секретами, замаскированными регулярными выражениями, — + статус) в mcpg_audit.events для последующей ревизии.

Другие рецепты — мультитенантная маршрутизация, тестирование RLS, NL→SQL, гибридный векторпоиск + FTS, Cypher в Apache AGE, TimescaleDB, экспорт схемы ORM, серверные курсоры — см. docs/cookbook.md.


Что внутри коробки

Компактный список по категориям. Полный текущий справочник инструментов см. в docs/tools.md; за guided-экскурсией идите в docs/tour.md.

  • Интроспекция каталога — схемы, таблицы, столбцы, индексы, ограничения, представления, функции, триггеры, последовательности, секции, политики, роли, гранты, перечисления, домены, составные типы, FDW, публикации, подписки, расширения, generated-columns.

  • Интеллект запросовrun_select, run_select_parallel, explain_query, analyze_query_plan, why_is_this_slow, recommend_indexes, analyze_workload, check_database_health, detect_n_plus_one, audit_database.

  • Поискfuzzy_search (триграммы), full_text_search, vector_search, hybrid_search (pgvector + FTS via RRF), geo_search (PostGIS k-NN).

  • Естественный язык → SQLtranslate_nl_to_sql (22 встроенных провайдера — Anthropic, OpenAI, Gemini, xAI, Groq, Mistral, Hugging Face, … — плюс любой нестандартный OpenAI-совместимый эндпоинт; результат проходит через то же самое безопасное ядро SQL, что и рукописные запросы).

  • Визуализацияgenerate_schema_diagram (ER), generate_fk_cascade_graph (blast-radius для ON DELETE CASCADE), generate_graph_diagram (свойства графы Apache AGE).

  • Структурные диффы и миграцииcompare_schemas, validate_migration, поэтапный workflow prepare_migration / complete_migration / cancel_migration.

  • Apache AGE графы + Cypherlist_graphs, describe_graph, run_cypher, create_graph, drop_graph, generate_graph_diagram.

  • Комбинированные и советникиsummarize_table, find_unused_objects, find_sensitive_columns (эвристика для PII), lint_naming_conventions, test_rls_for_role, list_locks, find_blocking_chains, read_pg_stat_io (PG16+), generate_test_data.

  • Живая эксплуатация и обслуживаниеlist_active_queries, verify_connection_encryption (TLS-статус живого соединения), run_maintenance (VACUUM/ANALYZE), prune_audit_events (хранение аудита), cancel_query, terminate_backend, run_write, run_ddl, enable_extension.

  • Перемещение данныхexport_query / export_table (CSV/JSON), dump_database / restore_database, import_csv / import_json (COPY FROM STDIN), copy_table_between_databases.

  • Серверные курсорыopen_cursor, fetch_cursor, close_cursor, list_cursors для постраничного чтения миллионов строк.

  • TimescaleDBlist_hypertables, list_chunks, create_hypertable, add_compression_policy, add_retention_policy.

  • Экспортёры схем ORM — Prisma, Drizzle, SQLAlchemy, sqlc, Diesel, jOOQ, Ent, Ecto.

  • Потоки событийsubscribe_channel, poll_notifications, unsubscribe_channel, list_notification_subscriptions — мост из PostgreSQL LISTEN/NOTIFY в модель опроса MCP.

  • Наблюдаемость — Prometheus /metrics endpoint + get_metrics_exposition для stdio; структурированный журнал аудита с маскированием учётных данных по регулярным выражениям.


Документация


Безопасности| Переменная | По умолчанию | Описание |

| ------------------------------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | <VENDOR>_API_KEY | — | Установка стандартного для вендора ключа активирует этого провайдера. Стандартные слаги: ANTHROPIC_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, OPENROUTER_API_KEY, PERPLEXITY_API_KEY, XAI_API_KEY, GROQ_API_KEY, MISTRAL_API_KEY, TOGETHER_API_KEY, FIREWORKS_API_KEY, CEREBRAS_API_KEY, NEBIUS_API_KEY, SAMBANOVA_API_KEY, MOONSHOT_API_KEY. | | (отклоняющиеся ключи) | — | Некоторые вендоры не следуют ANTHROPIC_API_KEY установке: GeminiGEMINI_API_KEY или GOOGLE_API_KEY; QwenDASHSCOPE_API_KEY или QWEN_API_KEY; Hugging FaceHF_KITE; GitHub ModelsGITHUB_TOKEN; DeepInfraDEEPINFRA_TOKEN. | | MCPG_NL2SQL_PROVIDER | выбирается автоматически | Любой встроенный слаг (перечислен выше) или нестандартное имя. Фиксирует провайдера по умолчанию, когда инструмент вызывается без provider=. Если не задано + присутствует любой ключ вендора — MCPg выбирает в порядке реестра. | | MCPG_NL2SQL_API_KEY | — | Явный ключ для настроенного MCPG_NL2SQL_PROVIDER. Переопределяет стандартную env-переменную вендора только для этого провайдера. Требует заданной переменной MCPG_NL2SQL_PROVIDER. | | MCPG_NL2SQL_MODEL | Модель провайдера по умолчанию | Переопределяет модель по умолчанию (например, claude-sonnet-4-6, gpt-4o-mini, grok-3-mini). Применяется только к провайдеру по умолчанию. | | MCPG_NL2SQL_BASE_URL | — | Уточнение эндpoint для провайдера по умолчанию (приватные шлюзы / региональные эндпоинты). | | MCPG_NL2SQL_CUSTOM_PROVIDERS | по умолч. | Bring your own provider — без изменения кода кошмарная. Записи name=base_url\|model, разделённые запятыми/переводами строк, объявляют дополнительных OpenAI-совместимых провайдеров помимо встроенных (локальные Ollama / vLLM / LM Studio или любой слайдер). Ключ — из <NAME>_API_KEY по соглашению, либо добавьте \|KEY_ENV_VAR для исключений; для loopback-эндпоинтов можно без ключа. Каждое имя становится вызываемым через provider=. | | MCPG_NL2SQL_MAX_TOKENS | 2048 | Ограничение на генерируемые токены (жёсткий предел: 16384). |


Примеры использования

Инструменты MCP вызываются агентом (Claude, Cursor, Continue, …) в ответ на ваши инструкции обычным языком. Несколько наглядных диалогов:

Посмотреть схему

Вы: Какие таблицы в схеме public — и какие из них самые большие по количеству строк?

Агент (с list_tables + summarize_table × N):
Шесть таблиц: customers (1.2M строк), orders (4.7M), line_items (18.3M), products (340), addresses (1.4M), audit_log (45.8M — самая большая, растёт без retention).

Диагностика медленного запроса

Вы: Почему SELECT * FROM orders o Выполняется на видео o.id = l.order_id? …
(запрос выше)

Агент (через why_is_this_slow + recommend_indexes):
EXPLAIN ANALYZE показывает seq scan по orders (4.7M строк) с фильтром по created_at. Индекса на orders.created_at нет.
Рекомендация: CREATE INDEX CONCURRENTLY orders_created_at_idx ON orders (created_at DESC);
Ожидаемый эффект: ~95% сокращение (index scan ~33K строк вместо всей таблицы). Запустите validate_migration перед применением, чтобы убедиться — не будет блокировок.

Перевод plain English в SQL

Вы: Найдите клиентов, которые сделали заказ в этом месяце, но не в предыдущие три — покажите их email и суммарные траты за всё время.

Агент (через translate_nl_to_sql):

Текущее решение представлено отдельно: — периурл на запрос: GXP9 (исполняемый SQL).

Изобразить схему

Вы: Нарисуйте ER-диаграмму схемы public.

Агент (через generate_schema_diagram): Возвращает Mermaid-диаграмму для вставки напрямую в GitHub / Notion / Obsidian.

Аудит базы данных

Вы: Насколько здорова эта база прямо сейчас?

Агент (через audit_database): Возвращает оценку:
Память и I/O: 92 (GOOD), Транзакции и подклdocuments: 78 (WARNING: rollback rate 0.4%, смотреть логи приложений), Concurrency и Lock: 60 (Critical: 14 backends ждут), Чистота и Bloat: 88 (GOOD), Запросы и «медленные»: 70 (WARNING: топ-запрос выполняется 5000×, среднее 90ms — см. optimize_query).

Выполнение безопасной записи

Вы: Мягко удалите все заказы старше 5 лет.

Агент (через run_write с MCPG_AUDIT_PERSIST=true): Проверяет SQL в условии безопасного safe-SQL ядра, выполняет в транзакции, возвращает число затронутых строк, сохраняет вызов (sql + аргументы — с секретами, маскированными regex — + status) в mcpg_audit.events для ревизии после факта.

Ещё десятки рецептов — multi-tenant routing, RLS-тесты, NL→SQL, гибридика вектор+ FTS, Apache AGE Cypher, TimescaleDB, экспорт схем/ORM, серверные курсоры — см. docs/cookbook.md.


Что внутри

Полный справочник инструментов — docs/tools.md; walkthrough — docs/tour.md.

  • Обзор изменений каталога — схемы, таблицы, колонки, индексы, constraints, виаком, функции, триггерные, последовательности, partitions, policies, roles, grants, enums, domains, compolex типы, FDW, publications, subscriptions, extensions, generated columns.

  • Интеллект запросовrun_select, run_select_parallel, explain_query, analyze_query_plan, why_is_this_slow, recommend_indexes, analyze_workload, check_database_health, detect_n_plus_one, audit_database.

  • Поискfuzzy_search (trigram), full_text_search, vector_search, hybrid_search (pgvector + FTS via RRF), geo_search (PostGIS k-NN).

  • Natural language → SQLtranslate_nl_to_sql (22 встроенных провайдера — Anthropic, OpenAI, Gemini, xAI, Groq, Mistral, Hugging Face, … — плюс любой пользовательский OpenAI-совместимый эндпоинт; результат проходит через то же безопасное ядро SQL, что и рукописные запросы).

  • Визуалиацияgenerate_schema_diagram (ER), generate_fk_cascade_graph (признаков каскада), generate_graph_diagram (Apache AGE).

  • Structural diff & миграцииcompare_schemas, validate_migration, поэтапный процесс prepare_migration / complete_migration / cancel_migration.

  • Apache AGE graph + Cypherlist_graphs, describe_graph, run_cypher, create_graph, drop_graph, generate_graph_diagram.

  • Комбинированные и советующие инструментыsummarize_table, find_unused_objects, find_sensitive_columns (PII-эвристика), lint_naming_conventions, test_rls_for_role, list_locks, find_blocking_chains, read_pg_stat_io (PG16+), generate_test_data.

  • Живое ops & maintenancelist_active_queries, verify_connection_encryption (TLS-статус соединения), run_maintenance (VACUUM/ANALYZE), prune_audit_events, cancel_query, terminate_backend, run_write, run_ddl, enable_extension.

  • Движение данныхexport_query / export_table (CSV/JSON), dump_database / restore_database, import_csv / import_json (COPY FROM STDIN), copy_table_between_databases.

  • Серверные курсорыopen_cursor, fetch_cursor, close_cursor, list_cursors для пагинирования миллионов строк.

  • TimescaleDBlist_hypertables, list_chunks, create_hypertable, add_compression_policy, add_retention_policy.

  • Экспорт схем ORM — Prisma, Drizzle, SQLAlchemy, sqlc, Diesel, jOOQ, Ent, Ecto.

  • Потоки событийsubscribe_channel, poll_notifications, unsubscribe_channel, list_notification_subscriptions (мост LISTEN/NOTIFY в модель опроса MCP).

  • Наблюдательность — Prometheus /metrics endpoint + get_metrics_exposition для stdio; структурированный аудит с regex-деактивацией.


Документация

docs/installation.md — установка и конфигурация
docs/tour.md — guided-тур по инструментам
docs/cookbook.md — практические рецепты для агентов
docs/tools.md — полный справочник по инструментам
docs/architecture.md — как части сочетаются
docs/scaling.md — размер пула, реплики, производительность
docs/security-hardening.md — карта усиления безопасности
docs/release-process.md — как релизы попадают в PyPI
docs/adr/ — ARD: записи архитектурных решений

Обзорная страница: https://devopam.github.io/MCPg/


Security

  • Сообщение об уязвимостях: см. SECURITY.md. Окно согласованного раскрытия — 90 дней; сообщения на devopam@gmail.com.

  • Эшелонированная защита: шлюзы прав доступа, ядро SafeSQL, разрешённый список идентификаторов, редактирование аудита, принудительный TLS для PG при запуске, ограничение частоты запросов, проверка JWT OIDC, таймауты на сессию.

  • См. docs/security-hardening.md — актуальную дорожную карту выполненных (✅) и запланированных (⬜) мер по усилению безопасности.

Политика конфиденциальности

MCPg размещается самостоятельно: содержимое вашей базы данных никогда не покидает вашу инфраструктуру, телеметрия и передача данных на внешние серверы любого рода отсутствуют. Единственное задокументированное исключение — опциональный инструмент translate_nl_to_sql, который отправляет ваш вопрос и контекст схемы (имена, не данные строк) провайдеру LLM, которого вы настраиваете. Полная политика — сбор данных, использование, хранение, передача третьим лицам, сроки хранения и контакты — в PRIVACY.md.


Примечания к выпускам и журнал изменений

Полную историю версий см. в CHANGELOG.md, описание процесса подготовки выпусков — в docs/release-process.md, а загружаемые артефакты — на странице GitHub Releases.


Участие в разработке

Pull request'ы приветствуются — см. CONTRIBUTING.md с описанием настройки цикла разработки, соглашений о тестах и контрольного списка проверки для каждого PR.


Лицензия

MIT — см. LICENSE. Ядро безопасности SQL (src/mcpg/sql/) является собственной разработкой, переписанной на основе crystaldba/postgres-mcp под лицензией MIT; происхождение описано в NOTICE.

Обёрнутые расширения — лицензии, о которых вам стоит знать

Исходный код MCPg распространяется под лицензией MIT, но расширения PostgreSQL, которые он оборачивает, имеют собственные лицензии. Сами обёртки находятся на безопасном расстоянии (вызовы на уровне SQL, без статической или динамической компоновки в Python-процесс MCPg), поэтому проект MCPg не является производным произведением ни одного из них. Операторы, разворачивающие сервис на основе MCPg + конкретного расширения, принимают на себя обязательства, налагаемые лицензией этого расширения — так же, как при прямой установке расширения. Таблица ниже указывает лицензию для каждого обёрнутого расширения, чтобы вы могли принять взвешенное решение.

Расширение

Лицензия

Примечания для операторов

pgvector

PostgreSQL License (в стиле BSD)

Разрешительная; особых обязательств нет.

pg_partman

PostgreSQL License

Разрешительная.

pg_cron

PostgreSQL License

Разрешительная.

pg_turboquant

MIT

Разрешительная.

pg_buffercache / pg_walinspect / pgstattuple

PostgreSQL contrib

Разрешительная.

TimescaleDB

Apache 2.0 (community) + Timescale License (TSL, исходный код доступен) для некоторых функций

Смешанная — см. документацию Timescale о том, какие функции ограничены TSL.

Apache AGE

Apache 2.0

Разрешительная.

pg_search (ParadeDB)

AGPL-3.0

Операторы, предоставляющие сетевой сервис, позволяющий пользователям взаимодействовать с pg_search, подпадают под сетевую оговорку AGPL — как правило, это обязательство предложить исходный код pg_search (и любых модификаций) таким пользователям. Обёртки MCPg не распространяют это обязательство на сам MCPg; вы принимаете его, когда разворачиваете и «передаёте» расширение по сети. Если ваша модель распространения сервиса несовместима с сетевой оговоркой AGPL, выберите другую реализацию BM25 (в плане BM25 перечислены альтернативы).

Эта таблица — отправная точка: для обязательного ответа применительно к вашему конкретному развёртыванию обратитесь к файлу LICENSE вышестоящего расширения и, если это имеет юридическое значение, к собственному юристу.

Отказ от ответственности. Приложены все усилия, чтобы довести MCPg до производственного уровня, однако проект остаётся активно разрабатываемым и может содержать ошибки. Сведения о гарантиях см. в условиях лицензии.

Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
8dResponse time
4dRelease cycle
19Releases (12mo)
Commit activity
Issues opened vs closed

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    A Model Context Protocol server that enables powerful PostgreSQL database management capabilities including analysis, schema management, data migration, and monitoring through natural language interactions.
    18
    2,467
    198
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides AI assistants with secure, read-only access to PostgreSQL databases while offering comprehensive tools for schema exploration, query validation, and performance optimization.
    MIT

View all related MCP servers

Related MCP Connectors

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/devopam/MCPg'

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