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 di proyek Supabase melalui alat MCP seperti
create_tabledanalter_table. - Mengkueri data proyek — Instruksikan AI Anda untuk menjalankan kueri SQL hanya-baca terhadap database Anda, mengambil baris, memfilter hasil, atau memeriksa skema tanpa menulis kode.
- Mengambil konfigurasi proyek — Minta asisten Anda untuk mengambil pengaturan proyek, detail koneksi, atau informasi lingkungan menggunakan alat seperti
get_project_urluntuk menyederhanakan tugas penyiapan. - Membatasi akses alat berdasarkan fitur — Konfigurasikan koneksi MCP Anda untuk membatasi alat yang tersedia ke grup fitur tertentu (misalnya,
databaseataudocs) atau aktifkan mode hanya-baca untuk interaksi AI yang lebih aman. - Berintegrasi dengan klien AI SDK — Gunakan
createToolSchemas()untuk menghasilkan skema input/output bertipe untuk klien MCP Vercel AI SDK, memungkinkan validasi alat statis di aplikasi Anda.
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 diharapkan (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 tersebut juga menampilkan pembuat 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 yang Diketik di 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 yang 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 selanjutnya.
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, yang bukan dependensi dari paket ini. Instal bersama.
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.