@supabase/mcp-server-postgrest
Dies ist ein MCP-Server für PostgREST . Er ermöglicht LLMs, CRUD-Operationen an Ihrer App über die REST-API durchzuführen.
Dieser Server funktioniert mit Supabase-Projekten (die PostgREST ausführen) und jedem eigenständigen PostgREST-Server.
Werkzeuge
Folgende Tools stehen zur Verfügung:
postgrestRequest
Führt eine HTTP-Anfrage an einen konfigurierten PostgREST-Server aus. Akzeptiert die folgenden Argumente:
method: Die zu verwendende HTTP-Methode (z. B.GET,POST,PATCH,DELETE)path: Der abzufragende Pfad (z. B./todos?id=eq.1)body: Der Anforderungstext (fürPOSTundPATCHAnforderungen)
Es gibt die JSON-Antwort vom PostgREST-Server zurück, einschließlich ausgewählter Zeilen für GET Anfragen und aktualisierter Zeilen für POST und PATCH Anfragen.
sqlToRest
Konvertiert eine SQL-Abfrage in die entsprechende PostgREST-Syntax (als Methode und Pfad). Nützlich für komplexe Abfragen, die LLMs sonst nur schwer in gültige PostgREST-Syntax konvertieren könnten.
Beachten Sie, dass PostgREST nur eine Teilmenge von SQL unterstützt, sodass nicht alle Abfragen konvertiert werden. Weitere Informationen finden Sie sql-to-rest .
Es akzeptiert die folgenden Argumente:
sql: Die zu konvertierende SQL-Abfrage.
Es gibt ein Objekt mit method und path für die Anfrage zurück. LLMs können dann das Tool postgrestRequest verwenden, um die Anfrage auszuführen.
Related MCP server: Supabase MCP Server
Verwendung
Mit Claude Desktop
Claude Desktop ist ein beliebter LLM-Client, der das Model Context Protocol unterstützt. Sie können Ihren PostgREST-Server mit Claude Desktop verbinden, um Ihre Datenbank über natürliche Sprachbefehle abzufragen.
Sie können MCP-Server über die Konfigurationsdatei unter folgender Adresse zu Claude Desktop hinzufügen:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Um Ihr Supabase-Projekt (oder einen beliebigen PostgREST-Server) zu Claude Desktop hinzuzufügen, fügen Sie dem mcpServers Objekt in der Konfigurationsdatei die folgende Konfiguration hinzu:
{
"mcpServers": {
"todos": {
"command": "npx",
"args": [
"-y",
"@supabase/mcp-server-postgrest@latest",
"--apiUrl",
"https://your-project-ref.supabase.co/rest/v1",
"--apiKey",
"your-anon-key",
"--schema",
"public"
]
}
}
}Konfiguration
apiUrl: Die Basis-URL Ihres PostgREST-EndpunktsapiKey: Ihr API-Schlüssel zur Authentifizierung (optional)schema: Das Postgres-Schema, aus dem die API bereitgestellt wird (z. B.public“). Beachten Sie, dass nicht öffentliche Schemata manuell über PostgREST bereitgestellt werden müssen.
Programmgesteuert (benutzerdefinierter MCP-Client)
Wenn Sie Ihren eigenen MCP-Client erstellen, können Sie sich programmgesteuert über Ihren bevorzugten Transport mit einem PostgREST-Server verbinden. Das MCP SDK bietet integrierte stdio- und SSE- Transporte. Wir bieten außerdem einen StreamTransport an, wenn Sie eine direkte Verbindung zu MCP-Servern im Arbeitsspeicher oder über Ihren eigenen streambasierten Transport herstellen möchten.
Installation
npm i @supabase/mcp-server-postgrestyarn add @supabase/mcp-server-postgrestpnpm add @supabase/mcp-server-postgrestBeispiel
Im folgenden Beispiel wird StreamTransport verwendet, um eine direkte Verbindung zwischen einem MCP-Client und einem Server herzustellen.
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamTransport } from '@supabase/mcp-utils';
import { createPostgrestMcpServer } from '@supabase/mcp-server-postgrest';
// Create a stream transport for both client and server
const clientTransport = new StreamTransport();
const serverTransport = new StreamTransport();
// Connect the streams together
clientTransport.readable.pipeTo(serverTransport.writable);
serverTransport.readable.pipeTo(clientTransport.writable);
const client = new Client(
{
name: 'MyClient',
version: '0.1.0',
},
{
capabilities: {},
}
);
const supabaseUrl = 'https://your-project-ref.supabase.co'; // http://127.0.0.1:54321 for local
const apiKey = 'your-anon-key'; // or service role, or user JWT
const schema = 'public'; // or any other exposed schema
const server = createPostgrestMcpServer({
apiUrl: `${supabaseUrl}/rest/v1`,
apiKey,
schema,
});
// Connect the client and server to their respective transports
await server.connect(serverTransport);
await client.connect(clientTransport);
// Call tools, etc
const output = await client.callTool({
name: 'postgrestRequest',
arguments: {
method: 'GET',
path: '/todos',
},
});