PGMCP

MCP-сервер на Go: агент задает вопросы базе PostgreSQL обычными словами и получает результат запроса

  • 540 ★ репозитория
  • Последний коммит
MCP-сервер

Расширенный доступ

Почему такой уровень

  • Строка DATABASE_URL дает серверу доступ к чтению вашей базы PostgreSQL, включая персональные данные в таблицах
  • Запись закрывает фильтр запросов, поэтому для надежности выдайте пользователю базы право только на чтение и на стороне PostgreSQL
  • Текст вопросов уходит во внешний API OpenAI
Все причины и проверки

subnetmarco/pgmcp

Установка

Ручная установка

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-серверРасширенный доступ241Звезды репозитория

MCP-сервер для PostgreSQL с несколькими базами сразу, описаниями таблиц из каталога, подсказками по PostGIS и pgvector и планами запросов

MCP-серверРасширенный доступ540Звезды репозитория
Официальный

MCP-сервер и скиллы от TigerData, с которыми агент пишет схемы и запросы PostgreSQL по актуальной документации и практикам

MCP-серверРасширенный доступ1,9 тыс.Звезды репозитория

MCP-сервер и REST API для баз данных на Go: PostgreSQL, MySQL, ClickHouse, Snowflake, BigQuery и других, с маскировкой персональных данных и кэшем

MCP-серверШирокий доступ549Звезды репозитория

Postgres MCP (Microsoft)

Postgres MCP Server (Microsoft)

Postgres MCP от Microsoft: профили подключения с паролями в связке ключей ОС, вход через Entra ID для Azure, запросы, схема, CSV и метрики сервера

MCP-серверШирокий доступ68Звезды репозитория

SQL-движок на SQLite с плагинами для приложений, баз и файлов: команда anyquery mcp открывает эти данные Claude, Cursor и другим клиентам MCP

MCP-серверШирокий доступ1,8 тыс.Звезды репозитория

Сравнение с похожими

Записи с тем же главным запросом: чем они отличаются.

ЗаписьОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
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`.

Бейдж для README

Сообщить о проблеме

Foxx AIPGMCP
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.