Supabase MCP

официальный

Официальный MCP-сервер Supabase для управления проектами Supabase, базами данных, аутентификацией, хранилищем, edge-функциями и SQL-процессами из AI-агентов.

Что можно делать с Supabase MCP?

  • Управление таблицами базы данных — Попросите ассистента создать, изменить или удалить таблицы в базе данных вашего проекта Supabase.
  • Запросы и просмотр данных — Позвольте ассистенту выполнять SQL-запросы или получать содержимое таблиц, чтобы отвечать на вопросы о ваших данных.
  • Получение конфигурации проекта — Запросите сведения о настройках вашего проекта Supabase, например информацию о подключении или флаги функций.
  • Ограничение области доступа — Настройте сервер с read_only=true или project_ref, чтобы ограничить инструменты безопасными операциями, специфичными для проекта.

Размещённый MCP-сервер

npx add-mcp 'https://mcp.supabase.com/mcp'

Устанавливается в Claude Code, Codex, Cursor и другие

Документация

Сервер Supabase MCP

MCP Registry Version

Подключите свои проекты Supabase к Cursor, Claude, Windsurf и другим AI-ассистентам.

supabase-mcp-demo

Протокол Model Context Protocol (MCP) стандартизирует взаимодействие больших языковых моделей (LLM) с внешними сервисами, такими как Supabase. Он напрямую связывает AI-ассистентов с вашим проектом Supabase и позволяет им выполнять такие задачи, как управление таблицами, получение конфигурации и запросы к данным. См. полный список инструментов.

Настройка

1. Следуйте нашим рекомендациям по безопасности

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

2. Настройте свой MCP-клиент

Чтобы настроить сервер Supabase MCP на вашем клиенте, посетите нашу документацию по настройке. Вы также можете сгенерировать пользовательский MCP-URL для вашего проекта, посетив вкладку подключения MCP в панели управления Supabase.

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

Большинство MCP-клиентов требуют следующую информацию:

{
  "mcpServers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp"
    }
  }
}

Если вы не видите свой MCP-клиент в нашей документации, обратитесь к документации MCP вашего клиента и скопируйте указанную выше информацию MCP в ожидаемый ими формат (json, yaml и т. д.).

CLI

Если вы запускаете Supabase локально с помощью Supabase CLI, вы можете получить доступ к MCP-серверу по адресу http://localhost:54321/mcp. В настоящее время MCP-сервер в средах CLI предлагает ограниченный набор инструментов и не поддерживает OAuth 2.1.

Самостоятельное размещение

Для самостоятельно размещенного Supabase обратитесь к странице Включение MCP-сервера. В настоящее время MCP-сервер в средах самостоятельного размещения предлагает ограниченный набор инструментов и не поддерживает OAuth 2.1.

Параметры конфигурации и инструменты

См. документацию Supabase MCP Server для получения полного списка доступных инструментов и параметров конфигурации.

Документация также включает интерактивный конструктор URL для заполнения параметров конфигурации.

Использование с MCP-клиентом AI SDK

Пакет @supabase/mcp-server-supabase экспортирует createToolSchemas() для заполнения схем ввода и вывода для MCP-клиента Vercel AI SDK. Это позволяет рассматривать инструменты Supabase MCP как статические инструменты с проверкой на стороне клиента и выведенными типами TypeScript для их входов и выходов.

import { createToolSchemas } from '@supabase/mcp-server-supabase';
import { createMCPClient } from '@ai-sdk/mcp';
import { streamText } from 'ai';

const mcpClient = await createMCPClient({
  transport: {
    type: 'http',
    url: 'https://mcp.supabase.com/mcp',
  },
});

const tools = await mcpClient.tools({
  schemas: createToolSchemas(),
});

const result = streamText({ model, tools, prompt: '...' });

for (const step of await result.steps) {
  for (const toolResult of step.staticToolResults) {
    if (toolResult.toolName === 'get_project_url') {
      toolResult.input;  // { project_id: string }
      toolResult.output; // { url: string }
    }
  }
}

createToolSchemas() принимает параметры фильтрации, аналогичные параметрам URL MCP-сервера:

  • features: Ограничение конкретными группами функций (например, ['database', 'docs']). По умолчанию — все группы функций по умолчанию.
  • projectScoped: При значении true исключает project_id из схем ввода инструментов и исключает инструменты уровня учетной записи — используйте при подключении к серверу, настроенному с project_ref. По умолчанию — false.
  • readOnly: При значении true исключает изменяющие инструменты — используйте при подключении к серверу, настроенному с read_only=true. По умолчанию — false.
const mcpClient = await createMCPClient({
  transport: {
    type: 'http',
    url: 'https://mcp.supabase.com/mcp?project_ref=<project-ref>&read_only=true&features=database,docs',
  },
});

const tools = await mcpClient.tools({
  schemas: createToolSchemas({
    features: ['database', 'docs'],
    projectScoped: true,
    readOnly: true,
  }),
});

[!NOTE] Этот сервер не отправляет structuredContent в результатах инструментов MCP. AI SDK возвращается к разбору JSON из текста content.

Для получения дополнительной информации см. Определение схемы и Типизированные выходные данные инструментов в документации AI SDK.

Самостоятельное размещение MCP-конечной точки

Пакет @supabase/mcp-server-supabase экспортирует createSupabaseMcpHandler() для обслуживания инструментов по HTTP с вашей собственной конечной точки. Он принимает те же SupabaseMcpServerOptions, что и createSupabaseMcpServer(), наиболее важно — platform.

Обработчик поддерживает только текущую версию протокола. Он создается с legacy: 'reject', поэтому клиент, поддерживающий только протокол эпохи 2025 года, получит HTTP 400 вместо обслуживания.

Когда platform содержит учетные данные для каждого запроса, создавайте обработчик для каждого запроса и закрывайте его после завершения ответа. Обработчик замыкается на platform, который вы предоставляете, поэтому общий обработчик обслуживает каждый запрос с этой платформой.

Долгоживущий обработчик подходит, когда platform предназначен для совместного использования, например, токен сервисной учетной записи. Создайте его один раз и close() при завершении работы, а не для каждого ответа, поскольку close() разрушает маршрутизатор подписок и отклоняет последующие запросы.

import { createServer } from 'node:http';
import { toNodeHandler } from '@modelcontextprotocol/node';
import { createSupabaseMcpHandler } from '@supabase/mcp-server-supabase';
import { createSupabaseApiPlatform } from '@supabase/mcp-server-supabase/platform/api';

const server = createServer((req, res) => {
  const accessToken = getAccessTokenFromRequest(req); // your own auth

  const handler = createSupabaseMcpHandler({
    platform: createSupabaseApiPlatform({ accessToken }),
  });

  // `close()` aborts in-flight exchanges, so close on `res` finishing rather
  // than when the handler resolves, which would cut streaming responses short.
  res.on('close', () => {
    handler.close().catch((error) => console.error(error));
  });

  toNodeHandler(handler)(req, res).catch((error) => console.error(error));
});

toNodeHandler поставляется из @modelcontextprotocol/node. Ваш код импортирует его напрямую, поэтому установите его вместе.

Наблюдаемость

Передайте observer в createSupabaseMcpServer для сбора результатов жизненного цикла запросов и встроенных фактов Supabase. Здесь platform — ваш существующий адаптер платформы:

import { createSupabaseMcpServer } from '@supabase/mcp-server-supabase';

const server = createSupabaseMcpServer({
  platform,
  observer: (context) => ({
    record(fact) {
      console.info(fact);
    },
    end(result) {
      console.info({ ...context, ...result });
    },
  }),
});

Сервер не автоматически пересылает полезные данные запросов или ответов наблюдателю. Встроенные факты Supabase используют закрытый набор ограниченных полей и значений; пользовательские факты не получают автоматической проверки конфиденциальности. Пропуск observer пропускает всю работу по наблюдению. Сбои наблюдателя, классификатора и приемника не изменяют поведение запросов, но синхронная работа наблюдателя и классификатора может блокировать запросы.

Другие MCP-серверы

@supabase/mcp-server-postgrest

MCP-сервер PostgREST позволяет подключать ваших пользователей к вашему приложению через REST API. Подробнее см. в README проекта.

Ресурсы

Для разработчиков

См. CONTRIBUTING для получения подробной информации о том, как внести вклад в этот проект.

Лицензия

Этот проект лицензирован под Apache 2.0. См. файл LICENSE для получения подробной информации.