Supabase MCP

resmi

Supabase projelerini, veritabanlarını, kimlik doğrulamayı, depolamayı, edge fonksiyonlarını ve SQL iş akışlarını yapay zeka ajanlarından yönetmek için resmi Supabase MCP sunucusu.

Supabase MCP ile neler yapabilirsiniz?

  • Veritabanı tablolarını yönetin — Asistanınızdan Supabase projenizin veritabanında tablo oluşturmasını, değiştirmesini veya silmesini isteyin.
  • Verileri sorgulayın ve inceleyin — Asistanınıza SQL sorguları çalıştırın veya verilerinizle ilgili soruları yanıtlamak için tablo içeriklerini getirtin.
  • Proje yapılandırmasını alın — Bağlantı bilgileri veya özellik bayrakları gibi Supabase proje ayarlarınız hakkında ayrıntılar isteyin.
  • Erişim kapsamını sınırlayın — Sunucuyu read_only=true veya project_ref ile yapılandırarak araçları güvenli, projeye özel işlemlerle sınırlandırın.

Barındırılan MCP Sunucusu

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

Claude Code, Codex, Cursor ve daha fazlasına kurulur

Dokümantasyon

Supabase MCP Sunucusu

MCP Registry Version

Supabase projelerinizi Cursor, Claude, Windsurf ve diğer yapay zeka asistanlarına bağlayın.

supabase-mcp-demo

Model Context Protocol (MCP), Büyük Dil Modellerinin (LLM'ler) Supabase gibi harici hizmetlerle nasıl iletişim kuracağını standartlaştırır. Yapay zeka asistanlarını doğrudan Supabase projenize bağlar ve tablo yönetimi, yapılandırma getirme ve veri sorgulama gibi görevleri gerçekleştirmelerine olanak tanır. Araçların tam listesine göz atın.

Kurulum

1. Güvenlik en iyi uygulamalarımızı izleyin

MCP sunucusunu kurmadan önce, bir LLM'yi Supabase projelerinize bağlamanın risklerini ve bunları nasıl azaltacağınızı anlamak için güvenlik en iyi uygulamalarımızı okumanızı öneririz.

2. MCP istemcinizi yapılandırın

Supabase MCP sunucusunu istemcinizde yapılandırmak için kurulum dokümantasyonumuzu ziyaret edin. Ayrıca Supabase kontrol panelindeki MCP bağlantı sekmesini ziyaret ederek projeniz için özel bir MCP URL'si oluşturabilirsiniz.

MCP istemciniz, kurulum sırasında sizi otomatik olarak Supabase'e giriş yapmanız için yönlendirecektir. Çalışmak istediğiniz projeyi içeren organizasyonu seçtiğinizden emin olun.

Çoğu MCP istemcisi aşağıdaki bilgileri gerektirir:

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

MCP istemcinizi dokümantasyonumuzda listelenmiş halde göremiyorsanız, istemcinizin MCP dokümantasyonunu kontrol edin ve yukarıdaki MCP bilgilerini beklenen formatlarına (json, yaml vb.) kopyalayın.

CLI

Supabase'i Supabase CLI ile yerel olarak çalıştırıyorsanız, MCP sunucusuna http://localhost:54321/mcp adresinden erişebilirsiniz. Şu anda, CLI ortamlarındaki MCP Sunucusu sınırlı bir araç alt kümesi sunar ve OAuth 2.1 desteklemez.

Kendi kendine barındırma

Kendi kendine barındırılan Supabase için MCP sunucusunu etkinleştirme sayfasına göz atın. Şu anda, kendi kendine barındırılan ortamlardaki MCP Sunucusu sınırlı bir araç alt kümesi sunar ve OAuth 2.1 desteklemez.

Yapılandırma seçenekleri ve araçlar

Mevcut araçların ve yapılandırma seçeneklerinin tam listesi için Supabase MCP Sunucusu dokümantasyonuna bakın.

Dokümantasyon ayrıca sizin için yapılandırma seçeneklerini doldurmak üzere etkileşimli bir URL oluşturucu içerir.

AI SDK'nın MCP İstemcisi ile Kullanım

@supabase/mcp-server-supabase paketi, Vercel AI SDK'nın MCP istemcisi için giriş ve çıkış şemalarını doldurmak üzere createToolSchemas() dışa aktarır. Bu, Supabase MCP araçlarının, istemci tarafı doğrulama ve giriş/çıkışları için çıkarılan TypeScript türleri ile statik araçlar olarak ele alınmasına olanak tanır.

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(), MCP sunucusunun URL parametrelerine benzer filtreleme seçeneklerini kabul eder:

  • features: Belirli özellik gruplarıyla sınırlayın (örn. ['database', 'docs']). Varsayılan olarak tüm varsayılan özellik gruplarına ayarlıdır.
  • projectScoped: true olduğunda, project_id araç giriş şemalarından çıkarılır ve hesap düzeyindeki araçlar hariç tutulur — project_ref ile yapılandırılmış bir sunucuya bağlanırken kullanın. Varsayılan olarak false değerine ayarlıdır.
  • readOnly: true olduğunda, değiştiren araçları hariç tutar — read_only=true ile yapılandırılmış bir sunucuya bağlanırken kullanın. Varsayılan olarak false değerine ayarlıdır.
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,
  }),
});

[!NOT] Bu sunucu, MCP araç sonuçlarında structuredContent göndermez. AI SDK, content metninden JSON ayrıştırmaya geri döner.

Daha fazla bilgi için AI SDK dokümantasyonundaki Şema Tanımı ve Yazılan Araç Çıktıları bölümlerine bakın.

MCP Uç Noktasını Kendi Kendine Barındırma

@supabase/mcp-server-supabase paketi, araçları kendi uç noktanızdan HTTP üzerinden sunmak için createSupabaseMcpHandler() dışa aktarır. createSupabaseMcpServer() ile aynı SupabaseMcpServerOptions kabul eder, en önemlisi platform.

İşleyici yalnızca mevcut protokol revizyonunu konuşur. legacy: 'reject' ile oluşturulur, bu nedenle yalnızca 2025 dönemi protokolünü konuşan bir istemci, hizmet verilmek yerine HTTP 400 alır.

platform istek başına bir kimlik bilgisi taşıdığında, işleyiciyi istek başına oluşturun ve yanıt bittiğinde kapatın. İşleyici, sağladığınız platform üzerinde kapanır, bu nedenle paylaşılan bir işleyici her isteğe o platformla hizmet verir.

platform paylaşılması amaçlandığında, örneğin bir hizmet hesabı belirteci, uzun ömürlü bir işleyici uygundur. Yanıt başına değil, bir kez oluşturun ve kapanışta close() yapın, çünkü close() abonelik yönlendiricisini yok eder ve sonraki istekleri reddeder.

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, @modelcontextprotocol/node kaynağından gelir. Kodunuz onu doğrudan içe aktarır, bu nedenle yanına kurun.

Gözlemlenebilirlik

İstek yaşam döngüsü sonuçlarını ve Supabase'in yerleşik gerçeklerini toplamak için createSupabaseMcpServer öğesine bir observer iletin. Burada platform, mevcut platform bağdaştırıcınızdır:

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

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

Sunucu, istek veya yanıt yüklerini otomatik olarak gözlemciye iletmez. Supabase'in yerleşik gerçekleri, sınırlı bir alan ve değer kümesi kullanır; özel gerçekler otomatik gizlilik doğrulaması almaz. observer atlanması tüm gözlem çalışmasını atlar. Gözlemci, sınıflandırıcı ve havuz hataları istek davranışını değiştirmez, ancak senkron gözlemci ve sınıflandırıcı çalışması istekleri engelleyebilir.

Diğer MCP sunucuları

@supabase/mcp-server-postgrest

PostgREST MCP sunucusu, kendi kullanıcılarınızı REST API aracılığıyla uygulamanıza bağlamanıza olanak tanır. Daha fazla ayrıntı için proje README'sine bakın.

Kaynaklar

Geliştiriciler için

Bu projeye nasıl katkıda bulunacağınızla ilgili ayrıntılar için KATKIDA BULUNMA bölümüne bakın.

Lisans

Bu proje Apache 2.0 altında lisanslanmıştır. Ayrıntılar için LİSANS dosyasına bakın.