Supabase MCP
offiziellOffizieller Supabase MCP-Server zur Verwaltung von Supabase-Projekten, Datenbanken, Authentifizierung, Speicher, Edge Functions und SQL-Workflows über KI-Agenten.
Was kann man mit Supabase MCP machen?
- Manage database tables — Bitten Sie Ihren Assistenten, Tabellen in Ihrem Supabase-Projekt über MCP-Tools wie
create_tableundalter_tablezu erstellen, zu ändern oder zu löschen. - Query project data — Weisen Sie Ihre KI an, schreibgeschützte SQL-Abfragen gegen Ihre Datenbank auszuführen, Zeilen abzurufen, Ergebnisse zu filtern oder das Schema zu inspizieren, ohne Code zu schreiben.
- Fetch project configuration — Lassen Sie Ihren Assistenten Projekteinstellungen, Verbindungsdetails oder Umgebungsinformationen mithilfe von Tools wie
get_project_urlabrufen, um Einrichtungsaufgaben zu optimieren. - Restrict tool access by feature — Konfigurieren Sie Ihre MCP-Verbindung, um verfügbare Tools auf bestimmte Funktionsgruppen (z. B.
databaseoderdocs) zu beschränken, oder aktivieren Sie den schreibgeschützten Modus für sicherere KI-Interaktionen. - Integrate with AI SDK clients — Verwenden Sie
createToolSchemas(), um typisierte Eingabe-/Ausgabeschemas für den MCP-Client des Vercel AI SDK zu generieren und so eine statische Tool-Validierung in Ihren Apps zu ermöglichen.
Dokumentation
Supabase MCP Server
Verbinden Sie Ihre Supabase-Projekte mit Cursor, Claude, Windsurf und anderen KI-Assistenten.
Das Model Context Protocol (MCP) standardisiert, wie Large Language Models (LLMs) mit externen Diensten wie Supabase kommunizieren. Es verbindet KI-Assistenten direkt mit Ihrem Supabase-Projekt und ermöglicht ihnen Aufgaben wie das Verwalten von Tabellen, das Abrufen von Konfigurationen und das Abfragen von Daten. Siehe die vollständige Liste der Tools.
Einrichtung
1. Befolgen Sie unsere Sicherheitsempfehlungen
Bevor Sie den MCP-Server einrichten, empfehlen wir Ihnen, unsere Sicherheitsempfehlungen zu lesen, um die Risiken der Verbindung eines LLM mit Ihren Supabase-Projekten zu verstehen und wie Sie diese mindern können.
2. Konfigurieren Sie Ihren MCP-Client
Um den Supabase MCP-Server auf Ihrem Client zu konfigurieren, besuchen Sie unsere Einrichtungsdokumentation. Sie können auch eine benutzerdefinierte MCP-URL für Ihr Projekt generieren, indem Sie den MCP-Verbindungs-Tab im Supabase-Dashboard aufrufen.
Ihr MCP-Client wird Sie während der Einrichtung automatisch auffordern, sich bei Supabase anzumelden. Stellen Sie sicher, dass Sie die Organisation auswählen, die das Projekt enthält, mit dem Sie arbeiten möchten.
Die meisten MCP-Clients benötigen die folgenden Informationen:
{
"mcpServers": {
"supabase": {
"type": "http",
"url": "https://mcp.supabase.com/mcp"
}
}
}
Wenn Sie Ihren MCP-Client nicht in unserer Dokumentation aufgeführt finden, prüfen Sie die MCP-Dokumentation Ihres Clients und kopieren Sie die obigen MCP-Informationen in das erwartete Format (json, yaml usw.).
CLI
Wenn Sie Supabase lokal mit Supabase CLI ausführen, können Sie auf den MCP-Server unter http://localhost:54321/mcp zugreifen. Derzeit bietet der MCP-Server in CLI-Umgebungen eine begrenzte Teilmenge von Tools und kein OAuth 2.1.
Selbst gehostet
Für selbst gehostetes Supabase lesen Sie die Seite Aktivieren des MCP-Servers. Derzeit bietet der MCP-Server in selbst gehosteten Umgebungen eine begrenzte Teilmenge von Tools und kein OAuth 2.1.
Konfigurationsoptionen und Tools
Siehe die Supabase MCP Server-Dokumentation für die vollständige Liste der verfügbaren Tools und Konfigurationsoptionen.
Die Dokumentation enthält auch einen interaktiven URL-Builder, um Konfigurationsoptionen für Sie auszufüllen.
Verwendung mit dem MCP-Client des AI SDK
Das Paket @supabase/mcp-server-supabase exportiert createToolSchemas(), um Eingabe- und Ausgabeschemata für den MCP-Client des Vercel AI SDK zu befüllen. Dies ermöglicht es, Supabase-MCP-Tools als statische Tools mit clientseitiger Validierung und abgeleiteten TypeScript-Typen für ihre Eingaben und Ausgaben zu behandeln.
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() akzeptiert ähnliche Filteroptionen wie die URL-Parameter des MCP-Servers:
features: Beschränken auf bestimmte Feature-Gruppen (z. B.['database', 'docs']). Standardmäßig alle Standard-Feature-Gruppen.projectScoped: Wenntrue, lässtproject_idaus den Tool-Eingabeschemata weg und schließt Kontoebenen-Tools aus – verwenden Sie dies, wenn Sie eine Verbindung zu einem Server herstellen, der mitproject_refkonfiguriert ist. Standardmäßigfalse.readOnly: Wenntrue, schließt mutierende Tools aus – verwenden Sie dies, wenn Sie eine Verbindung zu einem Server herstellen, der mitread_only=truekonfiguriert ist. Standardmäßigfalse.
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] Dieser Server sendet kein
structuredContentin MCP-Tool-Ergebnissen. Das AI SDK greift auf das Parsen von JSON auscontent-Text zurück.
Weitere Informationen finden Sie unter Schema-Definition und Typisierte Tool-Ausgaben in der AI-SDK-Dokumentation.
Selbsthosting des MCP-Endpunkts
Das Paket @supabase/mcp-server-supabase exportiert createSupabaseMcpHandler(), um die Tools über HTTP von Ihrem eigenen Endpunkt bereitzustellen. Es akzeptiert dieselben SupabaseMcpServerOptions wie createSupabaseMcpServer(), am wichtigsten platform.
Der Handler spricht nur die aktuelle Protokollrevision. Er wird mit legacy: 'reject' erstellt, sodass ein Client, der nur das Protokoll aus der 2025-Ära spricht, einen HTTP 400 erhält, anstatt bedient zu werden.
Wenn platform eine Anmeldeinformation pro Anfrage trägt, erstellen Sie den Handler pro Anfrage und schließen Sie ihn, wenn die Antwort abgeschlossen ist. Der Handler schließt über das platform, das Sie bereitstellen, sodass ein gemeinsamer Handler jede Anfrage mit dieser Plattform bedient.
Ein langlebiger Handler ist in Ordnung, wenn das platform geteilt werden soll, z. B. ein Dienstkonto-Token. Erstellen Sie ihn einmal und close() Sie ihn beim Herunterfahren und nicht pro Antwort, da close() den Abonnement-Router abbaut und spätere Anfragen ablehnt.
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 stammt aus @modelcontextprotocol/node, das keine Abhängigkeit dieses Pakets ist. Installieren Sie es zusätzlich.
Andere MCP-Server
@supabase/mcp-server-postgrest
Der PostgREST-MCP-Server ermöglicht es Ihnen, Ihre eigenen Benutzer über die REST-API mit Ihrer App zu verbinden. Weitere Details finden Sie in der Projekt-README.
Ressourcen
- Model Context Protocol: Erfahren Sie mehr über MCP und seine Fähigkeiten.
- Von der Entwicklung zur Produktion: Erfahren Sie, wie Sie Änderungen sicher in Produktionsumgebungen überführen.
Für Entwickler
Siehe CONTRIBUTING für Details, wie Sie zu diesem Projekt beitragen können.
Lizenz
Dieses Projekt ist unter Apache 2.0 lizenziert. Siehe die LICENSE-Datei für Details.