Supabase MCP
resmiServer 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=trueatauproject_refuntuk 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
Hubungkan proyek Supabase Anda ke Cursor, Claude, Windsurf, dan asisten AI lainnya.
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: Saattrue, menghilangkanproject_iddari skema input alat dan mengecualikan alat tingkat akun — gunakan saat terhubung ke server yang dikonfigurasi denganproject_ref. Default kefalse.readOnly: Saattrue, mengecualikan alat yang mengubah — gunakan saat terhubung ke server yang dikonfigurasi denganread_only=true. Default kefalse.
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
structuredContentdalam hasil alat MCP. AI SDK kembali ke penguraian JSON dari tekscontent.
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
- Model Context Protocol: Pelajari lebih lanjut tentang MCP dan kemampuannya.
- Dari pengembangan ke produksi: Pelajari cara mempromosikan perubahan dengan aman ke lingkungan produksi.
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.