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ı listele ve incele — Yapay zekaya, şemalarınızdaki tüm tabloları list_tables kullanarak listelemesini ve ardından execute_sql ile sorgulamasını isteyin.
  • Şema geçişlerini uygula — Yapay zekanın apply_migration aracılığıyla DDL değişiklikleri (örneğin, bir tablo oluşturma veya sütun ekleme) oluşturmasını ve uygulamasını sağlayın.
  • Supabase belgelerinde ara — Yapay zekanın özellikler veya yapılandırma konusunda rehberlik için search_docs çağrısı yapmasını sağlayarak resmi dokümanlardan güncel yanıtlar alın.
  • Hata ayıklama için proje günlüklerini al — Hataları veya performans sorunlarını araştırmak için yapay zekadan get_logs kullanarak hizmet türüne (API, Postgres, Auth vb.) göre günlükleri getirmesini isteyin.
  • Şemanızdan TypeScript türleri oluşturun — Yapay zekanın generate_typescript_types çalıştırmasını ve tür güvenli veritabanı erişimi için çıktıyı bir dosyaya kaydetmesini sağlayın.
  • Edge Functions'ı yönetin — Yapay zekadan list_edge_functions, get_edge_function ve deploy_edge_function kullanarak Edge Functions'ları listelemesini, incelemesini veya dağıtmasını isteyin.

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 Bağlam Protokolü (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 tabloları yönetme, yapılandırma alma ve veri sorgulama gibi görevleri gerçekleştirmelerine olanak tanır. Araçların tam listesine bakın.

Kurulum

1. Güvenlik en iyi uygulamalarımızı takip edin

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 belgelerimizi ziyaret edin. Ayrıca Supabase panosundaki MCP bağlantı sekmesini ziyaret ederek projeniz için özel bir MCP URL'si oluşturabilirsiniz.

MCP istemciniz kurulum sırasında sizden otomatik olarak Supabase'de oturum açmanızı isteyecektir. Ç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 belgelerimizde listelenmiş olarak görmüyorsanız, istemcinizin MCP belgelerini kontrol edin ve yukarıdaki MCP bilgilerini beklenen formata (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 içermez.

Self-hosted

Self-hosted Supabase için, MCP sunucusunu etkinleştirme sayfasına bakın. Şu anda, self-hosted ortamlardaki MCP Sunucusu sınırlı bir araç alt kümesi sunar ve OAuth 2.1 içermez.

Seçenekler

Aşağıdaki seçenekler URL sorgu parametreleri olarak yapılandırılabilir:

  • read_only: Sunucuyu salt okunur sorgular ve araçlarla kısıtlamak için kullanılır. Varsayılan olarak önerilir. Salt okunur moda bakın.
  • project_ref: Sunucuyu belirli bir projeyle kapsamak için kullanılır. Varsayılan olarak önerilir. Bunu atlarsanız, sunucu Supabase hesabınızdaki tüm projelere erişebilir. Proje kapsamlı moda bakın.
  • features: Hangi araç gruplarının etkinleştirileceğini belirtmek için kullanılır. Özellik gruplarına bakın.

Panodaki veya belgelerdeki URL'yi kullanırken, bu parametreler sizin için doldurulacaktır.

Proje kapsamlı mod

Proje kapsamı olmadan, MCP sunucusu Supabase organizasyonunuzdaki tüm projelere erişebilir. Sunucu URL'sinde project_ref sorgu parametresini ayarlayarak sunucuyu belirli bir projeyle kısıtlamanızı öneririz:

https://mcp.supabase.com/mcp?project_ref=<project-ref>

<project-ref> kısmını projenizin kimliğiyle değiştirin. Bunu Supabase proje ayarlarınızda Proje Kimliği altında bulabilirsiniz.

Sunucuyu bir projeyle kapsadıktan sonra, list_projects ve list_organizations gibi hesap düzeyindeki araçlar artık kullanılamaz. Sunucu yalnızca belirtilen projeye ve kaynaklarına erişebilir.

Salt okunur mod

Supabase MCP sunucusunu salt okunur sorgularla kısıtlamak için, sunucu URL'sinde read_only sorgu parametresini ayarlayın:

https://mcp.supabase.com/mcp?read_only=true

Bu ayarı varsayılan olarak etkinleştirmenizi öneririz. Bu, salt okunur bir Postgres kullanıcısı aracılığıyla (execute_sql) SQL yürüterek veritabanlarınızda yazma işlemlerini engeller. Salt okunur modda diğer tüm değişiklik yapan araçlar devre dışı bırakılır, bunlar şunları içerir: apply_migration create_project pause_project restore_project deploy_edge_function create_branch delete_branch merge_branch reset_branch rebase_branch update_storage_config.

Özellik grupları

MCP sunucusuna features sorgu parametresini ileterek belirli araç gruplarını etkinleştirebilir veya devre dışı bırakabilirsiniz. Bu, LLM için hangi araçların kullanılabilir olduğunu özelleştirmenize olanak tanır. Örneğin, yalnızca veritabanı ve dokümanlar araçlarını etkinleştirmek için sunucu URL'sini şu şekilde belirtirsiniz:

https://mcp.supabase.com/mcp?features=database,docs

Kullanılabilir gruplar şunlardır: account, docs, database, debugging, development, functions, storage ve branching.

Bu parametre ayarlanmazsa, varsayılan özellik grupları şunlardır: account, database, debugging, development, docs, functions ve branching.

Araçlar

Not: Bu sunucu 1.0 öncesidir, bu nedenle sürümler arasında bazı kırıcı değişiklikler bekleyin. LLM'ler mevcut araçlara otomatik olarak uyum sağlayacağından, bu çoğu kullanıcıyı etkilememelidir.

Aşağıdaki Supabase araçları, özelliğe göre gruplandırılmış olarak LLM için kullanılabilir.

Hesap

project_ref ayarlanmadığında varsayılan olarak etkindir. features seçeneğiyle bu araç grubunu hedeflemek için account kullanın.

Not: sunucu bir projeyle kapsanmışsa bu araçlar kullanılamaz.

  • list_projects: Kullanıcının tüm Supabase projelerini listeler.
  • get_project: Bir projenin ayrıntılarını alır.
  • create_project: Yeni bir Supabase projesi oluşturur.
  • pause_project: Bir projeyi duraklatır.
  • restore_project: Bir projeyi geri yükler.
  • list_organizations: Kullanıcının üyesi olduğu tüm organizasyonları listeler.
  • get_organization: Bir organizasyonun ayrıntılarını alır.
  • get_cost: Bir organizasyon için yeni proje veya dal maliyetini alır.
  • confirm_cost: Kullanıcının yeni proje veya dal maliyetlerini anladığını onaylar. Yeni bir proje veya dal oluşturmak için bu gereklidir.

Bilgi Tabanı

Varsayılan olarak etkindir. features seçeneğiyle bu araç grubunu hedeflemek için docs kullanın.

  • search_docs: Güncel bilgiler için Supabase belgelerinde arama yapar. LLM'ler bunu sorulara yanıt bulmak veya belirli özellikleri nasıl kullanacaklarını öğrenmek için kullanabilir.

Veritabanı

Varsayılan olarak etkindir. features seçeneğiyle bu araç grubunu hedeflemek için database kullanın.

  • list_tables: Belirtilen şemalardaki tüm tabloları listeler.
  • list_extensions: Veritabanındaki tüm uzantıları listeler.
  • list_migrations: Veritabanındaki tüm geçişleri listeler.
  • apply_migration: Veritabanına bir SQL geçişi uygular. Bu araca iletilen SQL, veritabanı içinde izlenecektir, bu nedenle LLM'ler bunu DDL işlemleri (şema değişiklikleri) için kullanmalıdır.
  • execute_sql: Veritabanında ham SQL yürütür. LLM'ler bunu şemayı değiştirmeyen normal sorgular için kullanmalıdır.

Hata Ayıklama

Varsayılan olarak etkindir. features seçeneğiyle bu araç grubunu hedeflemek için debugging kullanın.

  • get_logs: Bir Supabase projesinin hizmet türüne göre (api, postgres, edge functions, auth, storage, realtime) günlüklerini alır. LLM'ler bunu hata ayıklama ve hizmet performansını izleme konusunda yardımcı olması için kullanabilir.
  • get_advisors: Bir Supabase projesi için danışma bildirimlerinin bir listesini alır. LLM'ler bunu güvenlik açıklarını veya performans sorunlarını kontrol etmek için kullanabilir.

Geliştirme

Varsayılan olarak etkindir. features seçeneğiyle bu araç grubunu hedeflemek için development kullanın.

  • get_project_url: Bir projenin API URL'sini alır.
  • get_publishable_keys: Bir projenin anonim API anahtarlarını alır. Eski anon anahtarlar ve modern yayınlanabilir anahtarlar dahil olmak üzere istemci için güvenli API anahtarlarının bir dizisini döndürür. Yeni uygulamalar için yayınlanabilir anahtarlar önerilir.
  • generate_typescript_types: Veritabanı şemasına dayalı TypeScript türleri oluşturur. LLM'ler bunu bir dosyaya kaydedebilir ve kodlarında kullanabilir.

Edge Functions

Varsayılan olarak etkindir. features seçeneğiyle bu araç grubunu hedeflemek için functions kullanın.

  • list_edge_functions: Bir Supabase projesindeki tüm Edge Functions'ları listeler.
  • get_edge_function: Bir Supabase projesindeki bir Edge Function'ın dosya içeriklerini alır.
  • deploy_edge_function: Bir Supabase projesine yeni bir Edge Function dağıtır. LLM'ler bunu yeni işlevler dağıtmak veya mevcut olanları güncellemek için kullanabilir.

Dallanma (Deneysel, ücretli plan gerektirir)

Varsayılan olarak etkindir. features seçeneğiyle bu araç grubunu hedeflemek için branching kullanın.

  • create_branch: Üretim dalından geçişlerle bir geliştirme dalı oluşturur.
  • list_branches: Tüm geliştirme dallarını listeler.
  • delete_branch: Bir geliştirme dalını siler.
  • merge_branch: Bir geliştirme dalından üretime geçişleri ve edge functions'ları birleştirir.
  • reset_branch: Bir geliştirme dalının geçişlerini önceki bir sürüme sıfırlar.
  • rebase_branch: Geçiş kaymasını ele almak için geliştirme dalını üretim üzerine yeniden temellendirir.

Depolama

Araç sayısını azaltmak için varsayılan olarak devre dışıdır. features seçeneğiyle bu araç grubunu hedeflemek için storage kullanın.

  • list_storage_buckets: Bir Supabase projesindeki tüm depolama paketlerini listeler.
  • get_storage_config: Bir Supabase projesinin depolama yapılandırmasını alır.
  • update_storage_config: Bir Supabase projesinin depolama yapılandırmasını günceller (ücretli plan gerektirir).

Güvenlik riskleri

[!TIP] MCP sunucusunu kullanmadan önce, Supabase Belgelerindeki güvenlik risklerini ve önerilen azaltmaları inceleyin.

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şleri ile çıkışları için çıkarılan TypeScript türleri ile statik araçlar olarak ele alınmasını sağlar.

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

[!NOTE] 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 belgelerindeki Şema Tanımı ve Türlü Araç Çıktıları bölümlerine bakın.

Diğer MCP sunucuları

@supabase/mcp-server-postgrest

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

Kaynaklar

Geliştiriciler için

Bu projeye nasıl katkıda bulunacağınızla ilgili ayrıntılar için CONTRIBUTING dosyasına bakın.

Lisans

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