/ الدليل / الملعب / Supabase
● رسمي supabase-community 🔑 يتطلب مفتاحك

Supabase

بواسطة supabase-community · supabase-community/supabase-mcp

MCP رسمي من Supabase — إدارة المشاريع، تشغيل SQL، نشر Edge Functions، إعدادات المصادقة، عرض السجلات، كل ذلك من الحوار.

MCP رسمي من Supabase يصونه فريق supabase-community. يوفر واجهة حول Supabase Management API مع الوصول إلى Postgres لكل مشروع. يسمح للوكيل بإنشاء فروع، تشغيل الترحيلات، كتابة Edge Functions، الاستعلام عن قاعدة البيانات، وقراءة السجلات — دون مغادرة الحوار.

لماذا تستخدمه

الميزات الأساسية

عرض مباشر

كيف يبدو في الممارسة

supabase.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

افتح Claude Desktop → Settings → Developer → Edit Config. أعد التشغيل بعد الحفظ.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

يستخدم Cursor نفس مخطط mcpServers مثل Claude Desktop. إعدادات المشروع أولى من الإعدادات العامة.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

انقر على أيقونة MCP Servers في شريط Cline الجانبي، ثم "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

نفس الصيغة مثل Claude Desktop. أعد تشغيل Windsurf لتطبيق التغييرات.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "supabase",
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  ]
}

يستخدم Continue مصفوفة من كائنات الخادم بدلاً من خريطة.

~/.config/zed/settings.json
{
  "context_servers": {
    "supabase": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@supabase/mcp-server-supabase"
        ]
      }
    }
  }
}

أضف إلى context_servers. يعيد Zed التحميل تلقائيًا عند الحفظ.

claude mcp add supabase -- npx -y @supabase/mcp-server-supabase

أمر من سطر واحد. تحقق باستخدام claude mcp list. احذف باستخدام claude mcp remove.

حالات الاستخدام

استخدامات عملية: Supabase

اختبار ترحيل مدمر على فرع قاعدة بيانات قبل التطبيق على الإنتاج

👤 المهندسون الذين يطبقون تغييرات البيانات الوصفية ⏱ ~30 min advanced

متى تستخدمه: لديك ترحيل يحذف عمود أو يملأ ملايين الصفوف، وتريد تشغيل تجريبي على فرع بيانات حقيقي أولاً.

المتطلبات الأساسية
  • خطة Supabase Pro أو أعلى — المفرع مقيد بالخطط المدفوعة
  • رمز الوصول الشخصي — supabase.com/dashboard/account/tokens — محدد لمنظمتك
الخطوات
  1. إنشاء فرع من الإنتاج
    أنشئ فرع قاعدة بيانات باسم 'test-drop-legacy-col' من الفرع الرئيسي في المشروع <ref>. انتظر حتى يصبح جاهزاً.✓ تم النسخ
    → تم إنشاء الفرع برابط اتصال خاص به
  2. تشغيل الترحيل على الفرع
    طبّق الترحيل التالي على الفرع الجديد: <paste SQL>. أبلغ عن الصفوف المتأثرة وأي أخطاء.✓ تم النسخ
    → يعمل الترحيل؛ تكون أعداد الصفوف مرئية
  3. التحقق وإما الترقية أو الحذف
    شغّل تحقق من الصحة SELECTs على الفرع (أفضل 10 صفوف من الجداول المتأثرة، عدد NULLs في الأعمدة المتغيرة). إذا بدت جيدة، أخبرني وسأرقّيها؛ وإلا احذف الفرع.✓ تم النسخ
    → مخرجات التحقق، ثم قرار صريح من الإنسان بالموافقة أو الرفض

النتيجة: تم التحقق من الترحيل مقابل شكل البيانات الحقيقي قبل تطبيقه على الإنتاج.

المزالق
  • الفروع لا تحتوي على بيانات الإنتاج الدقيقة — فهي لقطة من وقت إنشاء الفرع — لاحظ طابع زمني اللقطة؛ إذا كان ترحيلك حساساً للصفوف الحديثة، أنشئ فرع أقرب ما يكون إلى وقت التطبيق
  • إنشاء الفرع يكلف ساعات حسابية — احذف الفرع دائماً بعد الاختبار؛ الفروع المهملة تراكم الفواتير
اجمعها مع: github · postgres

كتابة ونشر Supabase Edge Function من الحوار

👤 المطورون الذين يضيفون نقاط نهاية صغيرة في الواجهة الخلفية (webhooks، موَلِّدات signed-URL، إلخ) ⏱ ~20 min intermediate

متى تستخدمه: تحتاج إلى نقطة نهاية HTTP سريعة مع الوصول إلى قاعدة البيانات — مثالي لـ Edge Function — ولا تريد التبديل إلى لوحة التحكم.

الخطوات
  1. إنشاء هيكل الدالة
    أنشئ Edge Function stripe-webhook في المشروع <ref>. يجب أن: تتحقق من توقيع Stripe، ثم INSERT صف في جدول stripe_events. استخدم استيرادات نمط Deno.✓ تم النسخ
    → كود الدالة مكتوب مع اتباع اتفاقيات Deno الصحيحة
  2. النشر
    انشر stripe-webhook للمشروع <ref>. أريني الـ URL الناتج.✓ تم النسخ
    → تم إرجاع الـ URL المنشور
  3. اختبار برسالة عينة
    أرسل بـ POST رسالة اختبار إلى الـ URL واقرأ سجلات الدالة. هل نجح وكتب صف؟✓ تم النسخ
    → تظهر السجلات الاستدعاء؛ الصف مرئي في الجدول

النتيجة: نقطة نهاية مباشرة بالإضافة إلى صف في قاعدة البيانات لإثبات أنها تعمل، في 5 دقائق.

المزالق
  • الأسرار (STRIPE_SECRET) لا يتم إدراجها تلقائياً — اضبطها عبر لوحة تحكم Supabase أو أداة set_secrets MCP قبل الاستدعاء؛ أشر إليها عبر Deno.env.get('STRIPE_SECRET')
  • Edge Functions تبدأ باردة؛ الطلب الأول بطيء — استدعِ مرة واحدة بعد النشر للإحماء قبل التصريح بأنها تعمل
اجمعها مع: stripe · github

تدقيق سياسات Row-Level Security على مشروع Supabase

👤 المطورون والمراجعون الذين يهتمون بالأمان ⏱ ~25 min intermediate

متى تستخدمه: قبل الإطلاق — تريد التأكد من تفعيل RLS لكل جدول وأن السياسات فعلاً تفعل ما تعتقد.

الخطوات
  1. سرد الجداول وحالة RLS
    اسرد كل جدول في schema public. لكل واحد، هل تم تفعيل RLS؟ اسرد السياسات المرفقة.✓ تم النسخ
    → حالة RLS لكل جدول بالإضافة إلى أجسام السياسات
  2. ابحث عن الجداول بدون RLS
    ابرز أي جدول حيث يكون RLS معطل، أو RLS مفعل لكن لا توجد سياسات (تمنع الكل بصمت).✓ تم النسخ
    → قائمة المخاطر مع فئة واضحة لكل واحدة
  3. اختبر كمستخدم مجهول
    لـ 3 جداول حساسة، محاكاة استعلام مستخدم مجهول (باستخدام دور anon). هل يعيد صفوف؟ لا يجب أن يفعل.✓ تم النسخ
    → نتائج فارغة = جيد؛ صفوف مرجعة = خطأ في السياسة

النتيجة: موافقة قبل الإطلاق على موقف المصادقة، مع دليل لكل جدول.

المزالق
  • RLS معطل على جدول كنت تعتقد أنه داخلي — مفتاح service-role يتجاوز RLS بالتصميم — لا تعرضه على جانب العميل. دقق أي مفاتيح يتم استخدامها أين

التحقيق عن سبب عدم قدرة المستخدم على تسجيل الدخول

👤 مهندسو الدعم والمؤسسون الذين يقومون بالخط الأول ⏱ ~10 min beginner

متى تستخدمه: يبلغ المستخدم عن 'رابط تسجيل الدخول الخاص بي لا يعمل' وتريد معرفة ما إذا تم إرسال البريد الإلكتروني وما أحداث المصادقة التي حدثت، إلخ.

الخطوات
  1. ابحث عن المستخدم
    ابحث عن مستخدم المصادقة برسالة البريد الإلكتروني '[email protected]'. أظهر created_at و last_sign_in_at و email_confirmed_at.✓ تم النسخ
    → سجل المستخدم أو حكم 'لم يتم العثور عليه'
  2. تحقق من سجلات المصادقة الحديثة
    اسحب إدخالات سجل المصادقة لذلك user_id في آخر 24 ساعة. مجموعة حسب نوع الحدث.✓ تم النسخ
    → سلسلة أحداث المصادقة (otp_sent, sign_in_failed، إلخ)
  3. حل
    بناءً على الأحداث، ما المشكلة الفعلية؟ اقترح الحل (إعادة إرسال الدعوة، تأكيد يدوي، إعادة تعيين كلمة المرور).✓ تم النسخ
    → التشخيص بالإضافة إلى خطة العمل

النتيجة: تذكرة دعم محلولة مع سجل التدقيق، في 5 دقائق.

المزالق
  • بيانات PII تتدفق إلى سجلات الحوار — تجنب لصق سجلات المستخدم الخام في سجل الحوار المؤرشف؛ حرّر رسائل البريد الإلكتروني عند التلخيص

إنشاء أنواع TypeScript من مخطط Supabase الخاص بك

👤 مطورو الواجهة الأمامية الذين يستخدمون `supabase-js` ⏱ ~10 min beginner

متى تستخدمه: غيرت مخطط قاعدة البيانات وتريد تحديث أنواع العميل لمطابقتها.

الخطوات
  1. إنشاء الأنواع
    أنشئ أنواع TypeScript لـ schema public للمشروع <ref>. احفظ إلى src/types/database.ts.✓ تم النسخ
    → تم كتابة ملف الأنواع
  2. قارن واختبر الاستخدام
    مقارنة بملف الأنواع السابق (في git)، ما الذي تغير؟ هل هناك أي تغييرات تؤدي إلى كسر مواقع الاستدعاء الموجودة في src/?✓ تم النسخ
    → تحليل التأثير لكل تغيير
  3. فتح PR
    التزم بتحديث الأنواع وأي إصلاحات ضرورية على مواقع الاستدعاء. افتح PR بعنوان 'chore: regen db types YYYY-MM-DD'.✓ تم النسخ
    → تم فتح PR مع الفرق الكامل

النتيجة: تبقى الأنواع متزامنة مع المخطط؛ يتم اكتشاف مواقع الاستدعاء المكسورة عند وقت PR، وليس في الإنتاج.

المزالق
  • الأنواع المنشأة لا تتضمن الطرق ما لم يتم تعيين SECURITY INVOKER للطريقة — أضف الطرق بشكل صريح أو وثق الفجوة؛ supabase-js يتعامل معها مع from('view_name') بغض النظر
اجمعها مع: github · filesystem

التركيبات

اجمعها مع خوادم MCP أخرى لتحقيق نتائج x10

supabase + github

فتح PR مع ترحيل، نشر على فرع، إرفاق نتائج الاختبار بـ PR

افتح PR يضيف الترحيل في supabase/migrations/. أنشئ فرع Supabase مع تطبيق الترحيل. علّق على PR بنتائج الاختبار من الفرع.✓ تم النسخ
supabase + stripe

بناء دالة Stripe webhook Edge Function التي تكتب أحداث إلى Supabase

أنشئ Edge Function تستقبل webhooks Stripe وتتحقق من التوقيع وتدرج الأحداث في جدول stripe_events. اضبط endpoint webhook في Stripe للإشارة إليه.✓ تم النسخ
supabase + filesystem

مزامنة ملفات ترحيل SQL المحلية مع حالة مشروع Supabase

قارن /supabase/migrations/ على القرص مع الترحيلات المطبقة على المشروع. طبّق أي ترحيلات مفقودة بالترتيب.✓ تم النسخ

الأدوات

ما يوفره هذا الـ MCP

الأداةالمدخلاتمتى تستدعيهاالتكلفة
list_projects none اكتشف المشاريع التي يمكن لرمزك الوصول إليها free
get_project / pause_project / restore_project project_id: str فحص أو التحكم في مشروع free
create_branch / list_branches / merge_branch / delete_branch project_id, name? المفرع قاعدة البيانات لاختبار الترحيلات (Pro+) Branch compute hours billed
list_tables project_id, schemas?: str[] تفتيش المخطط free
list_extensions / list_migrations project_id بيانات وصفية قاعدة البيانات free
apply_migration project_id, name: str, query: str تطبيق ترحيل محفوظ على قاعدة بيانات المشروع free
execute_sql project_id, query: str SQL حسب الطلب — قراءة أو كتابة free
list_edge_functions / get_edge_function / deploy_edge_function project_id, function name, code, entrypoint إدارة وظائف edge قائمة على Deno Edge function invocations billed
get_logs project_id, service: 'postgres'|'auth'|'edge-function'|... سحب السجلات الحديثة لخدمة free
generate_typescript_types project_id إعادة إنشاء أنواع العميل بعد تغيير المخطط free
get_anon_key / get_project_url / get_advisors project_id بيانات وصفية المشروع؛ المستشارون يشيرون إلى مشاكل الأمان أو الأداء free

التكلفة والحدود

تكلفة التشغيل

حصة API
حدود سرعة Supabase القياسية لكل خطة
الرموز لكل استدعاء
استعلامات المخطط: صغيرة. السجلات ونتائج SQL: يعتمد على حجم البيانات — اضبط دائماً حدود الوقت/الصفوف
التكلفة المالية
MCP مجاني؛ مشروع Supabase حسب الخطة ($0 طبقة مجانية؛ Pro $25/شهر). يستهلك المفرع ساعات حسابية.
نصيحة
الفروع رائعة للاختبار لكنها مكلفة عند نسيانها. احذف الفرع دائماً بعد الدمج أو عند الاستبعاد.

الأمان

الصلاحيات والأسرار ونطاق الأثر

الحد الأدنى من الصلاحيات: رمز الوصول الشخصي مقيد بمشاريع معينة عند الإمكان
تخزين بيانات الاعتماد: رمز الوصول الشخصي في متغير البيئة SUPABASE_ACCESS_TOKEN
نقل البيانات الخارجي: جميع الاستدعاءات إلى api.supabase.com و endpoint المشروع الإقليمي
لا تمنح أبدًا: مفتاح service_role للوكيل إلا إذا كان ضرورياً تماماً — فهو يتجاوز RLS

استكشاف الأخطاء

الأخطاء الشائعة وحلولها

غير مصرح — رمز غير صحيح

انتهت صلاحية الرمز أو نطاق خاطئ. أنشئ واحداً جديداً في supabase.com/dashboard/account/tokens.

تحقق: curl -H 'Authorization: Bearer $TOKEN' https://api.supabase.com/v1/projects
فشل أدوات المفرع مع 'الخطة لا تدعم المفرع'

المفرع هو Pro+. ارفع الخطة أو تخطَّ سير عمل المفرع.

فشل نشر Edge Function: 'كود Deno غير صحيح'

يجب أن يكون كود الدالة متوافقاً مع Deno (لا require بأسلوب Node). تحقق من أن الاستيرادات تستخدم https://deno.land/... أو مواصفات npm:.

يعيد `execute_sql` 'إذن مرفوض'

يستخدم MCP دوراً محدود المشروع. للعمليات المتميزة، شغّل عبر محرر SQL في لوحة التحكم. لا تمنح دور MCP امتياز المسؤول الأعلى.

البدائل

Supabase مقابل البدائل

البديلمتى تستخدمهاالمقايضة
Postgres MCPتحتاج فقط إلى وصول قراءة فقط SQL ولا تحتاج إلى ميزات Supabase المحددةلا مفرع، لا edge functions، لا فحص المصادقة، لا سجلات
Neon MCPأنت على Neon بدلاً من ذلك — له أيضاً مفرعمنصة مختلفة؛ لا مصادقة/edge functions
Supabase CLI directlyتريد سير عمل محلي كامل مع supabase startلا راحة وكيل؛ أفضل للسير البملتزمة

المزيد

الموارد

📖 اقرأ ملف README الرسمي على GitHub

🐙 تصفح القضايا المفتوحة

🔍 تصفح أكثر من 400 خادم MCP و Skills