BigChatHub
← Все MCP и навыки

MCP-сервер · Базы данных

Postgres MCP Pro

MCP-сервер сообщества Crystal DBA для PostgreSQL: выполняет SQL, показывает планы запросов, проверяет здоровье базы и подбирает индексы. Работает в режиме полного доступа для разработки или в ограниченном режиме только для чтения.

Сверено 21 октября 2026 г.

Что умеет сервер

Postgres MCP Pro выпускает компания Crystal DBA, это открытый проект сообщества, а не сервер от разработчиков самой PostgreSQL. Он написан на Python, опубликован как пакет postgres-mcp и как Docker-образ crystaldba/postgres-mcp. В отличие от простых серверов, которые только выполняют запросы, этот добавляет инструменты для диагностики: список схем и объектов, подробности о таблице (столбцы, ограничения, индексы), выполнение SQL, план запроса через explain_query, самые медленные запросы по данным pg_stat_statements, рекомендации по индексам для всей нагрузки или для десятка выбранных запросов и общую проверку здоровья базы.

Проверка здоровья охватывает кеш буферов, подключения, ограничения, дублирующиеся, неиспользуемые и невалидные индексы, пределы последовательностей и состояние вакуума. Для подбора индексов сервер использует расширение hypopg: он моделирует, как планировщик PostgreSQL построит план после добавления индекса, и сравнивает выигрыш в скорости с ценой хранения. Авторы подчёркивают, что эти проверки детерминированные, а не догадки модели.

Когда использовать

Сервер полезен, когда приложение стало медленно работать с базой и нужно понять почему: агент найдёт тяжёлые запросы, покажет план, предложит индексы и проверит их эффект до того, как вы их создадите. Он же подойдёт на этапе разработки, когда агенту нужна точная схема, чтобы писать корректный SQL, например при работе с ORM в Cursor. README приводит такой пример: приложение с медленным кодом SQLAlchemy ускорили за несколько минут.

Для индексной диагностики придётся подключить расширения pg_stat_statements и hypopg, на managed-сервисах AWS RDS, Azure SQL и Google Cloud SQL их достаточно включить командой CREATE EXTENSION.

Ограничения и безопасность

Сервер умеет работать в двух режимах доступа. В режиме unrestricted агент может читать и менять данные и схему, это вариант для разработки. В режиме restricted разрешены только транзакции на чтение, а время выполнения ограничено, этот режим авторы рекомендуют для продакшена. Чтобы агент не обошёл защиту командами COMMIT или ROLLBACK, сервер разбирает SQL библиотекой pglast и отклоняет такие операторы. README честно оговаривает слабое место: если в базе включены небезопасные процедурные языки, защиту на чтение можно обойти, поэтому для боевых данных надёжнее ещё и завести отдельного пользователя только с правом чтения.

Строка подключения передаётся при запуске, обычно в конфигурации клиента. Авторы замечают, что мало какие клиенты хранят такие конфигурации безопасно, а пароль в чате или в аргументах инструмента попадает в историю диалога, так что не вставляйте боевые пароли в чат. Проект тестируется на PostgreSQL 15, 16 и 17, поддержку версий с 13 по 17 планируют. Для запуска нужен Docker либо Python 3.12 и новее. Экспериментальный подбор индексов силами модели требует ключа OPENAI_API_KEY.

Установка

Docker

Скачайте образ:

docker pull crystaldba/postgres-mcp

Python

С pipx:

pipx install postgres-mcp

Либо с uv:

uv pip install postgres-mcp

Claude Desktop

Откройте файл конфигурации (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%/Claude/claude_desktop_config.json) и добавьте сервер в раздел mcpServers. Вариант с Docker:

{
  "mcpServers": {
    "postgres": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "DATABASE_URI",
        "crystaldba/postgres-mcp",
        "--access-mode=unrestricted"
      ],
      "env": {
        "DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
      }
    }
  }
}

Вариант с uvx:

{
  "mcpServers": {
    "postgres": {
      "command": "uvx",
      "args": [
        "postgres-mcp",
        "--access-mode=unrestricted"
      ],
      "env": {
        "DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
      }
    }
  }
}

Для продакшена замените --access-mode=unrestricted на --access-mode=restricted: тогда разрешены только транзакции на чтение.

Cursor и Windsurf

Конфигурация похожа на ту, что для Claude Desktop. В Cursor откройте Command Palette, затем Cursor Settings и вкладку MCP. В Windsurf откройте Command Palette и выберите Open Windsurf Settings Page.

Если сервер запущен по SSE (--transport=sse), например так:

docker run -p 8000:8000 \
  -e DATABASE_URI=postgresql://username:password@localhost:5432/dbname \
  crystaldba/postgres-mcp --access-mode=unrestricted --transport=sse

то в mcp.json Cursor указывается адрес сервера:

{
    "mcpServers": {
        "postgres": {
            "type": "sse",
            "url": "http://localhost:8000/sse"
        }
    }
}

В mcp_config.json Windsurf формат немного другой:

{
    "mcpServers": {
        "postgres": {
            "type": "sse",
            "serverUrl": "http://localhost:8000/sse"
        }
    }
}

Расширения для индексов

Чтобы работали подбор индексов и анализ нагрузки, включите расширения в базе:

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS hypopg;

Совместимые клиенты

  • Claude Desktop
  • Cursor
  • Windsurf
  • Goose
  • Qodo Gen

Связанные инструменты

РепозиторийСайт