Metabase
आधिकारिकMetabase के लिए आधिकारिक MCP सर्वर, जो डेटा खोजने, सिमैंटिक लेयर पर क्वेरी बनाने और MCP क्लाइंट के माध्यम से परिणामों को विज़ुअलाइज़ करने में सक्षम बनाता है।
Metabase MCP के साथ आप क्या कर सकते हैं?
- Metabase सामग्री खोजें — कीवर्ड या प्राकृतिक-भाषा क्वेरी का उपयोग करके तालिकाएँ, मीट्रिक्स, कार्ड, डैशबोर्ड और संग्रह खोजें
searchके साथ। - एंटिटीज़ को नेविगेट और निरीक्षण करें — डेटाबेस, स्कीमा, तालिकाओं, प्रश्नों, डैशबोर्ड और मीट्रिक्स के लिए मेटाडेटा पढ़ें
read_resourceके माध्यम सेmetabase://URI के साथ। - क्वेरी बनाएँ और चलाएँ —
construct_queryके साथ किसी तालिका या मीट्रिक के विरुद्ध एक क्वेरी बनाएँ, फिर परिणाम और कॉलम मेटाडेटा प्राप्त करने के लिए इसेexecute_queryके माध्यम से निष्पादित करें। - रॉ SQL चलाएँ —
execute_sqlका उपयोग करके डेटाबेस के विरुद्ध एक नेटिव SQL क्वेरी निष्पादित करें (इसके लिए नेटिव-क्वेरी अनुमति और इंस्टेंस सेटिंग सक्षम होना आवश्यक है)। - प्रश्नों को सहेजें और अपडेट करें — निर्मित क्वेरी से सहेजे गए प्रश्नों (कार्ड) को
create_questionऔरupdate_questionका उपयोग करके बनाएँ या संशोधित करें, जिसमें उन्हें स्थानांतरित करना या संग्रहित करना शामिल है। - डैशबोर्ड बनाएँ और प्रबंधित करें —
create_dashboardके माध्यम से स्वचालित रूप से स्थित सहेजे गए प्रश्नों के साथ नए डैशबोर्ड बनाएँ, औरupdate_dashboardके साथ उनके मेटाडेटा को अपडेट करें या उन्हें संग्रहित करें।
दस्तावेज़
Metabase MCP सर्वर
Metabase में एक अंतर्निहित मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) सर्वर शामिल है जो AI क्लाइंट को सीधे Metabase इंस्टेंस से कनेक्ट करने देता है। यह https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http का उपयोग करता है और Metabase के एजेंट API पर आधारित है, जो खोज, नेविगेट करने, क्वेरी करने, विज़ुअलाइज़ करने और सामग्री बनाने/अपडेट करने के लिए उपकरण प्रदान करता है - सभी कनेक्टिंग उपयोगकर्ता की अनुमतियों के दायरे में।
एंडपॉइंट
MCP सर्वर इस पर उपलब्ध है:
https://{your-metabase.example.com}/api/metabase-mcp
पुराना /api/mcp पथ अभी भी मौजूदा क्लाइंट के लिए उपनाम के रूप में काम करता है, लेकिन /api/metabase-mcp विज्ञापित करने के लिए विहित URL है।
क्लाइंट कनेक्ट करना
किसी भी MCP-संगत क्लाइंट को /api/metabase-mcp एंडपॉइंट पर इंगित करें। उदाहरण के लिए, Claude Code के साथ:
claude mcp add metabase https://{your-metabase.example.com}/api/metabase-mcp --transport streamable-http
Claude Desktop के लिए, उसी URL का उपयोग करके एक कस्टम कनेक्टर बनाएँ।
Cursor के लिए, Settings > MCP खोलें और प्रकार streamable-http और URL के साथ एक नया सर्वर जोड़ें:
https://{your-metabase.example.com}/api/metabase-mcp
प्रमाणीकरण
MCP क्लाइंट OAuth 2.0 के माध्यम से प्रमाणित होते हैं। Metabase अपना स्वयं का एम्बेडेड OAuth सर्वर चलाता है - किसी बाहरी प्रदाता की आवश्यकता नहीं है।
पहली बार कनेक्शन के लिए प्रवाह:
- क्लाइंट Metabase के OAuth एंडपॉइंट की खोज करता है।
- क्लाइंट स्वयं को Metabase के साथ पंजीकृत करता है।
- उपयोगकर्ता को लॉग इन करने और कनेक्शन स्वीकृत करने के लिए Metabase पर पुनर्निर्देशित किया जाता है।
- क्लाइंट को उपयोगकर्ता की Metabase अनुमतियों के दायरे वाला एक एक्सेस टोकन प्राप्त होता है।
ब्राउज़र-आधारित सत्र (कुकी प्रमाणीकरण) भी समर्थित हैं और अप्रतिबंधित दायरे प्राप्त करते हैं।
दायरे
एक्सेस टोकन यह सीमित करने के लिए स्कोप किए जाते हैं कि क्लाइंट किन उपकरणों का उपयोग कर सकता है:
| दायरा | एक्सेस प्रदान करता है |
|---|---|
agent:search | search |
agent:resource:read | read_resource (हमेशा किसी भी प्रमाणित कॉलर को दिया जाता है; प्रति-URI अनुमति जाँच डिस्पैचर के अंदर होती है) |
agent:query:construct | construct_query |
agent:query | query |
agent:query:execute | execute_query |
agent:sql:construct | construct_native_query |
agent:sql:execute | execute_sql |
agent:question:create | create_question |
agent:question:update | update_question ("कार्ड को संग्रह में ले जाना" और संग्रहीत करना भी शामिल है) |
agent:question:execute | execute_question |
agent:metric:create | create_metric |
agent:metric:update | update_metric ("मीट्रिक को संग्रह में ले जाना" और संग्रहीत करना भी शामिल है) |
agent:dashboard:create | create_dashboard |
agent:dashboard:update | update_dashboard (संग्रहीत करना भी शामिल है) |
agent:collection:create | create_collection |
वाइल्डकार्ड पैटर्न (जैसे agent:*) उस उपसर्ग वाले किसी भी दायरे से मेल खाते हैं।
OAuth संरक्षित संसाधन मेटाडेटा इस पर उपलब्ध है:
/.well-known/oauth-protected-resource/api/metabase-mcp
डिफ़ॉल्ट रूप से हमारी सहमति स्क्रीन अनुकूलित करने के अवसर के बिना सभी दायरों तक पहुँच प्रदान करती है।
उपलब्ध उपकरण
MCP सर्वर इन उपकरणों को उजागर करता है, जो एजेंट API एंडपॉइंट मेटाडेटा से गतिशील रूप से उत्पन्न होते हैं:
खोज + पढ़ें
| उपकरण | विवरण |
|---|---|
search | कीवर्ड या प्राकृतिक-भाषा प्रश्नों का उपयोग करके तालिकाओं, मीट्रिक, कार्ड, डैशबोर्ड और संग्रहों की खोज करें। |
read_resource | metabase:// URI द्वारा एक या अधिक Metabase इकाइयाँ पढ़ें। डेटाबेस/स्कीमा/तालिका/संग्रह/प्रश्न/डैशबोर्ड/मीट्रिक/रूपांतरण नेविगेशन को कवर करता है। प्रति कॉल अधिकतम 5 URI। |
क्वेरी निर्माण + निष्पादन
| उपकरण | विवरण |
|---|---|
construct_query | किसी तालिका या मीट्रिक के विरुद्ध क्वेरी बनाएँ। उपलब्ध होने पर उपयोगकर्ता का मूल prompt स्वीकार करता है। execute_query या visualize_query के साथ उपयोग के लिए एक अपारदर्शी query_handle लौटाता है। |
construct_native_query | किसी डेटाबेस के लिए एक नेटिव (कच्ची SQL) क्वेरी बनाएँ। create_question को फीड करने और इसे सहेजने के लिए एक अपारदर्शी query_handle लौटाता है। SQL निष्पादित नहीं करता है; नेटिव हैंडल execute_query/query द्वारा अस्वीकार कर दिए जाते हैं (कच्ची SQL चलाने के लिए execute_sql का उपयोग करें)। |
query | किसी तालिका या मीट्रिक से सीधे क्वेरी करें। निरंतरता टोकन के माध्यम से पृष्ठांकन का समर्थन करता है। |
execute_query | पहले से निर्मित क्वेरी निष्पादित करें और कॉलम मेटाडेटा के साथ परिणाम लौटाएँ। |
execute_sql | किसी डेटाबेस के विरुद्ध कच्ची SQL क्वेरी निष्पादित करें। उपयोगकर्ता के पास लक्ष्य डेटाबेस पर नेटिव-क्वेरी अनुमति होनी आवश्यक है। mcp-execute-sql-enabled सेटिंग के माध्यम से इंस्टेंस-वाइड अक्षम किया जा सकता है। |
execute_question | आईडी द्वारा सहेजा गया प्रश्न चलाएँ और उसकी पंक्तियाँ + कॉलम मेटाडेटा लौटाएँ। कॉलर की अनुमतियों के तहत चलता है। पैरामीटरयुक्त प्रश्न समर्थित नहीं हैं (एक त्रुटि लौटाता है)। |
लिखें
| उपकरण | विवरण |
|---|---|
create_metric | किसी क्वेरी को पुन: प्रयोज्य मीट्रिक के रूप में सहेजें। construct_query से query_handle स्वीकार करता है। क्वेरी में एक एकत्रीकरण और अधिकतम एक दिनांक समूहीकरण की आवश्यकता होती है। |
update_metric | सहेजे गए मीट्रिक को अपडेट करें। पैच शब्दार्थ। collection_id सेट करने से यह स्थानांतरित होता है; archived: true सेट करने से यह संग्रहीत होता है — एक प्रतिवर्ती सॉफ्ट डिलीट, जिसका उपयोग मीट्रिक हटाने के लिए कहे जाने पर किया जाता है। प्रतिस्थापन query अभी भी एक मान्य मीट्रिक होना चाहिए। |
create_question | किसी क्वेरी को नामित प्रश्न (कार्ड) के रूप में सहेजें। construct_query (MBQL) या construct_native_query (नेटिव SQL) से query_handle स्वीकार करता है। नेटिव सहेजने के लिए नेटिव-क्वेरी DB अनुमति की आवश्यकता होती है। |
update_question | सहेजे गए प्रश्न को अपडेट करें। पैच शब्दार्थ। collection_id सेट करने से कार्ड स्थानांतरित होता है। archived: true सेट करने से यह संग्रहीत होता है — एक प्रतिवर्ती सॉफ्ट डिलीट, जिसका उपयोग प्रश्न हटाने के लिए कहे जाने पर किया जाता है। क्वेरी बदलने पर construct_query या construct_native_query हैंडल स्वीकार करता है। |
create_dashboard | एक नया डैशबोर्ड बनाएँ, वैकल्पिक रूप से सहेजे गए प्रश्नों से आबाद (ग्रिड पर ऑटो-पोज़िशन्ड)। |
update_dashboard | डैशबोर्ड का मेटाडेटा अपडेट करें (नाम, विवरण, संग्रह, संग्रहीत — एक प्रतिवर्ती सॉफ्ट डिलीट, जिसका उपयोग डैशबोर्ड हटाने के लिए कहे जाने पर किया जाता है)। |
create_collection | एक नया संग्रह बनाएँ। वैकल्पिक रूप से parent_collection_id के अंतर्गत नेस्टेड। |
क्वेरी परिणाम प्रति अनुरोध 200 पंक्तियों तक सीमित हैं। जब अधिक पंक्तियाँ उपलब्ध हों, तो प्रतिक्रिया में एक continuation_token शामिल होता है जिसे अगला पृष्ठ प्राप्त करने के लिए वापस पास किया जा सकता है।
read_resource सूची प्रतिक्रियाएँ truncated / total संकेतों के साथ 25 आइटम पर सीमित होती हैं; अधिक देखने के लिए विशिष्ट URI में ड्रिल करें, या search के माध्यम से परिष्कृत करें।
संसाधन
सर्वर MCP संसाधनों को उजागर करता है ताकि क्लाइंट उपकरण विवरण को बढ़ाए बिना URI द्वारा पूरक सामग्री प्राप्त कर सकें।
| संसाधन URI | विवरण |
|---|---|
metabase://docs/construct-query.md | construct_query और query के लिए प्रोग्राम सिंटैक्स: स्रोत, संचालन, ऑपरेटर फॉर्म, काम किए गए उदाहरण, नुकसान। |
read_resource उपकरण (ऊपर) Metabase इकाइयों (metabase://question/{id}, metabase://database/{id}/tables, आदि) को नेविगेट करने के लिए एक अलग URI योजना का उपयोग करता है। दो URI नामस्थान स्वतंत्र हैं: metabase://docs/... MCP resources/read के माध्यम से प्राप्त स्थिर संदर्भ सामग्री के लिए है, जबकि metabase://table/... और मित्र read_resource उपकरण को पास किए गए इकाई URI हैं।
समर्थित JSON-RPC विधियाँ
| विधि | विवरण |
|---|---|
initialize | MCP कनेक्शन प्रारंभ करें। सर्वर क्षमताएँ और एक सत्र आईडी लौटाता है। |
notifications/initialized | क्लाइंट अधिसूचना कि आरंभीकरण पूर्ण हो गया है। |
tools/list | उपलब्ध उपकरणों की सूची बनाएँ (टोकन के दायरों द्वारा फ़िल्टर किया गया)। |
tools/call | तर्कों के साथ एक उपकरण कॉल करें। |
resources/list | उपलब्ध संसाधनों की सूची बनाएँ (टोकन के दायरों द्वारा फ़िल्टर किया गया)। |
resources/read | URI द्वारा एक संसाधन पढ़ें। एक आरंभीकृत सत्र की आवश्यकता है। |
ping | कीपअलाइव पिंग। |
अनुरोध व्यक्तिगत रूप से या JSON-RPC बैच के रूप में भेजे जा सकते हैं। सर्वर Accept हेडर के आधार पर JSON या SSE के साथ प्रतिक्रिया करता है।
आर्किटेक्चर
कार्यान्वयन इन फ़ाइलों में रहता है:
-
api.clj- HTTP हैंडलर। JSON-RPC अनुरोधों को पार्स करता है, प्रमाणीकरण और सत्र हेडर को मान्य करता है, मूल जाँच (DNS रिबाइंडिंग सुरक्षा) लागू करता है, और उपयुक्त विधि को डिस्पैच करता है। JSON और SSE दोनों प्रतिक्रिया प्रारूपों का समर्थन करता है। -
tools.clj- उपकरण डिस्पैच और मैनिफेस्ट जनरेशन। एजेंट API एंडपॉइंट मेटाडेटा से उपकरण सूची बनाता है, दायरों की जाँच करता है, और सिंथेटिक एजेंट API अनुरोधों के माध्यम से उपकरण कॉल को रूट करता है। -
resources.clj- MCP संसाधन रजिस्ट्री और हैंडलर। URI द्वारा कुंजीबद्ध दस्तावेज़ीकरण संसाधन (जैसेconstruct_queryसंदर्भ) रखता है,resources/listऔरresources/readपर दायरा-आधारित अभिगम नियंत्रण के साथ। -
scope.clj- स्कोप मिलान तर्क। सटीक मिलान, वाइल्डकार्ड पैटर्न और सत्र-आधारित प्रमाणीकरण के लिए::unrestrictedप्रहरी का समर्थन करता है।
अनुरोध प्रवाह
MCP client
-> POST /api/metabase-mcp (JSON-RPC)
-> Origin + session validation
-> Auth: OAuth bearer token or browser session
-> Scope check against requested tool
-> Synthetic request to Agent API endpoint
-> Response materialized as MCP content
-> JSON or SSE back to client