Supabase MCP
आधिकारिकSupabase परियोजनाओं, डेटाबेस, प्रमाणीकरण, भंडारण, एज फंक्शन और AI एजेंटों से SQL वर्कफ़्लो के प्रबंधन के लिए आधिकारिक Supabase MCP सर्वर।
Supabase MCP के साथ आप क्या कर सकते हैं?
- डेटाबेस टेबल प्रबंधित करें — अपने सहायक से Supabase प्रोजेक्ट के डेटाबेस में टेबल बनाने, बदलने या हटाने के लिए कहें।
- डेटा क्वेरी करें और निरीक्षण करें — अपने सहायक से SQL क्वेरी चलवाएं या डेटा के बारे में सवालों के जवाब देने के लिए टेबल सामग्री प्राप्त करें।
- प्रोजेक्ट कॉन्फ़िगरेशन प्राप्त करें — अपने Supabase प्रोजेक्ट सेटिंग्स के विवरण, जैसे कनेक्शन जानकारी या फीचर फ्लैग, के बारे में पूछें।
- पहुंच दायरा प्रतिबंधित करें — सर्वर को
read_only=trueयाproject_refके साथ कॉन्फ़िगर करें ताकि टूल सुरक्षित, प्रोजेक्ट-विशिष्ट कार्यों तक सीमित रहें।
होस्ट किया गया MCP सर्वर
npx add-mcp 'https://mcp.supabase.com/mcp'Claude Code, Codex, Cursor और अन्य में इंस्टॉल होता है
दस्तावेज़
Supabase MCP सर्वर
अपने Supabase प्रोजेक्ट्स को Cursor, Claude, Windsurf और अन्य AI सहायकों से कनेक्ट करें।
Model Context Protocol (MCP) यह मानकीकृत करता है कि Large Language Models (LLMs) Supabase जैसी बाहरी सेवाओं से कैसे बात करते हैं। यह AI सहायकों को सीधे आपके Supabase प्रोजेक्ट से जोड़ता है और उन्हें टेबल प्रबंधित करने, कॉन्फ़िगरेशन प्राप्त करने और डेटा क्वेरी करने जैसे कार्य करने की अनुमति देता है। टूल्स की पूरी सूची देखें।
सेटअप
1. हमारी सुरक्षा सर्वोत्तम प्रथाओं का पालन करें
MCP सर्वर सेट करने से पहले, हम अनुशंसा करते हैं कि आप हमारी सुरक्षा सर्वोत्तम प्रथाओं को पढ़ें ताकि LLM को अपने Supabase प्रोजेक्ट्स से जोड़ने के जोखिमों और उन्हें कम करने के तरीकों को समझ सकें।
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 SDKcontentटेक्स्ट से 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 से आता है। आपका कोड इसे सीधे आयात करता है, इसलिए इसे साथ में इंस्टॉल करें।
अवलोकनीयता
अनुरोध जीवनचक्र परिणामों और Supabase के अंतर्निहित तथ्यों को एकत्र करने के लिए createSupabaseMcpServer को एक observer पास करें। यहाँ, platform आपका मौजूदा प्लेटफ़ॉर्म एडाप्टर है:
import { createSupabaseMcpServer } from '@supabase/mcp-server-supabase';
const server = createSupabaseMcpServer({
platform,
observer: (context) => ({
record(fact) {
console.info(fact);
},
end(result) {
console.info({ ...context, ...result });
},
}),
});
सर्वर स्वचालित रूप से अनुरोध या प्रतिक्रिया पेलोड को पर्यवेक्षक को अग्रेषित नहीं करता है। Supabase के अंतर्निहित तथ्य बाउंडेड फ़ील्ड और मानों के एक बंद सेट का उपयोग करते हैं; कस्टम तथ्यों को कोई स्वचालित गोपनीयता सत्यापन नहीं मिलता है। observer को छोड़ना सभी अवलोकन कार्य को छोड़ देता है। पर्यवेक्षक, क्लासिफायर और सिंक विफलताएँ अनुरोध व्यवहार को नहीं बदलती हैं, लेकिन सिंक्रोनस पर्यवेक्षक और क्लासिफायर कार्य अनुरोधों को ब्लॉक कर सकते हैं।
अन्य MCP सर्वर
@supabase/mcp-server-postgrest
PostgREST MCP सर्वर आपको REST API के माध्यम से अपने स्वयं के उपयोगकर्ताओं को अपने ऐप से कनेक्ट करने की अनुमति देता है। इसके प्रोजेक्ट README पर अधिक विवरण देखें।
संसाधन
- Model Context Protocol: MCP और इसकी क्षमताओं के बारे में अधिक जानें।
- विकास से उत्पादन तक: उत्पादन वातावरण में परिवर्तनों को सुरक्षित रूप से बढ़ावा देने का तरीका जानें।
डेवलपर्स के लिए
इस प्रोजेक्ट में योगदान करने के तरीके के विवरण के लिए CONTRIBUTING देखें।
लाइसेंस
यह प्रोजेक्ट Apache 2.0 के तहत लाइसेंस प्राप्त है। विवरण के लिए LICENSE फ़ाइल देखें।