Supabase MCP

आधिकारिक

Supabase परियोजनाओं, डेटाबेस, प्रमाणीकरण, भंडारण, एज फंक्शन और AI एजेंटों से SQL वर्कफ़्लो के प्रबंधन के लिए आधिकारिक Supabase MCP सर्वर।

Supabase MCP के साथ आप क्या कर सकते हैं?

  • डेटाबेस टेबल प्रबंधित करें — अपने असिस्टेंट से create_table और alter_table जैसे MCP टूल के माध्यम से आपके Supabase प्रोजेक्ट में टेबल बनाने, बदलने या हटाने के लिए कहें।
  • प्रोजेक्ट डेटा क्वेरी करें — अपने AI को आपके डेटाबेस के विरुद्ध केवल-पढ़ने वाली SQL क्वेरी चलाने का निर्देश दें, बिना कोड लिखे पंक्तियाँ प्राप्त करें, परिणाम फ़िल्टर करें, या स्कीमा का निरीक्षण करें।
  • प्रोजेक्ट कॉन्फ़िगरेशन प्राप्त करें — अपने असिस्टेंट से get_project_url जैसे टूल का उपयोग करके प्रोजेक्ट सेटिंग्स, कनेक्शन विवरण, या पर्यावरण जानकारी प्राप्त करें, ताकि सेटअप कार्य सुव्यवस्थित हों।
  • फ़ीचर द्वारा टूल एक्सेस प्रतिबंधित करें — अपने MCP कनेक्शन को विशिष्ट फ़ीचर समूहों (जैसे database या docs) तक सीमित करने के लिए कॉन्फ़िगर करें, या सुरक्षित AI इंटरैक्शन के लिए केवल-पढ़ने वाला मोड सक्षम करें।
  • AI SDK क्लाइंट के साथ एकीकृत करें — Vercel AI SDK के MCP क्लाइंट के लिए टाइप किए गए इनपुट/आउटपुट स्कीमा उत्पन्न करने हेतु createToolSchemas() का उपयोग करें, जिससे आपके ऐप्स में स्थैतिक टूल सत्यापन संभव हो सके।

दस्तावेज़

Supabase MCP सर्वर

MCP Registry Version

अपने Supabase प्रोजेक्ट्स को Cursor, Claude, Windsurf और अन्य AI सहायकों से कनेक्ट करें।

supabase-mcp-demo

मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) यह मानकीकृत करता है कि लार्ज लैंग्वेज मॉडल (LLMs) Supabase जैसी बाहरी सेवाओं से कैसे बात करते हैं। यह AI सहायकों को सीधे आपके Supabase प्रोजेक्ट से जोड़ता है और उन्हें टेबल प्रबंधित करने, कॉन्फ़िगरेशन प्राप्त करने और डेटा क्वेरी करने जैसे कार्य करने की अनुमति देता है। टूल्स की पूरी सूची देखें।

सेटअप

1. हमारी सुरक्षा सर्वोत्तम प्रथाओं का पालन करें

MCP सर्वर सेट करने से पहले, हम अनुशंसा करते हैं कि आप हमारी सुरक्षा सर्वोत्तम प्रथाओं को पढ़ें ताकि आप अपने Supabase प्रोजेक्ट्स में LLM कनेक्ट करने के जोखिमों और उन्हें कम करने के तरीकों को समझ सकें।

2. अपने MCP क्लाइंट को कॉन्फ़िगर करें

अपने क्लाइंट पर Supabase MCP सर्वर कॉन्फ़िगर करने के लिए, हमारे सेटअप दस्तावेज़ीकरण पर जाएँ। आप Supabase डैशबोर्ड में MCP कनेक्शन टैब पर जाकर अपने प्रोजेक्ट के लिए एक कस्टम MCP URL भी उत्पन्न कर सकते हैं।

आपका MCP क्लाइंट सेटअप के दौरान स्वचालित रूप से आपको Supabase में लॉग इन करने के लिए संकेत देगा। उस संगठन को चुनना सुनिश्चित करें जिसमें वह प्रोजेक्ट शामिल है जिसके साथ आप काम करना चाहते हैं।

अधिकांश MCP क्लाइंट्स को निम्नलिखित जानकारी की आवश्यकता होती है:

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

यदि आप अपना MCP क्लाइंट हमारे दस्तावेज़ीकरण में सूचीबद्ध नहीं देखते हैं, तो अपने क्लाइंट के MCP दस्तावेज़ीकरण की जाँच करें और उपरोक्त MCP जानकारी को उनके अपेक्षित प्रारूप (json, yaml, आदि) में कॉपी करें।

CLI

यदि आप Supabase CLI के साथ Supabase को स्थानीय रूप से चला रहे हैं, तो आप http://localhost:54321/mcp पर MCP सर्वर तक पहुँच सकते हैं। वर्तमान में, CLI वातावरण में MCP सर्वर टूल्स का एक सीमित उपसमूह प्रदान करता है और कोई OAuth 2.1 नहीं है।

सेल्फ-होस्टेड

सेल्फ-होस्टेड Supabase के लिए, MCP सर्वर सक्षम करना पृष्ठ देखें। वर्तमान में, सेल्फ-होस्टेड वातावरण में MCP सर्वर टूल्स का एक सीमित उपसमूह प्रदान करता है और कोई OAuth 2.1 नहीं है।

कॉन्फ़िगरेशन विकल्प और टूल्स

उपलब्ध टूल्स और कॉन्फ़िगरेशन विकल्पों की पूरी सूची के लिए Supabase MCP सर्वर दस्तावेज़ देखें।

दस्तावेज़ों में आपके लिए कॉन्फ़िगरेशन विकल्पों को भरने के लिए एक इंटरैक्टिव URL बिल्डर भी शामिल है।

AI SDK के MCP क्लाइंट के साथ उपयोग

@supabase/mcp-server-supabase पैकेज Vercel AI SDK के MCP क्लाइंट के लिए इनपुट और आउटपुट स्कीमा भरने के लिए createToolSchemas() निर्यात करता है। यह Supabase MCP टूल्स को क्लाइंट-साइड सत्यापन और उनके इनपुट और आउटपुट के लिए अनुमानित TypeScript प्रकारों के साथ स्थिर टूल्स के रूप में मानने की अनुमति देता है।

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 सर्वर के URL पैरामीटर के समान फ़िल्टरिंग विकल्प स्वीकार करता है:

  • features: विशिष्ट फीचर समूहों तक सीमित करें (जैसे ['database', 'docs'])। डिफ़ॉल्ट रूप से सभी डिफ़ॉल्ट फीचर समूह।
  • projectScoped: जब true, टूल इनपुट स्कीमा से project_id को हटा देता है और खाता-स्तरीय टूल्स को बाहर कर देता है — project_ref के साथ कॉन्फ़िगर किए गए सर्वर से कनेक्ट करते समय उपयोग करें। डिफ़ॉल्ट false है।
  • readOnly: जब true, म्यूटेटिंग टूल्स को बाहर कर देता है — read_only=true के साथ कॉन्फ़िगर किए गए सर्वर से कनेक्ट करते समय उपयोग करें। डिफ़ॉल्ट 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] यह सर्वर MCP टूल परिणामों में structuredContent नहीं भेजता है। AI SDK content टेक्स्ट से JSON पार्स करने पर वापस आ जाता है।

अधिक जानकारी के लिए, AI SDK दस्तावेज़ों में स्कीमा परिभाषा और टाइप किए गए टूल आउटपुट देखें।

MCP एंडपॉइंट को सेल्फ-होस्ट करना

@supabase/mcp-server-supabase पैकेज अपने स्वयं के एंडपॉइंट से HTTP पर टूल्स प्रदान करने के लिए createSupabaseMcpHandler() निर्यात करता है। यह createSupabaseMcpServer() के समान SupabaseMcpServerOptions स्वीकार करता है, सबसे महत्वपूर्ण रूप से platform

हैंडलर केवल वर्तमान प्रोटोकॉल संशोधन बोलता है। इसे legacy: 'reject' के साथ बनाया गया है, इसलिए एक क्लाइंट जो केवल 2025-युग प्रोटोकॉल बोलता है, उसे सेवा देने के बजाय HTTP 400 प्राप्त होता है।

जब platform प्रति-अनुरोध क्रेडेंशियल रखता है, तो हैंडलर को प्रति अनुरोध बनाएं और प्रतिक्रिया समाप्त होने पर इसे बंद करें। हैंडलर आपके द्वारा प्रदान किए गए platform पर बंद हो जाता है, इसलिए एक साझा हैंडलर उस प्लेटफ़ॉर्म के साथ हर अनुरोध को सेवा देता है।

एक लंबे समय तक चलने वाला हैंडलर ठीक है जब platform साझा करने के लिए होता है, उदाहरण के लिए एक सेवा-खाता टोकन। इसे एक बार बनाएं और शटडाउन पर close() करें, प्रति प्रतिक्रिया नहीं, क्योंकि close() सब्सक्रिप्शन राउटर को तोड़ देता है और बाद के अनुरोधों को अस्वीकार कर देता है।

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 से आता है, जो इस पैकेज की निर्भरता नहीं है। इसे साथ में इंस्टॉल करें।

अन्य MCP सर्वर

@supabase/mcp-server-postgrest

PostgREST MCP सर्वर आपको REST API के माध्यम से अपने स्वयं के उपयोगकर्ताओं को अपने ऐप से कनेक्ट करने की अनुमति देता है। इसके प्रोजेक्ट README पर अधिक विवरण देखें।

संसाधन

डेवलपर्स के लिए

इस प्रोजेक्ट में योगदान करने के विवरण के लिए CONTRIBUTING देखें।

लाइसेंस

यह प्रोजेक्ट Apache 2.0 के तहत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।