supabase-self-hosted-mcp
v2.0.0
Published
A comprehensive MCP server for Supabase - works with self-hosted instances (Coolify, Docker) and Supabase Cloud
Maintainers
Readme
Supabase Self-Hosted MCP
Supabase için kapsamlı Model Context Protocol (MCP) sunucusu. Self-hosted Supabase (Coolify, Docker) ve Supabase Cloud ile çalışır.
Claude Code, Cursor veya herhangi bir MCP uyumlu istemci üzerinden veritabanı yönetimi için 10 kategoride 53 araç.
English Documentation / İngilizce Dokümantasyon
Özellikler
Veritabanı İçgörüsü (8 araç)
- Boyut ve satır sayılarıyla tablo listesi
- Tip, constraint ve varsayılan değerlerle kolon detayları
- Index'ler ve kullanım istatistikleri
- Foreign key ilişkileri
- View'lar, fonksiyonlar, trigger'lar
- Enum tipleri
Güvenlik (6 araç)
- RLS policy listesi
- Tablolarda RLS durumu kontrolü
- RLS policy oluşturma/silme
- RLS etkinleştirme/devre dışı bırakma
- Tablo izinlerini analiz etme
Query İşlemleri (8 araç)
- Filter, sıralama, sayfalama ile SELECT
- INSERT (tekli/toplu)
- Zorunlu filtreli UPDATE
- Zorunlu filtreli DELETE
- Raw SQL çalıştırma
- RPC fonksiyon çağrıları
- Çoklu sorgu transaction'ları
- Query çalıştırma planları (EXPLAIN)
Schema Yönetimi (4 araç)
- Constraint'lerle CREATE TABLE
- ALTER TABLE (kolon ekleme/silme/değiştirme)
- DROP TABLE
- CREATE INDEX
Storage (8 araç)
- Bucket listele/oluştur
- Dosya listele/sil
- Public URL al
- Transform seçenekleriyle signed URL oluştur
- Dosya taşı/kopyala
Auth (6 araç)
- Sayfalama ile kullanıcı listesi
- Kullanıcı detayları
- Kullanıcı oluştur/güncelle/sil
- E-posta daveti gönder
Realtime (4 araç)
- PostgreSQL publication listesi
- Publication tablo listesi
- Tablolar için realtime etkinleştir/devre dışı bırak
Edge Functions (1 araç)
- Edge function çağırma
Optimizasyon (6 araç)
- Normalizasyon analizi
- Kullanılmayan index tespiti
- Index önerileri
- Tekrarlı veri tespiti
- Tablo bloat analizi
- Yavaş sorgu analizi
Sağlık (2 araç)
- Bağlantı istatistikleri
- Yavaş sorgu izleme
Kurulum
Seçenek 1: npm (Önerilen)
npx supabase-self-hosted-mcpVeya global olarak yükle:
npm install -g supabase-self-hosted-mcp
supabase-self-hosted-mcpSeçenek 2: Repository'yi Klonla
git clone https://github.com/abdullah017/supabase-self-hosted-toolkit.git
cd supabase-self-hosted-toolkit
npm install
npm run buildYapılandırma
Environment Variable'ları
# Zorunlu
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your-service-role-key
# İsteğe bağlı (gelişmiş özellikler için)
POSTGRES_URL=postgresql://postgres:password@host:5432/postgres
# veya
DATABASE_URL=postgresql://postgres:password@host:5432/postgres
# İsteğe bağlı ayarlar
LOG_LEVEL=info # debug, info, warn, error
MAX_POOL_SIZE=10 # PostgreSQL bağlantı havuzu boyutu
CONNECTION_TIMEOUT=30000 # Bağlantı zaman aşımı (ms)Kimlik Bilgilerini Alma
Supabase Cloud
- Supabase Dashboard'a git
- Projenizi seçin
- Settings → API
Project URLveservice_rolekey'i kopyalayın
Self-Hosted (Coolify/Docker)
- SUPABASE_URL: Supabase URL'niz (örn.
https://supabase.yourdomain.com) - SUPABASE_SERVICE_KEY: Environment variable'larda
SERVICE_ROLE_KEYolarak bulunur - POSTGRES_URL:
postgresql://postgres:[email protected]:5432/postgres
Claude Code Entegrasyonu
Global Yapılandırma
~/.claude/claude_code_config.json dosyasını düzenle:
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["-y", "supabase-self-hosted-mcp"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_SERVICE_KEY": "your-service-role-key",
"POSTGRES_URL": "postgresql://postgres:password@host:5432/postgres"
}
}
}
}Proje Bazlı Yapılandırma
Proje kök dizininde .claude/mcp.json oluştur:
{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["-y", "supabase-self-hosted-mcp"],
"env": {
"SUPABASE_URL": "${SUPABASE_URL}",
"SUPABASE_SERVICE_KEY": "${SUPABASE_SERVICE_KEY}",
"POSTGRES_URL": "${POSTGRES_URL}"
}
}
}
}Ardından .env dosyanıza değerleri ekleyin.
Cursor Entegrasyonu
Cursor ayarlarına ekleyin (Settings → MCP):
{
"supabase": {
"command": "npx",
"args": ["-y", "supabase-mcp"],
"env": {
"SUPABASE_URL": "your-url",
"SUPABASE_SERVICE_KEY": "your-key"
}
}
}Kullanım Örnekleri
Veritabanı Yapısı
"Veritabanındaki tüm tabloları listele"
"Users tablosunun yapısını göster"
"Foreign key ilişkileri nelerdir?"
"Hangi tablolarda RLS etkin?"Veri Sorgulama
"Users'dan son 10 kaydı getir"
"Products tablosuna yeni ürün ekle"
"id = 123 olan kullanıcının durumunu güncelle"
"SELECT * FROM orders WHERE status = 'pending' sorgusunu çalıştır"Optimizasyon
"Veritabanındaki normalizasyon sorunlarını analiz et"
"Kullanılmayan index'leri bul"
"Orders tablosu için index öner"
"Yavaş sorguları göster"
"Tablo bloat kontrolü yap"Güvenlik
"Users tablosu için kullanıcıların sadece kendi verilerini görmesine izin veren bir RLS policy oluştur"
"Tüm tablolardaki izinleri analiz et"
"Posts tablosunda RLS'i etkinleştir"Schema Yönetimi
"Categories adında yeni bir tablo oluştur"
"Users tablosuna phone kolonu ekle"
"Orders.user_id üzerinde index oluştur"Storage
"Tüm storage bucket'larını listele"
"Documents bucket'ındaki file.pdf için signed URL al"
"image.png'yi archive klasörüne taşı"Auth
"Tüm kullanıcıları listele"
"[email protected] e-posta adresiyle yeni kullanıcı oluştur"
"[email protected] adresini projeye davet et"Realtime
"Messages tablosu için realtime'ı etkinleştir"
"Realtime etkin olan tabloları listele"Araç Referansı
| Kategori | Araçlar |
|----------|---------|
| İçgörü | list_tables, get_table_columns, get_indexes, get_foreign_keys, get_views, get_functions, get_triggers, get_enums |
| Güvenlik | list_rls_policies, check_rls_status, create_rls_policy, drop_rls_policy, toggle_rls, analyze_permissions |
| Query | query, insert, update, delete, raw_sql, rpc, transaction, explain_query |
| Schema | create_table, alter_table, drop_table, create_index |
| Storage | list_buckets, create_bucket, list_files, delete_file, get_public_url, get_signed_url, move_file, copy_file |
| Auth | list_users, get_user, delete_user, create_user, update_user, invite_user |
| Realtime | list_publications, list_publication_tables, enable_realtime, disable_realtime |
| Edge Functions | invoke_edge_function |
| Optimizasyon | analyze_normalization, get_unused_indexes, suggest_indexes, find_duplicate_data, get_table_bloat, get_slow_queries |
| Sağlık | get_connection_stats, get_slow_queries |
Güvenlik Notları
- Service Role Key: Bu anahtar admin yetkilerine sahiptir. Güvenli tutun ve client-side kodda asla açığa çıkarmayın.
- Raw SQL: SQL injection'ı önlemek için mümkün olduğunca parametreli sorgular kullanın.
- RLS: Kullanıcı verisi içeren tablolarda her zaman RLS'i etkinleştirin.
- Ağ: MCP sunucusu sadece yerel olarak veya güvenli bir ortamda çalışmalıdır.
PostgreSQL Özellikleri
Bazı özellikler doğrudan PostgreSQL bağlantısı gerektirir (POSTGRES_URL ile):
- Raw SQL çalıştırma
- Transaction desteği
- Query çalıştırma planları
- Normalizasyon analizi
- Yavaş sorgu analizi
- Tablo bloat tespiti
- Realtime yönetimi
Sorun Giderme
"POSTGRES_URL is required"
Bazı gelişmiş özellikler doğrudan PostgreSQL bağlantısı gerektirir. Environment'a POSTGRES_URL veya DATABASE_URL ekleyin.
Connection refused
- PostgreSQL'in ağınızdan erişilebilir olduğundan emin olun
- Firewall kurallarını kontrol edin
- Bağlantı string formatını doğrulayın
Permission denied
- Service role key'in doğru olduğunu doğrulayın
- PostgreSQL kullanıcısının yeterli yetkiye sahip olduğundan emin olun
Claude Code'da MCP yüklenmiyor
- Config dosyalarındaki JSON sözdizimini kontrol edin
- MCP sunucusuna giden yolu doğrulayın
- Claude Code loglarını kontrol edin:
~/.claude/logs/
Katkıda Bulunma
Katkılarınızı bekliyoruz! Detaylar için Katkı Rehberi'ni okuyun.
Lisans
MIT Lisansı - detaylar için LICENSE dosyasına bakın.
