MCP-сервер для PostgreSQL: запросы к базе через ИИ-агента
Как подключить PostgreSQL к локальному ИИ-агенту через MCP, задавать вопросы к данным обычными словами и ограничить доступ режимом чтения.
Чтобы ответить на разовый вопрос по данным, часто приходится отвлекать аналитика: найти нужные таблицы, вспомнить связи, написать SQL, выгрузить результат. MCP-сервер для PostgreSQL позволяет пройти тот же путь через агента. Ты задаёшь вопрос обычными словами, агент изучает схему, строит запрос и объясняет результат.
Какие задачи подходят
Лучше всего начинать с чтения и разведки:
- описать таблицы и связи в незнакомой базе;
- посчитать заказы, регистрации или ошибки за период;
- найти выбросы и пропуски в данных;
- подготовить SQL для отчёта и объяснить каждую часть запроса.
А вот удаление строк, миграции и массовые обновления — плохой первый сценарий. Даже хорошая модель может неверно понять бизнес-условие. MCP ускоряет работу с PostgreSQL, но транзакции и резервные копии от этого не становятся необязательными.
Сначала отдельный пользователь
Не подключай агента под владельцем базы. Создай отдельную роль, разреши ей подключение,
доступ к нужной схеме и SELECT только на нужные таблицы. Если есть реплика для
аналитики, используй её вместо основной базы.
Также стоит ограничить время выполнения запросов и число возвращаемых строк. Это
защищает не только от ошибки модели: обычный неудачный запрос без LIMIT тоже способен
надолго занять рабочую базу.
«Локальная модель» не спасает от слишком широких прав в PostgreSQL. Главная защита — отдельная роль только для чтения и доступ к минимальному набору данных.
Как подключить PostgreSQL в Доке
Для быстрого теста подойдёт эталонный пакет @modelcontextprotocol/server-postgres.
В Доке открой вкладку «MCP-серверы», добавь сервер и укажи:
- Название:
PostgreSQL — аналитика. - Команда:
npx. - Аргументы, каждый с новой строки:
-y,@modelcontextprotocol/server-postgres, затем строку подключения видаpostgresql://readonly:пароль@localhost:5432/analytics.
Сохрани сервер и попроси: «опиши доступные схемы и таблицы, не выполняй изменения». Если выбираешь другой MCP-сервер, бери команду и имя переменной со строкой подключения из его README: реализации отличаются и не все принимают параметры одинаково.
Строка подключения содержит пароль и хранится в локальной конфигурации приложения. Для постоянной работы лучше выбрать сервер, который принимает секрет через переменную окружения, или использовать пароль с минимальными правами и регулярно его менять.
Данные действительно не уходят наружу?
Если PostgreSQL находится на твоём компьютере или во внутренней сети, MCP-сервер запущен локально, а в Доке выбрана локальная модель, запрос и результат не нужно отправлять в облачный ИИ. Это и есть приватный контур.
Но «локально» не равно «автоматически безопасно». Результат может попасть в журнал, экспорт чата или резервную копию компьютера. Для персональных и финансовых данных нужны те же правила хранения, что и для обычной аналитической выгрузки.
Как проверить качество ответа
Проси агента показывать SQL до выполнения и объяснять, почему выбраны именно эти таблицы и фильтры. Для важных цифр полезно сверить результат контрольным запросом. Хорошая формулировка выглядит так:
Найди число оплаченных заказов за июнь. Сначала покажи SQL. Используй только чтение, добавь разумный
LIMITдля примеров и отдельно перечисли свои допущения.
Общий сценарий для разных СУБД разобран в статье про базы данных через MCP, а Доку можно скачать бесплатно.