PGMCP
MCP-сервер на Go: агент задает вопросы базе PostgreSQL обычными словами и получает результат запроса
- 540 ★ репозитория
- Последний коммит
Расширенный доступ
Почему такой уровень
- Строка DATABASE_URL дает серверу доступ к чтению вашей базы PostgreSQL, включая персональные данные в таблицах
- Запись закрывает фильтр запросов, поэтому для надежности выдайте пользователю базы право только на чтение и на стороне PostgreSQL
- Текст вопросов уходит во внешний API OpenAI
Установка
- Работает в
Ручная установка
docker run -e DATABASE_URL="postgres://user:pass@host:5432/db" -p 8080:8080 ghcr.io/subnetmarco/pgmcp:latestЗапуск готового образа. Для функций с генерацией SQL добавьте переменную OPENAI_API_KEY.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Строка DATABASE_URL дает серверу доступ к чтению вашей базы PostgreSQL, включая персональные данные в таблицах
- Запись закрывает фильтр запросов, поэтому для надежности выдайте пользователю базы право только на чтение и на стороне PostgreSQL
- Текст вопросов уходит во внешний API OpenAI
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
PGMCP подключает ИИ-ассистента к существующей базе PostgreSQL. Сервер на Go принимает вопрос обычным языком, с помощью языковой модели превращает его в SQL-запрос, выполняет и возвращает таблицу, JSON или CSV. Схему менять не нужно: подойдет любая база, в том числе с таблицами в смешанном регистре. Агенту доступны три инструмента. `ask` отвечает на вопрос и сам отдает большие выборки потоком, `search` ищет текст по всем текстовым колонкам, `stream` постранично отдает очень большие результаты. Сервер слушает HTTP на порту 8080 по пути `/mcp`, к нему подключаются Cursor, Claude Desktop и другие клиенты с поддержкой MCP. Сервер блокирует запись: он отклоняет INSERT, UPDATE, DELETE и подобные команды, ставит тайм-ауты и запускает каждый запрос в транзакции только для чтения. Вместе с сервером собирается клиент pgmcp-client для проверки из терминала, например `./pgmcp-client -ask "What tables do I have?" -format table`.
Для кого. Для разработчиков и аналитиков, которым нужно быстро спрашивать свою базу PostgreSQL из Cursor или Claude Desktop без ручного SQL.
Подходит, если
- Вы осваиваете незнакомую базу и хотите спросить, какие в ней таблицы
- Нужен быстрый ответ вроде «кто из клиентов сделал больше всего заказов»
- Нужно найти значение, например имя, сразу по всем текстовым колонкам инструментом `search`
- Результат нужен в CSV или JSON для отчета, с ограничением числа строк ключом `-max-rows`
Не подходит, если
- База работает на другой СУБД: сервер рассчитан только на PostgreSQL
- Нужен контроль над каждым словом запроса: SQL по вопросу пишет модель, и он может оказаться неточным
- Агент должен менять схему или данные: сервер выполняет только чтение
Пример запроса к агенту
Кто из клиентов сделал больше всего заказов? Покажи пятерых лучших таблицей.MCP
- Транспорт
- http
- Авторизация
- не нужна
Переменные окружения
DATABASE_URLобязательная, секрет- Строка подключения к вашей базе PostgreSQL
OPENAI_API_KEYсекрет- Ключ OpenAI для генерации SQL по вопросу
OPENAI_MODEL- Модель для генерации SQL, по умолчанию gpt-4o-mini
AUTH_BEARERсекрет- Bearer-токен для авторизации запросов к серверу
HTTP_ADDR- Адрес и порт сервера, по умолчанию :8080
HTTP_PATH- Путь MCP-точки, по умолчанию /mcp
Ограничения
Вопрос в SQL превращает модель OpenAI. Нужен ключ `OPENAI_API_KEY`, по умолчанию работает gpt-4o-mini, другую модель задает переменная `OPENAI_MODEL`. Ключ отмечен необязательным, но другого способа получить SQL из вопроса проект не описывает. API OpenAI из России недоступен.
Авторизацию по Bearer-токену включает переменная `AUTH_BEARER`, без нее сервер не проверяет, кто к нему обращается. Задайте токен, если к серверу можно обратиться с других компьютеров.
Лицензия Apache 2.0 указана в репозитории, но GitHub ее не распознает.
Как отключить. Удалите блок `pgmcp` из конфигурации Cursor или Claude Desktop и остановите процесс `pgmcp-server` либо контейнер. В Kubernetes снимите развернутые манифесты из папки `examples/k8s`.
Частые вопросы
Как подключить PGMCP к Cursor?
Запустите `pgmcp-server` с переменной `DATABASE_URL`, затем добавьте в настройки Cursor сервер pgmcp с транспортом http и адресом `http://localhost:8080/mcp`. Готовый фрагмент конфигурации есть в способах установки.
Что будет, если модель напишет неверный SQL?
Сервер продолжит работу. В ответ он вернет описание ошибки, подсказку переформулировать вопрос и исходный SQL, который написала модель.
Можно ли задать несколько вопросов сразу?
Да, в клиенте ключ `-ask` можно повторить: `./pgmcp-client -ask "Show tables" -ask "Count users" -format table`. Ключ `-format` задает вид ответа: таблица, JSON или CSV.
Что делает инструмент search?
Ищет значение сразу по всем текстовым колонкам базы. Из терминала это выглядит так: `./pgmcp-client -search "john" -format table`.
Как запустить PGMCP в Docker или Kubernetes?
В Docker достаточно образа `ghcr.io/subnetmarco/pgmcp:latest` с переменной `DATABASE_URL` и портом 8080. Для Kubernetes в папке `examples/k8s` есть манифесты, а строку подключения кладут в секрет `pgmcp-secret`.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
MCP-серверыpgEdge Postgres MCP
pgEdge Postgres MCP Server
Postgres MCP на Go с запросами в режиме чтения, планами EXPLAIN, поиском по смыслу, несколькими базами, чат-клиентом и веб-интерфейсом
MCP-сервер для PostgreSQL с несколькими базами сразу, описаниями таблиц из каталога, подсказками по PostGIS и pgvector и планами запросов
MCP-сервер и скиллы от TigerData, с которыми агент пишет схемы и запросы PostgreSQL по актуальной документации и практикам
MCP-сервер и REST API для баз данных на Go: PostgreSQL, MySQL, ClickHouse, Snowflake, BigQuery и других, с маскировкой персональных данных и кэшем
Postgres MCP (Microsoft)
Postgres MCP Server (Microsoft)
Postgres MCP от Microsoft: профили подключения с паролями в связке ключей ОС, вход через Entra ID для Azure, запросы, схема, CSV и метрики сервера
SQL-движок на SQLite с плагинами для приложений, баз и файлов: команда anyquery mcp открывает эти данные Claude, Cursor и другим клиентам MCP
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| PGMCP (эта запись) | нет | не нужна | 540 | |
| Postgres MCP Pro | нет | API-ключ | 3 443 | подбор индексов, планы EXPLAIN и проверка здоровья базы |
| PG-MCP Server | нет | не нужна | 540 | несколько баз сразу, подсказки по PostGIS и pgvector |
| DBHub | нет | не нужна | 3 752 | один сервер для PostgreSQL, MySQL, MariaDB, SQL Server и SQLite |
Коротко о README
В репозитории два учебных набора данных: полная схема маркетплейса с тысячами записей и минимальная схема с таблицей «Categories» в смешанном регистре для проверки регистра имен. Тесты на Go делятся на модульные и интеграционные, вторым нужен работающий PostgreSQL. Размер бинарников уменьшают флаги сборки `-ldflags`.