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?
- Datenbanktabellen verwalten — Bitten Sie Ihren Assistenten, Tabellen in der Datenbank Ihres Supabase-Projekts zu erstellen, zu ändern oder zu löschen.
- Daten abfragen und prüfen — Lassen Sie Ihren Assistenten SQL-Abfragen ausführen oder Tabelleninhalte abrufen, um Fragen zu Ihren Daten zu beantworten.
- Projektkonfiguration abrufen — Fragen Sie nach Details zu Ihren Supabase-Projekteinstellungen, wie Verbindungsinformationen oder Feature-Flags.
- Zugriffsbereich einschränken — Konfigurieren Sie den Server mit
read_only=trueoderproject_ref, um Tools auf sichere, projektspezifische Operationen zu beschränken.
Gehosteter MCP-Server
npx add-mcp 'https://mcp.supabase.com/mcp'Installiert in Claude Code, Codex, Cursor und mehr
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 Sicherheits-Best Practices
Bevor Sie den MCP-Server einrichten, empfehlen wir Ihnen, unsere Sicherheits-Best Practices zu lesen, um die Risiken der Verbindung eines LLM mit Ihren Supabase-Projekten und deren Minderung zu verstehen.
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 besuchen.
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: Einschrä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 fällt 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, ein 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. Ihr Code importiert es direkt, also installieren Sie es daneben.
Beobachtbarkeit
Übergeben Sie ein observer an createSupabaseMcpServer, um Ergebnisse des Anforderungslebenszyklus und die integrierten Fakten von Supabase zu sammeln. Hier ist platform Ihr bestehender Plattform-Adapter:
import { createSupabaseMcpServer } from '@supabase/mcp-server-supabase';
const server = createSupabaseMcpServer({
platform,
observer: (context) => ({
record(fact) {
console.info(fact);
},
end(result) {
console.info({ ...context, ...result });
},
}),
});
Der Server leitet Anforderungs- oder Antwort-Payloads nicht automatisch an den Beobachter weiter. Die integrierten Fakten von Supabase verwenden einen geschlossenen Satz begrenzter Felder und Werte; benutzerdefinierte Fakten erhalten keine automatische Datenschutzvalidierung. Das Weglassen von observer überspringt alle Beobachtungsarbeit. Fehler bei Beobachter, Klassifizierer und Senke ändern das Anforderungsverhalten nicht, aber synchrone Beobachter- und Klassifiziererarbeit kann Anforderungen blockieren.
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.