MCPg - Production-grade PostgreSQL MCP Server
MCPg
Промышленный сервер Model Context Protocol для PostgreSQL. Он позволяет ИИ-агентам безопасно просматривать, запрашивать, управлять и настраивать базу данных Postgres — 254 инструмента, охватывающих интроспекцию каталога, интеллектуальные запросы, SQL на естественном языке, структурные диффы, гибридный поиск, графовые запросы, перемещение данных, оперативное управление и многое другое.
Попробуйте вживую: укажите MCP-клиенту — или MCP Inspector — на размещённую, доступную только для чтения демонстрационную конечную точку
https://devopam-mcpg-demo.hf.space/mcp. Она предоставляет инструменты чтения на одноразовых демонстрационных данных; для реального использования запускайте MCPg рядом со своей базой данных (см. Быстрый старт).
📍 Размещён на
Аспект | MCPg |
Безопасность | Только чтение по умолчанию + проверка AST |
Транспорт | stdio + HTTP/SSE |
Установка |
|
Версии PostgreSQL | 14–19 |
Ключевое отличие | Производственная наблюдаемость + мультитенантность |
Почему MCPg
Безопасен по умолчанию. Режим доступа только для чтения. Каждый пользовательский SQL-запрос проходит через проверенный AST-список разрешённых операций перед выполнением. Интерполяция идентификаторов проходит через строгий regex
[A-Za-z_][A-Za-z0-9_]*— проектное ограничение, означающее, что пользовательский ввод никогда не попадает в базу данных через конкатенацию строк. Такие возможности, как DDL, shell иLISTEN/NOTIFY, отключены, пока вы не включите их явно. Каждый инструмент публикует MCPToolAnnotations(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 --versionDocker
Скачайте готовый образ из 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 syncuv sync создаёт виртуальное окружение со всеми зависимостями выполнения и разработки и предоставляет консольный скрипт mcpg.
Более подробно в Руководстве по установке.
Быстрый старт
Установка в один клик:
— настройка для 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; всё остальное имеет безопасные значения по умолчанию.
Типовые сценарии
Сценарий | Установка |
Локальное исследование, только чтение |
|
Доступ к данным приложения на чтение/запись |
|
Набор инструментов DBA (DDL, vacuum и т. д.) |
|
HTTP-транспорт с bearer-аутентификацией |
|
Мультитенантный SaaS |
|
Распределение по репликам чтения |
|
NL→SQL — один провайдер | Установите любой ключ вендора ( |
NL→SQL — несколько провайдеров, выбор вызывающим | Установите все ключи вендоров, которые хотите активировать. Каждый вызов |
Полный справочник
Core
Переменная | По умолчанию | Описание |
| обязательно | Основной DSN PostgreSQL. Поддерживаются формы URI ( |
|
|
|
|
|
|
|
|
|
|
| Адрес привязки для HTTP-транспортов. В контейнерах задайте |
|
| Порт прослушивания для HTTP-транспортов (1–65535). |
Гейты возможностей (opt-in для инструментов с большим радиусом поражения)
Переменная | По умолчанию | Описание |
|
| Открывает DDL-инструменты ( |
|
| Открывает инструменты на основе подпроцессов ( |
|
| Открывает инструменты |
Аутентификация (только для HTTP-транспортов)
Переменная | По умолчанию | Описание |
|
|
|
| — | Обязательный bearer-токен, когда |
| — | URL эмитента OIDC (обязателен при |
| — | Ожидаемое утверждение |
| автоопределяемое | Переопределяет эндпоинт JWKS (в противном случае автоматически обнаруживается из |
| — | Утверждение JWT, значение которого становится ролью PG для конкретного запроса ( |
Усиление безопасности HTTP (только для HTTP-транспортов)
Переменная | По умолчанию | Описание |
|
| (1 MiB) Тела запросов, превышающие это значение, получают ответ |
| — | Список разрешённых источников CORS через запятую. Если не задано — CORS-мидлвар отсутствует (кросс-доменные заголовки не отправляются). |
|
| max-age для |
|
| Ограничение по реальному времени на запрос (по истечении — |
Мультиарендность (SET ROLE)
Переменная | По умолчанию | Описание |
| — | Статическая роль PG, применяемая к каждому запросу. Проверяется как идентификатор. |
| — | Разрешённый список через запятую. Если задан, заголовок |
Реплики для чтения
Переменная | По умолчанию | Описание |
| — | DSN реплик через запятую. Запросы |
Несколько баз данных (вторичные БД только для чтения)
Переменная | По умолчанию | Описание |
| — | Записи |
Пул / тайм-ауты / TLS
Переменная | По умолчанию | Описание |
|
| Минимальное количество соединений в пуле. |
|
| Максимальное количество соединений в пуле. Должно быть ≥ |
|
|
|
|
|
|
|
| Открывает |
|
| Бюджет времени по умолчанию на один вызов |
|
| Жёсткий потолок для |
|
| Размер изолированного аналитического пула — максимум одновременных вызовов |
|
| Обходит проверку TLS при запуске, которая отклоняет удалённые DSN без |
|
| При получении SIGTERM ждать завершения выполняющихся вызовов инструментов не дольше этого времени, прежде чем закрыть пул и курсоры. |
Инструменты подпроцессов (только при MCPG_ALLOW_SHELL=true)
Variable | Default | Description |
|
| Максимальное время выполнения для вызовов |
|
| (64 МиБ) Ограничение на захваченный stdout для каждого вызова подпроцесса. |
| — | Разделенные запятыми абсолютные каталоги, в которых должны находиться разрешенные |
| — |
|
| — |
|
LISTEN/NOTIFY (MCPG_ALLOW_LISTEN=true only)
Variable | Default | Description |
|
| Буфер на канал; при переполнении отбрасываются самые старые уведомления. |
Audit
Variable | Default | Description |
|
| Если true, каждый вызов |
| — | Разделенные запятыми фрагменты регулярных выражений, добавляемые к шаблону имени секрета (по умолчанию уже покрыты |
|
| Если true, каждое сохраненное событие подписывается HMAC, связанным с предыдущим событием; инструмент |
| — | Секретный ключ для цепочки HMAC аудита. Обязателен, когда |
Secrets backend
По умолчанию каждый секрет читается напрямую из окружения. Установите
MCPG_SECRETS_BACKEND=file, чтобы вместо этого загружать API-ключи / bearer-токен /
HMAC-ключ из подключенного файла — имя в файле имеет приоритет; все отсутствующее
возвращается к переменной окружения, так что частичные файлы работают.
Variable | Default | Description |
|
|
|
| — | Обязателен, когда |
Rate limiting
Variable | Default | Description |
|
| Включить ограничение скорости на основе token-bucket для каждого инструмента. |
|
| Глобальный лимит на окно для всех инструментов. |
|
| Длина окна для глобальной квоты. |
|
| Лимит для тяжелых инструментов ( |
|
| Длина окна для квоты тяжелых инструментов. |
Caching & Feature flags
Variable | Default | Description |
|
| Включить или отключить адаптивный кэш-слой. |
|
| Время жизни кэша по умолчанию в секундах. |
|
| Максимальная емкость LRU для кэша в памяти. |
| — | Необязательная строка подключения к Redis для внешнего многоузлового кэширования. |
|
| Переключатель для вычислительно тяжелых инструментов диагностики, диаграмм и советов. |
|
| Если true, каждый вызов инструмента записи/DDL/shell/listen/migrate-tier (любой инструмент, у которого аннотация |
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 сообщает, какие настроены.
Переменная | По умолчанию | Описание | |
| — | Установка ключа вендора по стандартному соглашению включает этого провайдера. Стандартные слаги: | |
(отклоняющиеся ключи) | — | Некоторые вендоры не следуют схеме | |
| выбирается автоматически | Любой встроенный слаг (перечислен выше) или пользовательское имя. Фиксирует провайдера по умолчанию, используемого при вызове инструмента без | |
| — | Явный ключ для настроенного | |
| модель провайдера по умолчанию | Переопределяет модель по умолчанию (например, | |
| — | Переопределение эндпоинта для провайдера по умолчанию (частные шлюзы / региональные эндпоинты). | |
| — | Приводите своего провайдера — без изменения кода. Записи вида `name=base_url | model |
|
| Лимит на генерируемые токены (жёсткий предел: 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_writewithMCPG_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).Естественный язык → SQL —
translate_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, поэтапный workflowprepare_migration/complete_migration/cancel_migration.Apache AGE графы + Cypher —
list_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для постраничного чтения миллионов строк.TimescaleDB —
list_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— мост из PostgreSQLLISTEN/NOTIFYв модель опроса MCP.Наблюдаемость — Prometheus
/metricsendpoint +get_metrics_expositionдля stdio; структурированный журнал аудита с маскированием учётных данных по регулярным выражениям.
Документация
docs/installation.md— установка и настройкаdocs/tour.md— guided-tour по инструментамdocs/cookbook.md— практические рецепты для агентовdocs/tools.md— полный справочникdocs/architecture.md— как детали сочетаютсяdocs/scaling.md— размер пула, реплики, производительностьdocs/security-hardening.md— дорожная карта безопасностиdocs/release-process.md— как релизы попадают в PyPIdocs/adr/— мечти архитектурных решенийПросмотр: https://devopam.github.io/MCPg/
Безопасности| Переменная | По умолчанию | Описание |
| ------------------------------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <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 установке: Gemini → GEMINI_API_KEY или GOOGLE_API_KEY; Qwen → DASHSCOPE_API_KEY или QWEN_API_KEY; Hugging Face → HF_KITE; GitHub Models → GITHUB_TOKEN; DeepInfra → DEEPINFRA_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 → SQL —
translate_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 + Cypher —
list_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 & maintenance —
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для пагинирования миллионов строк.TimescaleDB —
list_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
/metricsendpoint +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 — как релизы попадают в PyPIdocs/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 | Операторы, предоставляющие сетевой сервис, позволяющий пользователям взаимодействовать с |
Эта таблица — отправная точка: для обязательного ответа применительно к вашему конкретному развёртыванию обратитесь к файлу LICENSE вышестоящего расширения и, если это имеет юридическое значение, к собственному юристу.
Отказ от ответственности. Приложены все усилия, чтобы довести MCPg до производственного уровня, однако проект остаётся активно разрабатываемым и может содержать ошибки. Сведения о гарантиях см. в условиях лицензии.
Maintenance
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceUniversal database MCP server connecting to MySQL, PostgreSQL, SQLite, DuckDB and etc.143,388MIT
- AlicenseBqualityBmaintenanceA Model Context Protocol server that enables powerful PostgreSQL database management capabilities including analysis, schema management, data migration, and monitoring through natural language interactions.182,467198AGPL 3.0

Prisma MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceManage Prisma Postgres databases with ease4147,559Apache 2.0- AlicenseNot gradedqualityDmaintenanceA 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
Related MCP Connectors
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Comprehensive PostgreSQL documentation and best practices, including ecosystem tools
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/devopam/MCPg'
If you have feedback or need assistance with the MCP directory API, please join our Discord server