/ Verzeichnis / Playground / Supabase
● Offiziell supabase-community 🔑 Eigener Schlüssel nötig

Supabase

von supabase-community · supabase-community/supabase-mcp

Offizielles Supabase MCP — Verwalten Sie Projekte, führen Sie SQL aus, stellen Sie Edge Functions bereit, konfigurieren Sie Authentifizierung, zeigen Sie Protokolle an – alles aus dem Chat.

Das offizielle MCP von Supabase, gepflegt von der Supabase-Community-Organisation. Umhüllt die Supabase Management API plus Postgres-Zugriff pro Projekt. Ermöglicht es einem Agent, Branches zu erstellen, Migrationen auszuführen, Edge Functions zu schreiben, die Datenbank abzufragen und Protokolle zu lesen – ohne den Chat zu verlassen.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

supabase.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "supabase",
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "supabase": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@supabase/mcp-server-supabase"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add supabase -- npx -y @supabase/mcp-server-supabase

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: Supabase

Testen Sie eine destruktive Migration auf einem Datenbankbranch, bevor Sie sie auf die Produktion anwenden

👤 Ingenieure, die Schemaänderungen versenden ⏱ ~30 min advanced

Wann einsetzen: Sie haben eine Migration, die eine Spalte löscht oder Millionen von Zeilen auffüllt, und Sie möchten zuerst einen Testlauf auf einem Branch mit echten Daten durchführen.

Voraussetzungen
  • Supabase Pro-Plan oder höher — Branching ist auf kostenpflichtige Pläne beschränkt
  • Persönliches Zugriffstoken — supabase.com/dashboard/account/tokens — auf Ihre Organisation beschränken
Ablauf
  1. Erstellen Sie einen Branch aus der Produktion
    Erstellen Sie einen Datenbankbranch mit dem Namen 'test-drop-legacy-col' vom Hauptbranch im Projekt <ref>. Warten Sie, bis er bereit ist.✓ Kopiert
    → Branch erstellt mit eigener Verbindungszeichenfolge
  2. Führen Sie die Migration auf dem Branch aus
    Wenden Sie die folgende Migration auf dem neuen Branch an: <SQL einfügen>. Melden Sie betroffene Zeilen und Fehler.✓ Kopiert
    → Migration wird ausgeführt; Zeilenzahlen sichtbar
  3. Überprüfen und fördern oder verwerfen
    Führen Sie Sanity-SELECTs auf dem Branch aus (oberste 10 Zeilen betroffener Tabellen, NULL-Zähler in geänderten Spalten). Wenn es gut aussieht, sagen Sie mir und ich werde fördern; wenn nicht, löschen Sie den Branch.✓ Kopiert
    → Überprüfungsausgabe, dann explizite menschliche Freigabe/Ablehnung

Ergebnis: Migration validiert gegen echte Datengröße, bevor sie in die Produktion geht.

Fallstricke
  • Branches haben nicht die exakten Daten der Produktion – sie sind eine Momentaufnahme zum Zeitpunkt der Branch-Erstellung — Notieren Sie sich den Zeitstempel der Momentaufnahme; wenn Ihre Migration empfindlich auf aktuelle Zeilen reagiert, erstellen Sie einen Branch so nah wie möglich am Anwendungszeitpunkt
  • Die Branch-Erstellung kostet Rechenzeit — Löschen Sie den Branch nach dem Testen immer; verlassene Branches sammeln Gebühren an
Kombinieren mit: github · postgres

Schreiben und stellen Sie eine Supabase Edge Function aus dem Chat bereit

👤 Entwickler, die kleine Backend-Endpunkte hinzufügen (Webhooks, signierte URL-Generatoren usw.) ⏱ ~20 min intermediate

Wann einsetzen: Sie benötigen einen schnellen HTTP-Endpunkt mit Datenbankzugriff – perfekt für eine Edge Function – und möchten nicht zur Dashboard wechseln.

Ablauf
  1. Erstellen Sie das Grundgerüst der Funktion
    Erstellen Sie eine Edge Function stripe-webhook im Projekt <ref>. Sie sollte: die Stripe-Signatur validieren, dann eine Zeile in die Tabelle stripe_events einfügen. Verwenden Sie Deno-Style-Importe.✓ Kopiert
    → Funktionscode geschrieben mit ordnungsgemäßen Deno-Konventionen
  2. Bereitstellen
    Stellen Sie stripe-webhook im Projekt <ref> bereit. Zeigen Sie mir die resultierende URL.✓ Kopiert
    → Bereitgestellte URL zurückgegeben
  3. Testen Sie mit einer Beispiel-Nutzlast
    POSTEN Sie eine Test-Nutzlast an die URL und folgen Sie den Funktionsprotokollen. Hat sie erfolgreich ausgeführt und eine Zeile geschrieben?✓ Kopiert
    → Protokolle zeigen Aufruf; Zeile sichtbar in der Tabelle

Ergebnis: Ein Live-Endpunkt plus eine Zeile in der Datenbank, um zu beweisen, dass es funktioniert, in 5 Minuten.

Fallstricke
  • Geheimnisse (STRIPE_SECRET) werden nicht automatisch injiziert — Legen Sie sie über das Supabase-Dashboard oder das MCP-Tool set_secrets fest, bevor Sie aufrufen; referenzieren Sie mit Deno.env.get('STRIPE_SECRET')
  • Edge Functions haben einen Cold-Start; die erste Anfrage ist langsam — Rufen Sie einmal nach der Bereitstellung auf, um aufzuwärmen, bevor Sie 'funktioniert' deklarieren
Kombinieren mit: stripe · github

Überprüfen Sie Row-Level Security-Richtlinien für ein Supabase-Projekt

👤 Sicherheitsbewusste Entwickler und Reviewer ⏱ ~25 min intermediate

Wann einsetzen: Vor dem Start – Sie möchten bestätigen, dass RLS für jede Tabelle aktiviert ist und die Richtlinien tatsächlich das tun, was Sie denken.

Ablauf
  1. Tabellen und RLS-Status auflisten
    Liste jede Tabelle im Public-Schema auf. Für jede: Ist RLS aktiviert? Verfügbare Richtlinien auflisten.✓ Kopiert
    → RLS-Status pro Tabelle plus Richtlinientexte
  2. Finden Sie Tabellen ohne RLS
    Heben Sie alle Tabellen hervor, bei denen RLS AUS ist, oder RLS ist AN, aber es existieren keine Richtlinien (wirksam alle stillschweigend ablehnen).✓ Kopiert
    → Risikliste mit klarer Kategorie für jede
  3. Testen Sie als anonym
    Simulieren Sie für 3 sensible Tabellen eine Abfrage eines anonymen Benutzers (mit der Anon-Rolle). Gibt sie Zeilen zurück? Das sollte sie nicht.✓ Kopiert
    → Leere Ergebnisse = gut; zurückgegebene Zeilen = Richtlinienbug

Ergebnis: Eine Freigabe vor dem Start zur Auth-Haltung mit Nachweis pro Tabelle.

Fallstricke
  • RLS ist auf einer Tabelle deaktiviert, von der Sie dachten, dass sie intern ist — Service-Role-Schlüssel umgeht RLS durch Design – setzen Sie ihn niemals auf der Client-Seite aus. Überprüfen Sie, welche Schlüssel wo verwendet werden

Untersuchen Sie, warum sich ein Benutzer nicht anmelden kann

👤 Support-Ingenieure, Gründer in der ersten Linie ⏱ ~10 min beginner

Wann einsetzen: Ein Benutzer berichtet 'mein Anmelde-Link funktioniert nicht' und Sie möchten sehen, ob die E-Mail gesendet wurde, welche Authentifizierungsereignisse ausgelöst wurden, usw.

Ablauf
  1. Finden Sie den Benutzer
    Finden Sie den Auth-Benutzer mit der E-Mail '[email protected]'. Zeigen Sie created_at, last_sign_in_at, email_confirmed_at.✓ Kopiert
    → Benutzerdatensatz oder 'nicht gefunden'-Urteil
  2. Überprüfen Sie aktuelle Auth-Protokolle
    Rufen Sie Auth-Protokoll-Einträge für diese user_id in den letzten 24 Stunden ab. Gruppieren Sie nach Ereignistyp.✓ Kopiert
    → Folge von Authentifizierungsereignissen (otp_sent, sign_in_failed, usw.)
  3. Lösen Sie auf
    Basierend auf den Ereignissen, was ist das eigentliche Problem? Schlagen Sie die Behebung vor (Einladung erneut senden, manuell bestätigen, Passwort zurücksetzen).✓ Kopiert
    → Diagnose plus Aktionsplan

Ergebnis: Ein gelöstes Support-Ticket mit Prüfprotokoll in 5 Minuten.

Fallstricke
  • PII fließt in Chat-Protokolle — Vermeiden Sie, rohe Benutzerdatensätze in archivierten Chat-Verlauf einzufügen; reduzieren Sie E-Mails beim Zusammenfassen

Generieren Sie TypeScript-Typen aus Ihrem Supabase-Schema

👤 Frontend-Entwickler, die `supabase-js` verwenden ⏱ ~10 min beginner

Wann einsetzen: Sie haben Ihr Datenbankschema geändert und möchten, dass Client-Typen aktualisiert werden.

Ablauf
  1. Generieren Sie Typen
    Generieren Sie TypeScript-Typen für das Public-Schema des Projekts <ref>. Speichern Sie unter src/types/database.ts.✓ Kopiert
    → Typendatei geschrieben
  2. Vergleichen und überprüfen Sie die Nutzung
    Im Vergleich zur vorherigen Typendatei (in Git), was hat sich geändert? Sind irgendwelche Änderungen für bestehende Aufruf-Standorte in src/ unterbrochen?✓ Kopiert
    → Auswirkungsanalyse pro Änderung
  3. Öffnen Sie einen PR
    Committen Sie die Typaufdatierung plus alle erforderlichen Aufruf-Standort-Behebungen. Öffnen Sie einen PR mit dem Titel 'chore: regen db types YYYY-MM-DD'.✓ Kopiert
    → PR mit vollständigem Diff geöffnet

Ergebnis: Typen bleiben mit Schema synchron; unterbrochene Aufruf-Standorte werden beim PR aufgegriffen, nicht in der Produktion.

Fallstricke
  • Generierte Typen enthalten keine Ansichten, es sei denn, die Ansicht hat SECURITY INVOKER gesetzt — Fügen Sie Ansichten explizit hinzu oder dokumentieren Sie die Lücke; supabase-js behandelt sie mit from('view_name') trotzdem
Kombinieren mit: github · filesystem

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

supabase + github

Öffnen Sie einen PR mit einer Migration, stellen Sie auf einem Branch bereit, fügen Sie Test-Ergebnisse zum PR an

Öffnen Sie einen PR, der die Migration in supabase/migrations/ hinzufügt. Erstellen Sie einen Supabase-Branch mit der angewendeten Migration. Kommentieren Sie den PR mit den Test-Ergebnissen aus dem Branch.✓ Kopiert
supabase + stripe

Erstellen Sie eine Stripe-Webhook-Edge Function, die Ereignisse in Supabase schreibt

Erstellen Sie eine Edge Function, die Stripe-Webhooks empfängt, die Signatur validiert und Ereignisse in eine stripe_events-Tabelle einfügt. Richten Sie den Webhook-Endpunkt in Stripe so ein, dass er darauf verweist.✓ Kopiert
supabase + filesystem

Synchronisieren Sie lokale SQL-Migrationsdateien mit dem Supabase-Projektstatus

Vergleichen Sie /supabase/migrations/ auf der Festplatte mit Migrationen, die auf dem Projekt angewendet wurden. Wenden Sie fehlende in der richtigen Reihenfolge an.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
list_projects (keine) Entdecken Sie, auf welche Projekte Ihr Token zugreifen kann kostenfrei
get_project / pause_project / restore_project project_id: str Überprüfen oder steuern Sie ein Projekt kostenfrei
create_branch / list_branches / merge_branch / delete_branch project_id, name? Datenbankbranching für Migrationstests (Pro+) Verbrauchte Branch-Rechenzeiten werden abgerechnet
list_tables project_id, schemas?: str[] Schema-Introspection kostenfrei
list_extensions / list_migrations project_id Datenbankmetadaten kostenfrei
apply_migration project_id, name: str, query: str Wenden Sie eine verfolgte Migration auf die Projekt-Datenbank an kostenfrei
execute_sql project_id, query: str Ad-hoc-SQL – lesen oder schreiben kostenfrei
list_edge_functions / get_edge_function / deploy_edge_function project_id, function name, code, entrypoint Verwalten Sie Deno-basierte Edge Functions Edge Function-Aufrufe werden abgerechnet
get_logs project_id, service: 'postgres'|'auth'|'edge-function'|... Rufen Sie aktuelle Protokolle für einen Service ab kostenfrei
generate_typescript_types project_id Regenerieren Sie Client-Typen nach Schema-Änderungen kostenfrei
get_anon_key / get_project_url / get_advisors project_id Projekt-Metadaten; Advisors kennzeichnen Sicherheits- oder Leistungsprobleme kostenfrei

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Standard Supabase Ratenlimits pro Plan
Tokens pro Aufruf
Schema-Abfragen: klein. Protokoll- und SQL-Ergebnisse: hängt vom Datenvolumen ab – setzen Sie immer Zeit-/Zeilenlimits
Kosten in €
MCP kostenfrei; Supabase-Projekt ist pro Plan ($0 kostenfrei; Pro $25/Monat). Branching verbraucht Rechenzeiten.
Tipp
Branches sind großartig zum Testen, aber teuer, wenn sie vergessen werden. Löschen Sie den Branch immer nach dem Zusammenführen oder wenn er verworfen wird.

Sicherheit

Rechte, Secrets, Reichweite

Minimale Scopes: Persönliches Zugriffstoken, auf bestimmte Projekte beschränkt, wenn möglich
Credential-Speicherung: Persönliches Zugriffstoken in Umgebungsvariable SUPABASE_ACCESS_TOKEN
Datenabfluss: Alle Aufrufe an api.supabase.com und Ihren regionalen Projekt-Endpunkt
Niemals gewähren: Service-Role-Schlüssel für den Agent, es sei denn, er ist absolut notwendig – er umgeht RLS

Fehlerbehebung

Häufige Fehler und Lösungen

Nicht autorisiert – ungültiges Token

Token abgelaufen oder falscher Bereich. Generieren Sie ein neues Token unter supabase.com/dashboard/account/tokens.

Prüfen: curl -H 'Authorization: Bearer $TOKEN' https://api.supabase.com/v1/projects
Branching-Tools schlagen fehl mit 'Plan unterstützt Branching nicht'

Branching ist Pro+. Upgraden Sie den Plan oder überspringen Sie Branching-Workflows.

Edge Function-Bereitstellung schlägt fehl: 'ungültiger Deno-Code'

Funktionscode muss Deno-kompatibel sein (kein Node-Style-Require). Überprüfen Sie, dass Importe https://deno.land/... oder npm: Spezifizierer verwenden.

execute_sql gibt 'Berechtigung verweigert' zurück

Das MCP verwendet eine Projekt-begrenzte Rolle. Führen Sie für privilegierte Operationen über den Dashboard SQL Editor aus. Geben Sie der MCP-Rolle nicht Superuser.

Alternativen

Supabase vs. andere

AlternativeWann stattdessenKompromiss
Postgres MCPSie benötigen nur Read-only SQL-Zugriff und benötigen keine Supabase-spezifischen FunktionenKein Branching, Edge Functions, Auth-Introspection oder Protokolle
Neon MCPSie sind stattdessen bei Neon – hat auch BranchingAndere Plattform; keine Auth/Edge Functions
Supabase CLI directlySie möchten einen vollständigen lokalen Entwicklungsflow mit supabase startKeine Agent-Ergonomie; besser für festgelegte Workflows

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen