Skip to content
Назад к статьям
Руководство4 мин чтения

Как подключить MCP-сервер Supabase к Claude Code

Supabase подключается к Claude Code одной командой через хостируемый MCP-сервер: OAuth или personal access token, project_ref, read_only и какие инструменты разрешить.

SupabaseClaude CodeMCPPostgreSQLCouncil
Заголовок Supabase inside Claude Code рядом с карточкой в стиле терминала: команда claude mcp add для mcp.supabase.com с project_ref и read_only, строка об успешном OAuth-подключении и вызов list_tables, в подвале — чтение разрешено, запись спрашивает

У Supabase есть хостируемый MCP-сервер по адресу https://mcp.supabase.com/mcp, и Claude Code начинает с ним работать после одной команды. Локально ничего ставить не нужно. Ниже короткая версия: команда, два способа авторизации, три параметра в URL, которые делают подключение безопасным, и правила разрешений, которыми пользуюсь я. Это «половина про Supabase» из статьи про три сервера, на которых держится Council; про RevenueCat есть отдельный текст.

Добавляем сервер

claude mcp add --scope project --transport http supabase \
  "https://mcp.supabase.com/mcp?project_ref=<your-project-ref>&read_only=true"

--scope project записывает сервер в .mcp.json в корне репозитория, так что его получает каждая сессия в этом репозитории и каждый коллега. Здесь это безопасно: в URL нет секретов. Файл получается таким:

{
  "mcpServers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp?project_ref=<your-project-ref>&read_only=true"
    }
  }
}

Project ref — короткий идентификатор из адреса проекта в дашборде Supabase: https://supabase.com/dashboard/project/<your-project-ref>.

OAuth или personal access token

OAuth работает по умолчанию. Хостируемый сервер использует динамическую регистрацию клиента, поэтому ни OAuth-приложение создавать, ни токен хранить не нужно. Внутри Claude Code выполните /mcp, выберите supabase, нажмите Authenticate: откроется браузер, где нужно войти и выбрать организацию, в которой живёт проект. Документация Supabase советует делать это из обычного терминала, а не из расширения для IDE; у меня так и было.

Personal access token нужен в CI и в клиентах без поддержки OAuth. Создайте его на странице https://supabase.com/dashboard/account/tokens, ограничьте одним проектом и передайте заголовком:

claude mcp add --transport http supabase \
  "https://mcp.supabase.com/mcp?project_ref=<your-project-ref>&read_only=true" \
  --header "Authorization: Bearer sbp_..."

В этом варианте --scope project не используйте: этот scope пишет в .mcp.json, который рассчитан на коммит, и токен уехал бы в репозиторий вместе с ним.

В npm по-прежнему лежит пакет @supabase/mcp-server-supabase для self-hosting и AI SDK, но для Claude Code документация описывает именно хостируемый сервер, и начинать я бы советовал с него.

Три параметра, которые стоит задать

  • project_ref ограничивает сервер одним проектом и отключает инструменты уровня аккаунта (list_projects, create_project, pause_project). Без него ассистент видит все проекты организации. Я веду несколько продуктов из соседних папок, и для меня это разница между доступом к одной базе и доступом ко всем.
  • read_only=true выполняет каждый запрос от имени Postgres-пользователя только для чтения. Запись не проходит на уровне базы, а не на уровне промпта.
  • features ограничивает группы инструментов, через запятую: features=database,docs,debugging хватает для большинства сессий.

Как проверить, что всё работает

Попросите что-нибудь, что только читает:

Какие таблицы есть в базе и есть ли индекс по anon_id?

Claude Code должен вызвать list_tables и ответить по живой схеме. Если он отвечает по файлу миграции, сервер не подключён: причину покажет /mcp.

Что он умеет

Группа Примеры инструментов По умолчанию
Database list_tables, list_migrations, apply_migration, execute_sql включена
Debugging query_logs, get_advisors включена
Development get_project_url, get_publishable_keys, generate_typescript_types включена
Edge Functions list_edge_functions, deploy_edge_function включена
Docs search_docs включена
Account list_projects, create_project, get_cost выключена при project_ref
Branching create_branch, merge_branch экспериментальная, платные планы
Storage list_storage_buckets, update_storage_config выключена

В Council больше всего пользы принесла группа Debugging. get_advisors находит таблицы без политик row-level security, а через query_logs я нашёл причину падавшего в продакшене вебхука RevenueCat: ошибка была в логе Postgres, а не в логе приложения. Второй выигрыш — проверка дрейфа схемы. Вопрос «совпадает ли задеплоенная схема с файлами миграций» ловит ошибки, которые раньше я находил, только когда уже что-то подозревал.

Чтение разрешить, запись пусть спрашивает

MCP-инструменты проходят через обычную систему разрешений Claude Code. В .claude/settings.json у Council инструменты чтения работают без подтверждения:

{
  "permissions": {
    "allow": [
      "mcp__supabase__list_tables",
      "mcp__supabase__list_migrations",
      "mcp__supabase__get_advisors",
      "mcp__supabase__search_docs"
    ]
  }
}

execute_sql и apply_migration по-прежнему спрашивают, даже в режиме только для чтения: я хочу видеть запрос до того, как он выполнится.

Не подключайте продакшен без read_only

Сервер действует с вашими правами разработчика, поэтому это внутренний инструмент, а не то, с чем общается конечный пользователь. Отсюда две привычки. В интерактивной работе подключайтесь к продакшену только когда задача этого требует, с заданными project_ref и read_only=true, и оставляйте ручное подтверждение для всего, что пишет. Для автоматических сценариев заранее разрешайте только инструменты чтения, ограниченные одним проектом, и пусть они выдают рекомендации, а не вносят изменения. Причина — prompt injection: текст, который читает ассистент, будь то тикет в поддержку или строка в таблице, может попытаться уговорить его выполнить запрос. Postgres-пользователь только для чтения — страховка на случай, когда промпт не справился.

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

Pavel Smolin · 28 октября 2026 г.

Похожие статьи

Руководство3 мин чтения

Как подключить MCP-сервер RevenueCat к Claude Code

RevenueCat подключается к Claude Code двумя командами: официальный плагин или хостируемый MCP-сервер. OAuth или API-ключ, проверка и какие инструменты разрешить.

Руководство9 мин чтения

Поставьте дешёвое суждение перед дорогим: как типизированный фильтр снижает задержку и стоимость LLM-пайплайна

Три топовые модели совещаются пятнадцать секунд. Суждение за 300 мс перед ними отсекает мусор и снимает ожидание, в котором не нуждались 82% запусков.