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
Подключите свои проекты Supabase к Cursor, Claude, Windsurf и другим AI-ассистентам.
Протокол 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 проекта.
Ресурсы
- Model Context Protocol: Узнайте больше о MCP и его возможностях.
- От разработки до продакшена: Узнайте, как безопасно продвигать изменения в производственные среды.
Для разработчиков
См. CONTRIBUTING для получения подробной информации о том, как внести вклад в этот проект.
Лицензия
Этот проект лицензирован под Apache 2.0. См. файл LICENSE для получения подробной информации.