Supabase MCP

resmi

Server MCP resmi Supabase untuk mengelola proyek Supabase, database, autentikasi, penyimpanan, fungsi edge, dan alur kerja SQL dari agen AI.

Apa yang bisa Anda lakukan dengan Supabase MCP?

  • Mengelola tabel database — Minta asisten Anda untuk membuat, mengubah, atau menghapus tabel dalam database proyek Supabase Anda.
  • Mengkueri dan memeriksa data — Minta asisten Anda menjalankan kueri SQL atau mengambil isi tabel untuk menjawab pertanyaan tentang data Anda.
  • Mengambil konfigurasi proyek — Minta detail tentang pengaturan proyek Supabase Anda, seperti informasi koneksi atau flag fitur.
  • Membatasi cakupan akses — Konfigurasikan server dengan read_only=true atau project_ref untuk membatasi alat pada operasi yang aman dan spesifik proyek.

Server MCP Terhosting

npx add-mcp 'https://mcp.supabase.com/mcp'

Terpasang ke Claude Code, Codex, Cursor, dan lainnya

Dokumentasi

Server Supabase MCP

MCP Registry Version

Hubungkan proyek Supabase Anda ke Cursor, Claude, Windsurf, dan asisten AI lainnya.

supabase-mcp-demo

Model Context Protocol (MCP) menstandarkan cara Large Language Models (LLM) berkomunikasi dengan layanan eksternal seperti Supabase. Ini menghubungkan asisten AI secara langsung dengan proyek Supabase Anda dan memungkinkan mereka melakukan tugas seperti mengelola tabel, mengambil konfigurasi, dan menanyakan data. Lihat daftar lengkap alat.

Pengaturan

1. Ikuti praktik keamanan terbaik kami

Sebelum mengatur server MCP, kami menyarankan Anda membaca praktik keamanan terbaik untuk memahami risiko menghubungkan LLM ke proyek Supabase Anda dan cara menguranginya.

2. Konfigurasikan klien MCP Anda

Untuk mengonfigurasi server Supabase MCP di klien Anda, kunjungi dokumentasi pengaturan. Anda juga dapat membuat URL MCP khusus untuk proyek Anda dengan mengunjungi tab koneksi MCP di dasbor Supabase.

Klien MCP Anda akan secara otomatis meminta Anda untuk masuk ke Supabase selama pengaturan. Pastikan Anda memilih organisasi yang berisi proyek yang ingin Anda kerjakan.

Sebagian besar klien MCP memerlukan informasi berikut:

{
  "mcpServers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp"
    }
  }
}

Jika Anda tidak melihat klien MCP Anda tercantum dalam dokumentasi kami, periksa dokumentasi MCP klien Anda dan salin informasi MCP di atas ke dalam format yang mereka harapkan (json, yaml, dll).

CLI

Jika Anda menjalankan Supabase secara lokal dengan Supabase CLI, Anda dapat mengakses server MCP di http://localhost:54321/mcp. Saat ini, Server MCP di lingkungan CLI menawarkan subset alat yang terbatas dan tanpa OAuth 2.1.

Self-hosted

Untuk Supabase self-hosted, periksa halaman Mengaktifkan server MCP. Saat ini, Server MCP di lingkungan self-hosted menawarkan subset alat yang terbatas dan tanpa OAuth 2.1.

Opsi konfigurasi dan alat

Lihat dokumentasi Server Supabase MCP untuk daftar lengkap alat yang tersedia dan opsi konfigurasi.

Dokumentasi juga menampilkan pembangun URL interaktif untuk mengisi opsi konfigurasi untuk Anda.

Penggunaan dengan Klien MCP AI SDK

Paket @supabase/mcp-server-supabase mengekspor createToolSchemas() untuk mengisi skema input dan output untuk klien MCP Vercel AI SDK. Ini memungkinkan alat Supabase MCP diperlakukan sebagai alat statis dengan validasi sisi klien dan tipe TypeScript yang disimpulkan untuk input dan outputnya.

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() menerima opsi pemfilteran yang serupa dengan parameter URL server MCP:

  • features: Batasi ke grup fitur tertentu (misalnya ['database', 'docs']). Default ke semua grup fitur default.
  • projectScoped: Saat true, menghilangkan project_id dari skema input alat dan mengecualikan alat tingkat akun — gunakan saat terhubung ke server yang dikonfigurasi dengan project_ref. Default ke false.
  • readOnly: Saat true, mengecualikan alat yang mengubah — gunakan saat terhubung ke server yang dikonfigurasi dengan read_only=true. Default ke 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,
  }),
});

[!CATATAN] Server ini tidak mengirim structuredContent dalam hasil alat MCP. AI SDK kembali ke penguraian JSON dari teks content.

Untuk informasi lebih lanjut, lihat Definisi Skema dan Output Alat Bertipe dalam dokumentasi AI SDK.

Self-hosting endpoint MCP

Paket @supabase/mcp-server-supabase mengekspor createSupabaseMcpHandler() untuk melayani alat melalui HTTP dari endpoint Anda sendiri. Ini menerima SupabaseMcpServerOptions yang sama dengan createSupabaseMcpServer(), yang paling penting platform.

Handler berbicara hanya revisi protokol saat ini. Ini dibuat dengan legacy: 'reject', sehingga klien yang hanya berbicara protokol era 2025 menerima HTTP 400 alih-alih dilayani.

Saat platform membawa kredensial per-permintaan, buat handler per permintaan dan tutup saat respons selesai. Handler menutup platform yang Anda berikan, sehingga yang dibagikan melayani setiap permintaan dengan platform itu.

Handler berumur panjang baik-baik saja saat platform dimaksudkan untuk dibagikan, misalnya token akun layanan. Buat sekali dan close() saat shutdown daripada per respons, karena close() merobohkan router langganan dan menolak permintaan berikutnya.

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 berasal dari @modelcontextprotocol/node. Kode Anda mengimpornya secara langsung, jadi instal bersama.

Observabilitas

Berikan observer ke createSupabaseMcpServer untuk mengumpulkan hasil siklus permintaan dan fakta bawaan Supabase. Di sini, platform adalah adaptor platform Anda yang sudah ada:

import { createSupabaseMcpServer } from '@supabase/mcp-server-supabase';

const server = createSupabaseMcpServer({
  platform,
  observer: (context) => ({
    record(fact) {
      console.info(fact);
    },
    end(result) {
      console.info({ ...context, ...result });
    },
  }),
});

Server tidak secara otomatis meneruskan payload permintaan atau respons ke pengamat. Fakta bawaan Supabase menggunakan set tertutup bidang dan nilai terbatas; fakta khusus tidak menerima validasi privasi otomatis. Menghilangkan observer melewatkan semua pekerjaan observasi. Kegagalan pengamat, pengklasifikasi, dan sink tidak mengubah perilaku permintaan, tetapi pekerjaan pengamat dan pengklasifikasi sinkron dapat memblokir permintaan.

Server MCP lainnya

@supabase/mcp-server-postgrest

Server PostgREST MCP memungkinkan Anda menghubungkan pengguna Anda sendiri ke aplikasi Anda melalui REST API. Lihat detail lebih lanjut di README proyek.

Sumber daya

Untuk pengembang

Lihat BERKONTRIBUSI untuk detail tentang cara berkontribusi pada proyek ini.

Lisensi

Proyek ini dilisensikan di bawah Apache 2.0. Lihat file LISENSI untuk detailnya.