К управляемому Supabase в Татнет теперь можно подключить ChatGPT: попросить посмотреть схему, выполнить запрос или подготовить изменение базы. Подключение работает через защищённый MCP endpoint и вход TatNet. SSH-туннель и самостоятельная настройка API Gateway не нужны.

Ниже — путь от добавления сервера до проверочного запроса. Для начала достаточно дать чтение одной базы. Административный SQL включается отдельно, на экране согласия.

Что умеет подключение

У Supabase свой адрес MCP:

https://mcp.tatnet.cloud/supabase/mcp

На нём доступны три инструмента:

ИнструментЧто делает
list_databasesПоказывает базы, к которым вы разрешили доступ, без паролей и служебных ключей
query_databaseВыполняет один запрос в режиме только чтения PostgreSQL
execute_sqlВыполняет SQL-скрипт от владельца базы, если вы разрешили запись

Это отдельное подключение от общего MCP Татнет для управления приложениями. Если вы уже подключали сервер с адресом /mcp, он автоматически не получил доступ к базам. Для Supabase добавьте сервер с окончанием /supabase/mcp.

Подключаем ChatGPT

В веб-интерфейсе ChatGPT откройте Плагины → Добавить → Добавить пользовательский сервер MCP. Введите название, например «TatNet Supabase», вставьте адрес выше и выберите OAuth.

ChatGPT сам найдёт настройки авторизации и зарегистрирует OAuth-клиент. Возможность добавлять собственные серверы зависит от разрешений рабочей области и настроек безопасности ChatGPT. Актуальный порядок описан также в документации OpenAI.

После создания подключения откроется TatNet. Войдите в свой аккаунт и на экране согласия:

  1. Выберите аккаунт, если у вас их несколько.
  2. Отметьте конкретную базу или несколько баз.
  3. Оставьте «Чтение» для первого теста и разрешите доступ.

Новые базы не добавляются к разрешению автоматически. Подключение к Supabase не открывает приложения, виртуальные машины и оплату.

Тот же URL и инструкцию можно найти в карточке базы в панели Татнет, а внутри Studio — в Connect → MCP. Существующая Studio получает обновлённый экран при открытии из панели Татнет. Пароль Studio, ключ anon и service_role вводить в ChatGPT не нужно.

Первый запрос — без чтения таблиц приложения

Откройте чат с созданным плагином и попросите:

Через TatNet Supabase вызови list_databases. Для выбранной мной базы выполни query_database с SQL SELECT 1 AS ok, current_setting('transaction_read_only') AS read_only. Не читай таблицы приложения и не меняй данные.

Ожидаемый результат:

okread_only
1on

Так можно проверить связь и режим транзакции, не передавая ассистенту содержимое клиентских таблиц. В списке баз должны быть только те, которые вы отметили при подключении.

Дальше можно просить показать колонки таблицы, объяснить результат запроса или найти причину ошибки SQL. Лучше указывать базу по имени и задавать небольшой лимит строк: обычный результат ограничен 100 строками, максимальный — 1000. Таймаут по умолчанию составляет 30 секунд. Для больших выборок используйте пагинацию в самом SQL.

Что означает «Чтение»

query_database запускает запрос в read-only транзакции PostgreSQL. Через него нельзя выполнить скрипт из нескольких команд или переключить транзакцию в режим записи.

При этом чтение — это доступ к данным владельца базы. Он может включать чувствительные строки, которые недоступны обычному пользователю приложения через его политики RLS. Результаты запросов уходят выбранному ИИ-сервису. Поэтому начинайте с нужной базы и выбирайте, какие данные передавать в разговор.

Права проверяются на каждом вызове. Если у создателя подключения уберут право управлять Supabase, исчезнет и доступ к SQL через это подключение.

Когда нужен административный SQL

Для execute_sql на экране согласия нужно выбрать «Запись». Это полномочия владельца выбранной базы: можно создавать и менять таблицы, политики и данные, в том числе удалять их. Superuser-доступ к кластеру не выдаётся.

Перед изменением попросите ассистента показать SQL и объяснить последствия. Подтверждение выполнения зависит от MCP-клиента: само разрешение на запись уже даёт серверу право исполнить запрос в пределах выбранной базы.

Проверить инструмент без изменения таблиц можно таким скриптом:

BEGIN;
SET LOCAL application_name = 'tatnet-mcp-check';
SELECT current_setting('application_name') AS marker;
ROLLBACK;

Он вернёт tatnet-mcp-check, меняя только настройку текущей сессии внутри транзакции. Это проверка выполнения скрипта, а не пробное изменение схемы.

После таймаута административного запроса сначала проверьте состояние базы. Часть действий могла успеть выполниться. Сервер не повторяет запись автоматически; повторять её вручную вслепую тоже не стоит.

Как отключить доступ

В панели Татнет откройте API-ключи → Подключённые приложения. Найдите подключение ChatGPT, проверьте имя базы и уровень доступа, затем отключите его.

Следующий вызов получит отказ, а ChatGPT предложит авторизоваться заново. Отзыв не отменяет уже выполненный SQL и не удаляет предыдущие ответы из чата.

Мы проверили этот путь в настоящем ChatGPT: OAuth, список из одной разрешённой базы, запрос в режиме чтения, SQL с настройкой текущей сессии и отказ после отзыва доступа. При проверке таблицы и данные приложения не менялись.

Если подключение нужно скрипту

Те же операции доступны в публичном API Татнет:

  • GET /v1/supabase — список разрешённых баз;
  • POST /v1/supabase/{id}/query — чтение;
  • POST /v1/supabase/{id}/sql — административный SQL.

Для скрипта используется API-ключ с нужными действиями и областью конкретных баз. MCP обращается к этому же API, поэтому проверки прав совпадают. Прямой postgres://-доступ для этого сценария не требуется и в управляемом Supabase Татнет не предоставляется.

Подробности и варианты устранения ошибок — в инструкции по подключению. Если вы только выбираете базу, начните с обзора Supabase в России.