Supabase MCP
официальныйОфициальный MCP-сервер Supabase для управления проектами Supabase, базами данных, аутентификацией, хранилищем, edge-функциями и SQL-процессами из AI-агентов.
Что можно делать с Supabase MCP?
- Manage database tables — Попросите ассистента создать, изменить или удалить таблицы в вашем проекте Supabase с помощью инструментов MCP, таких как
create_tableиalter_table. - Query project data — Поручите вашему ИИ выполнять SQL-запросы только для чтения к вашей базе данных, извлекая строки, фильтруя результаты или проверяя схему без написания кода.
- Fetch project configuration — Попросите ассистента получить настройки проекта, данные для подключения или информацию об окружении с помощью таких инструментов, как
get_project_url, чтобы упростить задачи настройки. - Restrict tool access by feature — Настройте ваше MCP-подключение, чтобы ограничить доступные инструменты конкретными группами функций (например,
databaseилиdocs) или включите режим только для чтения для более безопасного взаимодействия с ИИ. - Integrate with AI SDK clients — Используйте
createToolSchemas()для генерации типизированных схем ввода/вывода для MCP-клиента Vercel AI SDK, что обеспечивает статическую проверку инструментов в ваших приложениях.
Документация
Сервер 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.
Self-hosted
Для самостоятельно размещенного Supabase обратитесь к странице Включение MCP-сервера. В настоящее время MCP-сервер в средах self-hosted предлагает ограниченный набор инструментов и не поддерживает 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, который не является зависимостью этого пакета. Установите его вместе с пакетом.
Другие MCP-серверы
@supabase/mcp-server-postgrest
MCP-сервер PostgREST позволяет подключать ваших пользователей к вашему приложению через REST API. Подробнее см. в README проекта.
Ресурсы
- Model Context Protocol: Узнайте больше о MCP и его возможностях.
- От разработки до продакшена: Узнайте, как безопасно переносить изменения в производственные среды.
Для разработчиков
См. CONTRIBUTING для получения подробной информации о том, как внести вклад в этот проект.
Лицензия
Этот проект лицензирован под Apache 2.0. См. файл LICENSE для получения подробной информации.