Перейти к основному содержимому

Подключение ChatGPT к Supabase через MCP

ChatGPT может читать данные и выполнять административные SQL-запросы в управляемом Supabase TatNet через отдельный защищённый MCP endpoint. SSH-туннель, настройка API Gateway и прямое подключение PostgreSQL для этого не нужны. English version.

1. Добавьте сервер в ChatGPT​

В веб-интерфейсе ChatGPT откройте Плагины → Добавить → Добавить пользовательский сервер MCP. Возможность добавления сервера зависит от разрешений вашей рабочей области и настроек безопасности ChatGPT.

Укажите название, например «TatNet Supabase», и URL:

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

Выберите OAuth. ChatGPT автоматически определит настройки авторизации и зарегистрирует OAuth-клиент. Пароль Studio, ключ anon и service_role вводить не нужно.

Это отдельное подключение: адрес https://mcp.tatnet.cloud/mcp предназначен для управления платформой и не выдаёт доступ к базам Supabase.

2. Выберите базы и права в TatNet​

После создания подключения ChatGPT откроет вход TatNet и экран согласия:

  1. Выберите аккаунт.
  2. Отметьте конкретные базы. Новые базы не получат доступ автоматически.
  3. Выберите «Чтение» или «Запись» и нажмите «Разрешить доступ».

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

РежимЧто разрешено
ЧтениеСписок разрешённых баз и запросы данных и схемы в read-only транзакции PostgreSQL
ЗаписьДополнительно SQL от владельца базы: изменение схемы, политик и данных
Доступ владельца базы

Даже чтение может включать чувствительные данные, доступные владельцу базы, а не только пользователю вашего приложения. Результаты запросов передаются выбранному ИИ-сервису. Выдавайте доступ только к нужным базам. Запись может привести к необратимым изменениям и удалению данных; это не роль superuser кластера.

В карточке базы в панели TatNet есть тот же URL, инструкция и ссылка на управление доступом. В Studio откройте Connect → MCP. Подключение через TatNet не требует публикации Studio /api/mcp, pg-meta или порта PostgreSQL.

3. Проверьте чтение​

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

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

Ожидаемый результат: ok = 1, read_only = on. В списке должны быть только разрешённые базы.

ИнструментНазначение
list_databasesСписок доступных баз без паролей и служебных ключей
query_databaseОдин запрос с результатом в режиме только чтения
execute_sqlSQL-скрипт от владельца базы; требует разрешения на запись

Обычный запрос ограничен 30 секундами и 100 строками результата. Клиент может запросить до 1000 строк и уменьшить таймаут. query_database не принимает скрипт из нескольких SQL-команд. Для больших выборок используйте пагинацию SQL.

4. Выполняйте административный SQL осознанно​

execute_sql предназначен для изменений, согласованных с вами. Сначала попросите показать SQL и его последствия. Для проверки самого инструмента без изменения таблиц подойдёт скрипт:

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

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

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

5. Отзовите доступ​

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

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

Если подключение не работает​

  • Видны инструменты приложений, но нет баз. Проверьте URL: для Supabase нужен /supabase/mcp.
  • ChatGPT просит подключиться заново. Доступ истёк или отозван; пройдите OAuth повторно, если доступ ещё нужен.
  • Отказ в доступе к SQL. Проверьте выбранную базу и режим подключения. Чтение SQL и запись требуют права account:manage_supabase у создателя подключения; права проверяются при каждом запросе.
  • База приостановлена. Возобновите её из карточки базы в панели TatNet.

Для скриптов и CI доступны публичный API и API-ключи: GET /v1/supabase, POST /v1/supabase/{id}/query и POST /v1/supabase/{id}/sql. MCP использует тот же API и те же проверки прав. Нативное подключение postgres:// к управляемому Supabase не предоставляется.