Supabase MCP

offiziell

Offizieller 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_table und alter_table zu 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_url abrufen, um Einrichtungsaufgaben zu optimieren.
  • Restrict tool access by feature — Konfigurieren Sie Ihre MCP-Verbindung, um verfügbare Tools auf bestimmte Funktionsgruppen (z. B. database oder docs) 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

MCP Registry Version

Verbinden Sie Ihre Supabase-Projekte mit Cursor, Claude, Windsurf und anderen KI-Assistenten.

supabase-mcp-demo

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: Wenn true, lässt project_id aus den Tool-Eingabeschemata weg und schließt Kontoebenen-Tools aus – verwenden Sie dies, wenn Sie eine Verbindung zu einem Server herstellen, der mit project_ref konfiguriert ist. Standardmäßig false.
  • readOnly: Wenn true, schließt mutierende Tools aus – verwenden Sie dies, wenn Sie eine Verbindung zu einem Server herstellen, der mit read_only=true konfiguriert ist. Standardmäßig 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] Dieser Server sendet kein structuredContent in MCP-Tool-Ergebnissen. Das AI SDK greift auf das Parsen von JSON aus content-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

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.