Grafana
आधिकारिकअपने Grafana इंस्टेंस में डैशबोर्ड खोजें, घटनाओं की जांच करें और डेटास्रोतों से क्वेरी करें।
Grafana MCP के साथ आप क्या कर सकते हैं?
- डैशबोर्ड खोजें और निरीक्षण करें — शीर्षक, फ़ोल्डर, टैग, या स्टार स्थिति द्वारा डैशबोर्ड मांगें, फिर
search_dashboards,get_dashboard_summary, याget_dashboard_propertyके माध्यम से सारांश, संस्करण, या$.titleजैसे विशिष्ट JSONPath गुण प्राप्त करें। - Prometheus और Loki क्वेरी करें — PromQL या LogQL क्वेरी चलाएं, मीट्रिक/लेबल मेटाडेटा प्राप्त करें, और अपने डेटासोर्स से सीधे हिस्टोग्राम प्रतिशतक (p50–p99) की गणना करें।
- अलर्टिंग और घटनाओं का प्रबंधन करें — अलर्ट नियम सूचीबद्ध करें या बनाएं, फायरिंग स्थितियाँ जांचें, और कस्टम फ़ील्ड के साथ Grafana Incident रिकॉर्ड खोजें या अपडेट करें।
- SQL और CloudWatch डेटा एक्सप्लोर करें — ClickHouse, Snowflake, Athena, MySQL, PostgreSQL, या MSSQL में टेबल सूचीबद्ध करें, स्कीमा का वर्णन करें, और मैक्रोज़ के साथ SQL चलाएं; साथ ही नेमस्पेस और डाइमेंशन द्वारा CloudWatch मीट्रिक क्वेरी करें।
- डैशबोर्ड रेंडर करें और लिंक उत्पन्न करें — पैनल या डैशबोर्ड को PNG छवि के रूप में प्राप्त करें, या समय सीमा और वेरिएबल्स के साथ डैशबोर्ड, पैनल और Explore के लिए सटीक डीपलिंक बनाएं।
दस्तावेज़
Grafana MCP सर्वर
Grafana के लिए एक Model Context Protocol (MCP) सर्वर।
यह आपके Grafana इंस्टेंस और आसपास के इकोसिस्टम तक पहुंच प्रदान करता है।
त्वरित आरंभ
uv की आवश्यकता है। अपने MCP क्लाइंट कॉन्फ़िगरेशन (जैसे Claude Desktop, Cursor) में निम्नलिखित जोड़ें:
{
"mcpServers": {
"grafana": {
"command": "uvx",
"args": ["mcp-grafana"],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Grafana Cloud के लिए, GRAFANA_URL को अपने इंस्टेंस URL से बदलें (जैसे https://myinstance.grafana.net)। अधिक इंस्टॉलेशन विकल्पों के लिए Usage देखें, जिसमें Docker, बाइनरी और Helm शामिल हैं।
आवश्यकताएँ
- पूर्ण कार्यक्षमता के लिए Grafana संस्करण 9.0 या उसके बाद आवश्यक है। कुछ सुविधाएँ, विशेष रूप से डेटासोर्स से संबंधित संचालन, पुराने संस्करणों के साथ API एंडपॉइंट की कमी के कारण सही ढंग से काम नहीं कर सकती हैं।
विशेषताएँ
निम्नलिखित विशेषताएँ वर्तमान में MCP सर्वर में उपलब्ध हैं। यह सूची केवल सूचनात्मक उद्देश्यों के लिए है और भविष्य की सुविधाओं के लिए कोई रोडमैप या प्रतिबद्धता नहीं दर्शाती है।
डैशबोर्ड
- डैशबोर्ड खोजें: शीर्षक, फ़ोल्डर UID, टैग या स्टार्ड स्थिति द्वारा डैशबोर्ड खोजें
- UID द्वारा डैशबोर्ड प्राप्त करें: अद्वितीय पहचानकर्ता का उपयोग करके पूर्ण डैशबोर्ड विवरण प्राप्त करें। वर्तमान डैशबोर्ड के बजाय सहेजा गया स्नैपशॉट लोड करने के लिए वैकल्पिक
versionपास करें। चेतावनी: बड़े डैशबोर्ड महत्वपूर्ण संदर्भ विंडो स्थान का उपभोग कर सकते हैं। - डैशबोर्ड संस्करण सूचीबद्ध करें: डैशबोर्ड के सहेजे गए संस्करणों को संक्षिप्त मेटाडेटा के रूप में सूचीबद्ध करें (संस्करण संख्या, लेखक, टाइमस्टैम्प, सहेजें संदेश)
- डैशबोर्ड सारांश प्राप्त करें: पूर्ण JSON के बिना शीर्षक, पैनल गणना, पैनल प्रकार, चर और मेटाडेटा सहित डैशबोर्ड का संक्षिप्त अवलोकन प्राप्त करें ताकि संदर्भ विंडो उपयोग कम से कम हो
- डैशबोर्ड गुण प्राप्त करें: केवल आवश्यक डेटा प्राप्त करने और संदर्भ विंडो खपत कम करने के लिए JSONPath एक्सप्रेशन (जैसे
$.title,$.panels[*].title) का उपयोग करके डैशबोर्ड के विशिष्ट भाग निकालें - डैशबोर्ड अपडेट या बनाएं: मौजूदा डैशबोर्ड संशोधित करें या नए बनाएं। चेतावनी: पूर्ण डैशबोर्ड JSON की आवश्यकता होती है जो बड़ी मात्रा में संदर्भ विंडो स्थान का उपभोग कर सकती है।
- डैशबोर्ड पैच करें: पूर्ण JSON की आवश्यकता के बिना डैशबोर्ड में विशिष्ट परिवर्तन लागू करें, लक्षित संशोधनों के लिए संदर्भ विंडो उपयोग को काफी कम करता है
- पैनल क्वेरी और डेटासोर्स जानकारी प्राप्त करें: डैशबोर्ड के हर पैनल से शीर्षक, क्वेरी स्ट्रिंग और डेटासोर्स जानकारी (UID और प्रकार सहित, यदि उपलब्ध हो) प्राप्त करें
पैनल क्वेरी चलाएं
नोट: पैनल क्वेरी टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंrunpanelqueryजोड़ें।
- पैनल क्वेरी चलाएं: कस्टम समय सीमा और चर ओवरराइड के साथ डैशबोर्ड पैनल की क्वेरी निष्पादित करें।
संदर्भ विंडो प्रबंधन
डैशबोर्ड टूल में अब संदर्भ विंडो उपयोग को प्रभावी ढंग से प्रबंधित करने के लिए कई रणनीतियाँ शामिल हैं (issue #101):
- डैशबोर्ड अवलोकन और संशोधन योजना के लिए
get_dashboard_summaryका उपयोग करें - जब आपको केवल विशिष्ट डैशबोर्ड भागों की आवश्यकता हो तो JSONPath के साथ
get_dashboard_propertyका उपयोग करें - जब तक आपको विशेष रूप से पूर्ण डैशबोर्ड JSON की आवश्यकता न हो,
get_dashboard_by_uidसे बचें
डेटासोर्स
- डेटासोर्स जानकारी सूचीबद्ध करें और प्राप्त करें: सभी कॉन्फ़िगर किए गए डेटासोर्स देखें और प्रत्येक के बारे में विस्तृत जानकारी प्राप्त करें।
- समर्थित डेटासोर्स प्रकार: Prometheus, Loki, ClickHouse, CloudWatch, Elasticsearch, OpenSearch, Snowflake, Athena।
क्वेरी उदाहरण
नोट: क्वेरी उदाहरण टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंexamplesजोड़ें।
- क्वेरी उदाहरण प्राप्त करें: क्वेरी सिंटैक्स सीखने के लिए विभिन्न डेटासोर्स प्रकारों के लिए उदाहरण क्वेरी प्राप्त करें।
Prometheus क्वेरी
- Prometheus क्वेरी करें: Prometheus डेटासोर्स के विरुद्ध PromQL क्वेरी निष्पादित करें (इंस्टेंट और रेंज मीट्रिक क्वेरी दोनों का समर्थन करता है)।
- Prometheus मेटाडेटा क्वेरी करें: Prometheus डेटासोर्स से मीट्रिक मेटाडेटा, मीट्रिक नाम, लेबल नाम और लेबल मान प्राप्त करें।
- हिस्टोग्राम प्रतिशतक क्वेरी करें: histogram_quantile का उपयोग करके हिस्टोग्राम प्रतिशतक मान (p50, p90, p95, p99) की गणना करें।
Loki क्वेरी
- Loki लॉग और मीट्रिक क्वेरी करें: Loki डेटासोर्स के विरुद्ध LogQL का उपयोग करके लॉग क्वेरी और मीट्रिक क्वेरी दोनों चलाएं।
- Loki मेटाडेटा क्वेरी करें: Loki डेटासोर्स से लेबल नाम, लेबल मान और स्ट्रीम आँकड़े प्राप्त करें।
- Loki पैटर्न क्वेरी करें: सामान्य लॉग संरचनाओं और विसंगतियों की पहचान करने के लिए Loki द्वारा पहचाने गए लॉग पैटर्न प्राप्त करें।
InfluxDB क्वेरी
नोट: InfluxDB टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंinfluxdbजोड़ें।
- InfluxDB क्वेरी करें: InfluxQL (v1.x) या Flux (v2.x) का उपयोग करके InfluxDB डेटासोर्स के विरुद्ध क्वेरी निष्पादित करें। डायलेक्ट डेटासोर्स कॉन्फ़िगरेशन से अनुमानित किया जाता है, या
dialectपैरामीटर के माध्यम से स्पष्ट रूप से सेट किया जा सकता है।
SQL डेटासोर्स क्वेरी
नोट: SQL टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंsqlजोड़ें। बैक-संगत उपनामclickhouse,snowflakeऔरathenaभी काम करते हैं।
एकीकृत SQL टूल टूलों के एकल सेट के माध्यम से ClickHouse, Snowflake, Athena, MySQL, PostgreSQL और MSSQL का समर्थन करते हैं। क्वेरी Grafana के डेटासोर्स प्लगइन्स के माध्यम से जाती हैं, इसलिए प्रमाणीकरण डेटासोर्स कॉन्फ़िगरेशन द्वारा संभाला जाता है — क्रेडेंशियल MCP सर्वर द्वारा कभी नहीं देखे जाते हैं।
- डेटाबेस/स्कीमा/कैटलॉग सूचीबद्ध करें: SQL डेटासोर्स के लिए संगठनात्मक इकाइयाँ खोजें। Athena के लिए, कैटलॉग सूचीबद्ध करने के लिए कैटलॉग छोड़ें, या डेटाबेस सूचीबद्ध करने के लिए कैटलॉग पास करें।
- तालिकाएँ सूचीबद्ध करें: मेटाडेटा के साथ डेटाबेस या स्कीमा में तालिकाएँ सूचीबद्ध करें (पंक्ति गणना, आकार जहाँ उपलब्ध हो)।
- तालिका स्कीमा का वर्णन करें: कॉलम नाम, प्रकार, शून्यता, डिफ़ॉल्ट और टिप्पणियाँ प्राप्त करें।
- SQL क्वेरी करें: डेटासोर्स-विशिष्ट मैक्रो प्रतिस्थापन (
$__timeFilter(col),$__from/$__to,$__interval,${varname}), स्वचालित सीमा प्रवर्तन और टेम्पलेट चर समर्थन के साथ SQL क्वेरी निष्पादित करें।
CloudWatch क्वेरी
नोट: CloudWatch टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंcloudwatchजोड़ें।
- CloudWatch नेमस्पेस सूचीबद्ध करें: उपलब्ध AWS CloudWatch नेमस्पेस खोजें।
- CloudWatch मीट्रिक सूचीबद्ध करें: किसी विशिष्ट नेमस्पेस में उपलब्ध मीट्रिक सूचीबद्ध करें।
- CloudWatch आयाम सूचीबद्ध करें: मीट्रिक क्वेरी फ़िल्टर करने के लिए आयाम प्राप्त करें।
- CloudWatch क्वेरी करें: समय सीमा समर्थन के साथ CloudWatch मीट्रिक क्वेरी निष्पादित करें।
Google Cloud Logging क्वेरी
नोट: Google Cloud Logging टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंcloudloggingजोड़ें। Google Cloud Logging डेटासोर्स प्लगइन (googlecloud-logging-datasource) संस्करण 1.8.0 या उसके बाद की आवश्यकता है, जिसके लिए Grafana 11.2+ की आवश्यकता है। पुराने प्लगइन संस्करण एक अलग प्रतिक्रिया लेआउट लौटाते हैं औरquery_cloud_loggingअपग्रेड के लिए पूछते हुए एक त्रुटि रिपोर्ट करता है।
- Cloud Logging प्रोजेक्ट सूचीबद्ध करें: GCP प्रोजेक्ट ID खोजें जिनसे डेटासोर्स लॉग पढ़ सकता है।
- Cloud Logging बकेट और व्यू सूचीबद्ध करें: क्वेरी को स्कोप करने के लिए लॉग बकेट और लॉग व्यू खोजें।
- Cloud Logging क्वेरी करें: समय सीमा और सीमा के साथ Cloud Logging क्वेरी भाषा फ़िल्टर (जैसे
resource.type="k8s_container" AND severity>=ERROR) चलाएं; गंभीरता, बॉडी, लेबल और ट्रेस ID के साथ नवीनतम-पहले प्रविष्टियाँ लौटाता है। GCP प्रमाणीकरण डेटासोर्स कॉन्फ़िगरेशन द्वारा संभाला जाता है।
Graphite क्वेरी
नोट: Graphite टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंgraphiteजोड़ें।
- Graphite क्वेरी करें: Graphite डेटासोर्स के विरुद्ध Graphite रेंडर API क्वेरी निष्पादित करें।
- Graphite मीट्रिक सूचीबद्ध करें: Graphite मीट्रिक पथ ब्राउज़ करें और खोजें।
- Graphite टैग सूचीबद्ध करें: उपलब्ध Graphite टैग और टैग मान सूचीबद्ध करें।
- Graphite घनत्व क्वेरी करें: दिए गए पैटर्न के लिए Graphite मीट्रिक घनत्व क्वेरी करें।
Elasticsearch/OpenSearch क्वेरी
नोट: Elasticsearch/OpenSearch टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंelasticsearchजोड़ें।
- Elasticsearch/OpenSearch क्वेरी करें: Lucene क्वेरी सिंटैक्स या Elasticsearch Query DSL का उपयोग करके Elasticsearch या OpenSearch डेटासोर्स के विरुद्ध खोज क्वेरी निष्पादित करें। समय सीमा द्वारा फ़िल्टरिंग और लॉग, मीट्रिक या किसी भी अनुक्रमित डेटा को पुनः प्राप्त करने का समर्थन करता है। दस्तावेज़ उनके इंडेक्स, ID, स्रोत फ़ील्ड और वैकल्पिक प्रासंगिकता स्कोर के साथ लौटाता है।
Quickwit क्वेरी
नोट: Quickwit टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंquickwitजोड़ें।
- Quickwit क्वेरी करें: Lucene क्वेरी सिंटैक्स या आंशिक Elasticsearch-संगत Query DSL का उपयोग करके Quickwit डेटासोर्स के विरुद्ध खोज क्वेरी निष्पादित करें। समय सीमा द्वारा फ़िल्टरिंग और लॉग या अन्य अनुक्रमित दस्तावेज़ पुनः प्राप्त करने का समर्थन करता है। दस्तावेज़ उनके इंडेक्स, ID, स्रोत फ़ील्ड और वैकल्पिक प्रासंगिकता स्कोर के साथ लौटाता है।
एजेंट ऑब्ज़र्वेबिलिटी
नोट: एजेंट ऑब्ज़र्वेबिलिटी टूल डिफ़ॉल्ट रूप से अक्षम हैं और केवल Grafana Cloud में काम करते हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ्लैग मेंagento11yजोड़ें।
- वार्तालापों की सूची और खोज: हाल के LLM वार्तालापों की सूची देखें या उन्हें समय सीमा पर फ़िल्टर एक्सप्रेशन (मॉडल, प्रदाता, एजेंट, स्थिति, त्रुटि प्रकार, eval परिणाम, और अधिक) के साथ खोजें। खोज परिणामों में त्रुटि गणना, रेटिंग सारांश, मूल्यांकन सारांश, और ट्रेस आईडी शामिल हैं।
- वार्तालाप विवरण प्राप्त करें: एक एकल वार्तालाप को उसकी सभी पीढ़ियों के साथ लाएँ, जिसमें प्रॉम्प्ट और आउटपुट शामिल हैं।
- पीढ़ी विवरण और स्कोर प्राप्त करें: एक पीढ़ी को उसकी आईडी से लाएँ, और उसके मूल्यांकन स्कोर (मूल्यांकनकर्ता, स्कोर कुंजी, मान, पास, स्पष्टीकरण) प्राप्त करें।
- एजेंट कैटलॉग पढ़ें: उन एजेंटों की सूची देखें जो टेलीमेट्री भेजते हैं, एक एजेंट संस्करण को पूर्ण रूप से लाएँ (पूर्ण सिस्टम प्रॉम्प्ट, JSON स्कीमा के साथ हर टूल, और जिन मॉडलों पर यह चला), एजेंट के संस्करण इतिहास को देखें, और प्रति संस्करण मूल्यांकन स्कोर समुच्चय की तुलना करें। प्रभावी संस्करण
sha256:हैश हैं जिन्हें टूल परिवर्तन कभी प्रभावित नहीं करता; एक एजेंट के लिए जो अपना कोई संस्करण रिपोर्ट नहीं करता, वे सिस्टम प्रॉम्प्ट को हैश करते हैं, इसलिए प्रॉम्प्ट संपादन एक नया संस्करण बनाता है। कैटलॉग और संस्करण पंक्तियों में एकtoken_estimateहोता है, जिसे पूर्ण प्रॉम्प्ट लाने से पहले जाँचना उचित है। - मूल्यांकनकर्ता और टेम्पलेट निरीक्षण करें: उन मूल्यांकनकर्ताओं को पढ़ें जिनसे स्कोर आया, वे टेम्पलेट जिनसे वे व्युत्पन्न हुए, और LLM-न्याय मूल्यांकनकर्ताओं के लिए उपलब्ध न्याय प्रदाता और मॉडल। लेखन टूल सक्षम होने पर, मूल्यांकनकर्ता बनाएँ, फ़ोर्क करें, परीक्षण करें, और हटाएँ भी।
- Eval नियम और गार्ड निरीक्षण करें: अतुल्यकालिक eval नियम पढ़ें जो मूल्यांकनकर्ताओं को उत्पादन ट्रैफ़िक से बाँधते हैं, और गार्ड (हुक नियम) जो इनलाइन चलते हैं और चेतावनी या अस्वीकार कर सकते हैं। लेखन टूल सक्षम होने पर, उन्हें बनाएँ, अपडेट करें, पूर्वावलोकन करें, और हटाएँ भी। लेखन और गैर-स्थायी
preview_ruleऔरtest_evaluatorऑपरेशनों कोgrafana-agento11y-app.eval:writeअनुमति की आवश्यकता होती है, जो Agento11y Admin भूमिका द्वारा प्रदान की जाती है। - सहेजे गए वार्तालाप और संग्रह क्यूरेट करें: सहेजे गए वार्तालाप (बुकमार्क जो वार्तालाप को एक स्थिर आईडी, नाम, और टैग देते हैं) और उन्हें समूहित करने वाले संग्रह पढ़ें, जिसमें प्रत्येक संग्रह की सदस्य गणना और हर सहेजे गए वार्तालाप पंक्ति में एम्बेडेड संग्रह शामिल हैं। लेखन टूल सक्षम होने पर, वार्तालाप को बुकमार्क करें, संग्रह बनाएँ और संपादित करें, और सदस्य जोड़ें या हटाएँ। इन लेखनों को समान
grafana-agento11y-app.eval:writeअनुमति की आवश्यकता होती है। - परीक्षण सूट पढ़ें और संपादित करें: संस्करणित परीक्षण सूट की सूची देखें जिनके खिलाफ ऑफ़लाइन प्रयोग चलते हैं, एक को उसके पूर्ण संस्करण इतिहास के साथ पढ़ें, और एक संस्करण के परीक्षण मामलों को पेज करें। लेखन टूल सक्षम होने पर, एक सूट बनाएँ, उसका नाम बदलें या पुनः टैग करें, एक ड्राफ्ट संस्करण खोलें, उसे प्रकाशित करें, और उसके परीक्षण मामले लिखें या हटाएँ। एक प्रकाशित संस्करण जमे हुए है, इसलिए संपादन का मतलब एक नया ड्राफ्ट खोलना है। इन लेखनों को
grafana-agento11y-app.eval:writeकी आवश्यकता होती है। - ऑफ़लाइन प्रयोग पढ़ें: एक परीक्षण सूट पर मूल्यांकन रन की सूची देखें और एक को उसकी मुख्य पास दर, लागत, और टोकन कुल के साथ पढ़ें। प्रति-परीक्षण-मामला रिपोर्ट के माध्यम से परीक्षणों, प्रत्येक न्याय के स्पष्टीकरण के साथ उनके स्कोर, और उनके आर्टिफैक्ट मेटाडेटा तक ड्रिल करें। लेखन टूल सक्षम होने पर, एक प्रयोग का नाम बदलें या पुनः टैग करें और चल रहे एक को रद्द करें, जिसके लिए
grafana-agento11y-app.eval:writeकी आवश्यकता होती है। प्रयोग SDK रनर द्वारा बनाए जाते हैं, इस टूल द्वारा नहीं।
Grafana Assistant
नोट: Assistant टूल डिफ़ॉल्ट रूप से अक्षम हैं और लक्षित Grafana इंस्टेंस पर Grafana Assistant प्लगइन (
grafana-assistant-app) स्थापित होना आवश्यक है। वे लेखन टूल भी हैं (assistant स्टैक स्थिति को बदल सकता है), इसलिए जब--disable-writeसेट होता है तो उन्हें छोड़ दिया जाता है। उन्हें सक्षम करने के लिए, अपने--enabled-toolsफ़्लैग मेंassistantजोड़ें।
- Assistant से पूछें: Grafana Assistant को एक प्राकृतिक-भाषा प्रॉम्प्ट भेजें और पूर्ण पाठ उत्तर की प्रतीक्षा करें। Assistant टूल, मेट्रिक्स, लॉग, और अन्य स्टैक संदर्भ का उपयोग कर सकता है—एक अलग डेटा-स्रोत क्वेरी चलाने से व्यापक। लौटाए गए
contextIdको एक अनुवर्ती कॉल में वापस पास करें ताकि उसी वार्तालाप को जारी रखा जा सके। जटिल कार्यों में कई मिनट लग सकते हैं; कॉल तब तक ब्लॉक होता है जब तक उत्तर पूरा नहीं हो जाता या अनुरोध समय समाप्त नहीं हो जाता (5 मिनट)।
Incidents
- Incidents खोजें, बनाएँ, और अपडेट करें: Grafana Incident में incidents प्रबंधित करें, जिसमें खोज, निर्माण, गतिविधियाँ जोड़ना, और कस्टम फ़ील्ड पढ़ना या सेट करना शामिल है।
Sift Investigations
- Sift investigations सूचीबद्ध करें: Sift investigations की सूची प्राप्त करें, जिसमें एक सीमा पैरामीटर के लिए समर्थन है।
- Sift investigation प्राप्त करें: एक विशिष्ट Sift investigation का विवरण उसके UUID द्वारा प्राप्त करें।
- Sift analyses प्राप्त करें: Sift investigation से एक विशिष्ट विश्लेषण प्राप्त करें।
- लॉग में त्रुटि पैटर्न खोजें: Sift का उपयोग करके Loki लॉग में उन्नत त्रुटि पैटर्न का पता लगाएँ।
- धीमे अनुरोध खोजें: Sift (Tempo) का उपयोग करके धीमे अनुरोधों का पता लगाएँ।
Alerting
- अलर्ट नियम जानकारी सूचीबद्ध करें और लाएँ: Grafana में अलर्ट नियम और उनकी स्थितियाँ (फायरिंग/सामान्य/त्रुटि/आदि) देखें। Grafana-प्रबंधित नियमों और Prometheus या Loki डेटास्रोतों से डेटास्रोत-प्रबंधित नियमों दोनों का समर्थन करता है।
- अलर्ट नियम बनाएँ और अपडेट करें: नए अलर्ट नियम बनाएँ या मौजूदा को संशोधित करें।
- अलर्ट नियम हटाएँ: UID द्वारा अलर्ट नियम हटाएँ।
- अलर्टिंग रूटिंग प्रबंधित करें: अधिसूचना नीतियाँ, संपर्क बिंदु, और समय अंतराल देखें। Grafana-प्रबंधित संपर्क बिंदुओं और बाहरी Alertmanager डेटास्रोतों (Prometheus Alertmanager, Mimir, Cortex) से रिसीवर दोनों का समर्थन करता है।
Grafana OnCall
- शेड्यूल सूचीबद्ध करें और प्रबंधित करें: Grafana OnCall में ऑन-कॉल शेड्यूल देखें और प्रबंधित करें।
- शिफ्ट विवरण प्राप्त करें: विशिष्ट ऑन-कॉल शिफ्टों के बारे में विस्तृत जानकारी प्राप्त करें।
- वर्तमान ऑन-कॉल उपयोगकर्ता प्राप्त करें: देखें कि कौन से उपयोगकर्ता वर्तमान में एक शेड्यूल के लिए ऑन कॉल हैं।
- टीम और उपयोगकर्ता सूचीबद्ध करें: सभी OnCall टीम और उपयोगकर्ता देखें।
- अलर्ट समूह सूचीबद्ध करें: Grafana OnCall से अलर्ट समूहों को विभिन्न मानदंडों द्वारा देखें और फ़िल्टर करें, जिसमें स्थिति, एकीकरण, लेबल, और समय सीमा शामिल है।
- अलर्ट समूह विवरण प्राप्त करें: एक विशिष्ट अलर्ट समूह के बारे में उसकी आईडी द्वारा विस्तृत जानकारी प्राप्त करें।
Admin
नोट: Admin टूल डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने
--enabled-toolsफ़्लैग मेंadminशामिल करें।
- टीम सूचीबद्ध करें: Grafana में सभी कॉन्फ़िगर की गई टीम देखें।
- उपयोगकर्ता सूचीबद्ध करें: Grafana में एक संगठन के सभी उपयोगकर्ता देखें।
- सभी भूमिकाएँ सूचीबद्ध करें: सभी Grafana भूमिकाएँ सूचीबद्ध करें, जिसमें प्रत्यायोजित भूमिकाओं के लिए एक वैकल्पिक फ़िल्टर है।
- भूमिका विवरण प्राप्त करें: UID द्वारा एक विशिष्ट Grafana भूमिका का विवरण प्राप्त करें।
- भूमिका के लिए असाइनमेंट सूचीबद्ध करें: एक भूमिका को सौंपे गए सभी उपयोगकर्ता, टीम, और सेवा खाते सूचीबद्ध करें।
- उपयोगकर्ताओं के लिए भूमिकाएँ सूचीबद्ध करें: एक या अधिक उपयोगकर्ताओं को सौंपी गई सभी भूमिकाएँ सूचीबद्ध करें।
- टीमों के लिए भूमिकाएँ सूचीबद्ध करें: एक या अधिक टीमों को सौंपी गई सभी भूमिकाएँ सूचीबद्ध करें।
- संसाधन के लिए अनुमतियाँ सूचीबद्ध करें: एक विशिष्ट संसाधन (डैशबोर्ड, डेटास्रोत, फ़ोल्डर, आदि) के लिए परिभाषित सभी अनुमतियाँ सूचीबद्ध करें।
- Grafana संसाधन का वर्णन करें: एक संसाधन प्रकार के लिए उपलब्ध अनुमतियाँ और असाइनमेंट क्षमताएँ सूचीबद्ध करें।
User
- उपयोगकर्ता जानकारी: वर्तमान Grafana पहचान प्राप्त करें — लॉगिन, ईमेल, नाम, क्या यह एक Grafana (सर्वर) admin है, वर्तमान संगठन, और वे संगठन जिन तक क्रेडेंशियल पहुँच सकता है (भूमिकाओं के साथ)। बहु-संगठन अनुरोधों के लिए मान्य
orgIdमान खोजने के लिए इसका उपयोग करें।
Navigation
- डीपलिंक उत्पन्न करें: LLM URL अनुमान पर भरोसा करने के बजाय Grafana संसाधनों के लिए सटीक डीपलिंक URL बनाएँ।
- डैशबोर्ड लिंक: उनके UID का उपयोग करके डैशबोर्ड के लिए सीधे लिंक उत्पन्न करें (जैसे,
http://localhost:3000/d/dashboard-uid) - पैनल लिंक: viewPanel पैरामीटर के साथ डैशबोर्ड के भीतर विशिष्ट पैनलों के लिए लिंक बनाएँ (जैसे,
http://localhost:3000/d/dashboard-uid?viewPanel=5) - एक्सप्लोर लिंक: पूर्व-कॉन्फ़िगर डेटास्रोतों के साथ Grafana Explore के लिए लिंक उत्पन्न करें (जैसे,
http://localhost:3000/explore?schemaVersion=1&panes={"a":{"datasource":"prometheus-uid"}})। 10.2 से नीचे का Grafanapanesनहीं समझता है, इसलिए उन संस्करणों के लिए विरासत?left={...}प्रारूप उत्सर्जित होता है। - समय सीमा समर्थन: लिंक में समय सीमा पैरामीटर जोड़ें (
from=now-1h&to=now) - कस्टम पैरामीटर: डैशबोर्ड चर या रीफ़्रेश अंतराल जैसे अतिरिक्त क्वेरी पैरामीटर शामिल करें
- डैशबोर्ड लिंक: उनके UID का उपयोग करके डैशबोर्ड के लिए सीधे लिंक उत्पन्न करें (जैसे,
Annotations
- Annotations प्राप्त करें: फ़िल्टर के साथ annotations क्वेरी करें। समय सीमा, डैशबोर्ड UID, टैग, और मैच मोड का समर्थन करता है।
- Annotation बनाएँ: डैशबोर्ड या पैनल पर एक नया annotation बनाएँ।
- Graphite Annotation बनाएँ: Graphite प्रारूप (
what,when,tags,data) का उपयोग करके annotations बनाएँ। - Annotation अपडेट करें: एक मौजूदा annotation के सभी फ़ील्ड बदलें (पूर्ण अपडेट)।
- Annotation पैच करें: एक annotation के केवल विशिष्ट फ़ील्ड अपडेट करें (आंशिक अपडेट)।
- Annotation हटाएँ: एक annotation को ID द्वारा स्थायी रूप से हटाएँ।
- Annotation टैग प्राप्त करें: वैकल्पिक फ़िल्टरिंग के साथ उपलब्ध annotation टैग सूचीबद्ध करें।
Snapshots
- Snapshots सूचीबद्ध करें: वैकल्पिक क्वेरी और सीमा फ़िल्टर के साथ डैशबोर्ड snapshots सूचीबद्ध करें।
- Snapshot प्राप्त करें: स्नैपशॉट कुंजी द्वारा स्नैपशॉट मेटाडेटा और डैशबोर्ड पेलोड प्राप्त करें।
- Snapshot बनाएँ: पूर्ण डैशबोर्ड पेलोड से एक डैशबोर्ड स्नैपशॉट बनाएँ, वैकल्पिक समाप्ति और बाहरी स्नैपशॉट विकल्पों के साथ।
- Snapshot हटाएँ: स्नैपशॉट कुंजी द्वारा एक स्नैपशॉट हटाएँ।
Rendering
- पैनल या डैशबोर्ड छवि प्राप्त करें: एक Grafana डैशबोर्ड पैनल या पूर्ण डैशबोर्ड को PNG छवि के रूप में रेंडर करें। रिपोर्ट, अलर्ट, या प्रस्तुतियों में उपयोग के लिए छवि को base64 एन्कोडेड डेटा के रूप में लौटाता है। आयाम, समय सीमा, थीम, स्केल, और डैशबोर्ड चर को अनुकूलित करने का समर्थन करता है। वैकल्पिक
provisioningPreviewपैरामीटर के माध्यम से प्रावधान रिपॉजिटरी शाखा (जैसे git-sync PR पूर्वावलोकन) से अभी तक लागू नहीं किए गए डैशबोर्ड को रेंडर करने का भी समर्थन करता है।- नोट: Grafana Image Renderer सेवा स्थापित और कॉन्फ़िगर होना आवश्यक है।
Provisioning
- प्रावधान रिपॉजिटरी सूचीबद्ध करें: इस Grafana इंस्टेंस के लिए कॉन्फ़िगर की गई प्रावधान रिपॉजिटरी सूचीबद्ध करें (जैसे git-sync स्रोत), प्रत्येक रिपॉजिटरी के स्लग को उसके स्रोत URL, शाखा, पथ, सिंक स्थिति, और स्वास्थ्य के साथ लौटाता है।
- प्रावधान फ़ाइल सत्यापित करें: किसी दी गई शाखा या कमिट पर प्रावधान रिपॉजिटरी से एक फ़ाइल का ड्राई-रन-लागू करें। लौटाता है कि क्या इसे स्वीकार किया जाएगा, संसाधन क्रिया (बनाएँ/अपडेट), लक्ष्य संसाधन प्रकार, और कोई संरचित सत्यापन त्रुटियाँ — वही प्रवेश सतह जो Grafana का PR टिप्पणीकर्ता उपयोग करता है।
टूल की सूची कॉन्फ़िगर करने योग्य है, इसलिए आप चुन सकते हैं कि आप MCP क्लाइंट को कौन से टूल उपलब्ध कराना चाहते हैं।
यह उपयोगी है यदि आप कुछ कार्यक्षमता का उपयोग नहीं करते हैं या यदि आप संदर्भ विंडो का बहुत अधिक स्थान नहीं लेना चाहते हैं।
टूल की एक श्रेणी को अक्षम करने के लिए, सर्वर शुरू करते समय --disable-<category> फ़्लैग का उपयोग करें। उदाहरण के लिए, OnCall टूल को अक्षम करने के लिए, --disable-oncall का उपयोग करें, या नेविगेशन डीपलिंक उत्पादन को अक्षम करने के लिए, --disable-navigation का उपयोग करें।
RBAC Permissions
प्रत्येक टूल को ठीक से कार्य करने के लिए विशिष्ट RBAC अनुमतियों की आवश्यकता होती है। MCP सर्वर के लिए एक सेवा खाता बनाते समय, सुनिश्चित करें कि आप किन टूल का उपयोग करने की योजना बना रहे हैं, उसके आधार पर उसके पास आवश्यक अनुमतियाँ हैं। सूचीबद्ध अनुमतियाँ न्यूनतम आवश्यक क्रियाएँ हैं - आपको अपने उपयोग के मामले के आधार पर उपयुक्त स्कोप (जैसे, datasources:*, dashboards:*, folders:*) की भी आवश्यकता हो सकती है।
टिप: यदि आप Grafana RBAC से परिचित नहीं हैं या आप कई सूक्ष्म स्कोप कॉन्फ़िगर करने के बजाय एक तेज़, सरल सेटअप चाहते हैं, तो आप सेवा खाते को Editor जैसी अंतर्निहित भूमिका सौंप सकते हैं। Editor भूमिका व्यापक पढ़ने/लिखने की पहुँच प्रदान करती है जो अधिकांश MCP सर्वर संचालन की अनुमति देगी; यह मैन्युअल रूप से लागू स्कोपों की तुलना में कम सूक्ष्म (और इसलिए कम प्रतिबंधात्मक) है, इसलिए इसका उपयोग केवल तभी करें जब सुविधा सख्त न्यूनतम-विशेषाधिकार पहुँच से अधिक महत्वपूर्ण हो।
नोट: Grafana Incident और Sift टूल सूक्ष्म-दानेदार RBAC अनुमतियों के बजाय बुनियादी Grafana भूमिकाओं का उपयोग करते हैं:
- Viewer भूमिका: केवल-पढ़ने के संचालन के लिए आवश्यक (incidents सूचीबद्ध करें, investigations प्राप्त करें)
- Editor भूमिका: लेखन संचालन के लिए आवश्यक (incidents बनाएँ, investigations संशोधित करें)
Grafana RBAC के बारे में अधिक जानकारी के लिए, आधिकारिक दस्तावेज़ देखें।
RBAC Scopes
स्कोप उन विशिष्ट संसाधनों को परिभाषित करते हैं जिन पर अनुमतियाँ लागू होती हैं। प्रत्येक क्रिया के लिए उपयुक्त अनुमति और स्कोप संयोजन दोनों की आवश्यकता होती है।
सामान्य स्कोप पैटर्न:
-
व्यापक पहुंच: संगठन-व्यापी पहुंच के लिए
*वाइल्डकार्ड का उपयोग करेंdatasources:*- सभी डेटास्रोतों तक पहुंचdashboards:*- सभी डैशबोर्ड तक पहुंचfolders:*- सभी फ़ोल्डरों तक पहुंचteams:*- सभी टीमों तक पहुंच
-
सीमित पहुंच: व्यक्तिगत संसाधनों तक पहुंच प्रतिबंधित करने के लिए विशिष्ट UID या ID का उपयोग करें
datasources:uid:prometheus-uid- केवल एक विशिष्ट Prometheus डेटास्रोत तक पहुंचdashboards:uid:abc123- केवल UIDabc123वाले डैशबोर्ड तक पहुंचfolders:uid:xyz789- केवल UIDxyz789वाले फ़ोल्डर तक पहुंचteams:id:5- केवल ID5वाली टीम तक पहुंचglobal.users:id:123- केवल ID123वाले उपयोगकर्ता तक पहुंच
उदाहरण:
-
पूर्ण MCP सर्वर पहुंच: सभी टूल्स के लिए व्यापक अनुमतियाँ प्रदान करें
datasources:* (datasources:read, datasources:query) dashboards:* (dashboards:read, dashboards:create, dashboards:write) folders:* (for dashboard creation and alert rules) teams:* (teams:read) global.users:* (users:read) -
सीमित डेटास्रोत पहुंच: केवल विशिष्ट Prometheus और Loki इंस्टेंस को क्वेरी करें
datasources:uid:prometheus-prod (datasources:query) datasources:uid:loki-prod (datasources:query) -
डैशबोर्ड-विशिष्ट पहुंच: केवल विशिष्ट डैशबोर्ड पढ़ें
dashboards:uid:monitoring-dashboard (dashboards:read) dashboards:uid:alerts-dashboard (dashboards:read)
टूल्स
| टूल | श्रेणी | विवरण | आवश्यक RBAC अनुमतियाँ | आवश्यक स्कोप्स |
|---|---|---|---|---|
list_teams | एडमिन | सभी टीमों की सूची बनाएं | teams:read | teams:* या teams:id:1 |
list_users_by_org | एडमिन | किसी संगठन में सभी उपयोगकर्ताओं की सूची बनाएं | users:read | global.users:* या global.users:id:123 |
list_all_roles | एडमिन | सभी Grafana भूमिकाओं की सूची बनाएं | roles:read | roles:* |
get_role_details | एडमिन | किसी Grafana भूमिका के विवरण प्राप्त करें | roles:read | roles:uid:editor |
get_role_assignments | एडमिन | किसी भूमिका के लिए असाइनमेंट की सूची बनाएं | roles:read | roles:uid:editor |
list_user_roles | एडमिन | उपयोगकर्ताओं के लिए भूमिकाओं की सूची बनाएं | roles:read | global.users:id:123 |
list_team_roles | एडमिन | टीमों के लिए भूमिकाओं की सूची बनाएं | roles:read | teams:id:7 |
get_resource_permissions | एडमिन | किसी संसाधन के लिए अनुमतियों की सूची बनाएं | permissions:read | dashboards:uid:abcd1234 |
get_resource_description | एडमिन | किसी Grafana संसाधन प्रकार का वर्णन करें | permissions:read | dashboards:* |
user_info | उपयोगकर्ता | वर्तमान पहचान, क्षमताएं, और सुलभ संगठन | कोई नहीं (साइन-इन उपयोगकर्ता) | — |
search_dashboards | खोज | क्वेरी, फ़ोल्डर UID, टैग, या स्टार्ड द्वारा डैशबोर्ड खोजें | dashboards:read | dashboards:* या dashboards:uid:abc123 |
get_dashboard_by_uid | डैशबोर्ड | uid द्वारा डैशबोर्ड प्राप्त करें, वैकल्पिक रूप से सहेजा गया संस्करण | dashboards:read | dashboards:uid:abc123 |
list_dashboard_versions | डैशबोर्ड | डैशबोर्ड के सहेजे गए संस्करणों की सूची बनाएं (संस्करण, लेखक, समय, संदेश) | dashboards:read | dashboards:uid:abc123 |
update_dashboard | डैशबोर्ड | नया डैशबोर्ड अपडेट या बनाएं | dashboards:create, dashboards:write | dashboards:*, folders:* या folders:uid:xyz789 |
get_dashboard_panel_queries | डैशबोर्ड | डैशबोर्ड से पैनल शीर्षक, क्वेरी, डेटासोर्स UID और प्रकार प्राप्त करें | dashboards:read | dashboards:uid:abc123 |
run_panel_query | RunPanelQuery* | एक या अधिक डैशबोर्ड पैनल क्वेरी निष्पादित करें | dashboards:read, datasources:query | dashboards:uid:*, datasources:uid:* |
get_dashboard_property | डैशबोर्ड | JSONPath एक्सप्रेशन का उपयोग करके डैशबोर्ड के विशिष्ट भाग निकालें | dashboards:read | dashboards:uid:abc123 |
get_dashboard_summary | डैशबोर्ड | पूर्ण JSON के बिना डैशबोर्ड का संक्षिप्त सारांश प्राप्त करें | dashboards:read | dashboards:uid:abc123 |
list_datasources | डेटासोर्स | डेटासोर्स की सूची बनाएं | datasources:read | datasources:* |
get_datasource | डेटासोर्स | UID या नाम से डेटासोर्स प्राप्त करें | datasources:read | datasources:uid:prometheus-uid |
get_query_examples | उदाहरण* | डेटासोर्स प्रकार के लिए उदाहरण क्वेरी प्राप्त करें | datasources:read | datasources:* |
query_prometheus | Prometheus | Prometheus डेटासोर्स के विरुद्ध क्वेरी निष्पादित करें | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_metric_metadata | Prometheus | मीट्रिक मेटाडेटा की सूची बनाएं | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_metric_names | Prometheus | उपलब्ध मीट्रिक नामों की सूची बनाएं | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_label_names | Prometheus | चयनकर्ता से मेल खाने वाले लेबल नामों की सूची बनाएं | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_label_values | Prometheus | किसी विशिष्ट लेबल के लिए मानों की सूची बनाएं | datasources:query | datasources:uid:prometheus-uid |
query_prometheus_histogram | Prometheus | हिस्टोग्राम प्रतिशतक मानों की गणना करें | datasources:query | datasources:uid:prometheus-uid |
list_incidents | घटना | Grafana घटना में घटनाओं की सूची बनाएं, वैकल्पिक रूप से उनके कस्टम फ़ील्ड मानों के साथ | दर्शक भूमिका | N/A |
create_incident | घटना | Grafana घटना में घटना बनाएं, वैकल्पिक रूप से कस्टम फ़ील्ड सेट करें | संपादक भूमिका | N/A |
add_activity_to_incident | घटना | Grafana घटना में घटना में गतिविधि आइटम जोड़ें | संपादक भूमिका | N/A |
update_incident | घटना | Grafana घटना में घटना अपडेट करें (स्थिति, गंभीरता, शीर्षक, या कस्टम फ़ील्ड) | संपादक भूमिका | N/A |
get_incident | घटना | ID द्वारा एकल घटना प्राप्त करें, इसके कस्टम फ़ील्ड सहित | दर्शक भूमिका | N/A |
list_incident_custom_fields | घटना | घटनाओं के लिए कॉन्फ़िगर किए गए कस्टम फ़ील्ड की सूची बनाएं, उनके प्रकार और चयन विकल्पों के साथ | दर्शक भूमिका | N/A |
query_loki_logs | Loki | LogQL का उपयोग करके लॉग क्वेरी और पुनर्प्राप्त करें (या तो लॉग या मीट्रिक क्वेरी) | datasources:query | datasources:uid:loki-uid |
list_loki_label_names | Loki | लॉग में सभी उपलब्ध लेबल नामों की सूची बनाएं | datasources:query | datasources:uid:loki-uid |
list_loki_label_values | Loki | किसी विशिष्ट लॉग लेबल के लिए मानों की सूची बनाएं | datasources:query | datasources:uid:loki-uid |
query_loki_stats | Loki | लॉग स्ट्रीम के बारे में आँकड़े प्राप्त करें | datasources:query | datasources:uid:loki-uid |
query_loki_patterns | Loki | सामान्य संरचनाओं की पहचान करने के लिए पता लगाए गए लॉग पैटर्न क्वेरी करें | datasources:query | datasources:uid:loki-uid |
analyze_loki_labels | Loki | Loki लेबल रणनीति का ऑडिट करें (लाइव या स्थिर) और वैकल्पिक रूप से क्वेरी प्रदर्शन का निदान करें | datasources:query | datasources:uid:loki-uid |
suggest_loki_alloy_label_config | कॉन्फ़िगर | अनुमोदित लेबल लागू करने वाला Alloy loki.process स्निपेट उत्पन्न करें | N/A | N/A |
query_influxdb | InfluxDB | InfluxQL (v1) या Flux (v2) का उपयोग करके InfluxDB से क्वेरी करें | datasources:query | datasources:uid:influxdb-uid |
list_sql_databases | SQL* | SQL डेटासोर्स से डेटाबेस, स्कीमा, या कैटलॉग सूचीबद्ध करें | datasources:query | datasources:uid:* |
list_sql_tables | SQL* | SQL डेटासोर्स में टेबल सूचीबद्ध करें | datasources:query | datasources:uid:* |
describe_sql_table | SQL* | किसी टेबल के लिए कॉलम स्कीमा प्राप्त करें | datasources:query | datasources:uid:* |
query_sql | SQL* | मैक्रो प्रतिस्थापन के साथ SQL क्वेरी निष्पादित करें | datasources:query | datasources:uid:* |
list_cloudwatch_namespaces | CloudWatch* | उपलब्ध AWS CloudWatch नेमस्पेस सूचीबद्ध करें | datasources:query | datasources:uid:* |
list_cloudwatch_metrics | CloudWatch* | नेमस्पेस में मेट्रिक्स सूचीबद्ध करें | datasources:query | datasources:uid:* |
list_cloudwatch_dimensions | CloudWatch* | किसी मेट्रिक के लिए आयाम सूचीबद्ध करें | datasources:query | datasources:uid:* |
list_cloudwatch_dimension_values | CloudWatch* | किसी आयाम कुंजी के लिए मान सूचीबद्ध करें | datasources:query | datasources:uid:* |
query_cloudwatch | CloudWatch* | CloudWatch मेट्रिक क्वेरी निष्पादित करें | datasources:query | datasources:uid:* |
list_cloud_logging_projects | Cloud Logging* | Google Cloud Logging डेटासोर्स द्वारा पठनीय GCP प्रोजेक्ट सूचीबद्ध करें | datasources:query | datasources:uid:* |
list_cloud_logging_buckets | Cloud Logging* | GCP प्रोजेक्ट में लॉग बकेट सूचीबद्ध करें | datasources:query | datasources:uid:* |
list_cloud_logging_views | Cloud Logging* | लॉग बकेट में लॉग दृश्य सूचीबद्ध करें | datasources:query | datasources:uid:* |
query_cloud_logging | Cloud Logging* | Cloud Logging क्वेरी भाषा के साथ लॉग क्वेरी करें | datasources:query | datasources:uid:* |
query_elasticsearch | Elasticsearch/OpenSearch* | Lucene सिंटैक्स या Query DSL का उपयोग करके Elasticsearch या OpenSearch क्वेरी करें | datasources:query | datasources:uid:datasource-uid |
query_quickwit | Quickwit* | Lucene सिंटैक्स या Query DSL का उपयोग करके Quickwit क्वेरी करें | datasources:query | datasources:uid:quickwit-uid |
alerting_manage_rules | Alerting | अलर्ट नियम प्रबंधित करें (सूची, प्राप्त करें, संस्करण, बनाएं, अपडेट करें, हटाएं) | alert.rules:read + alert.rules:write परिवर्तनों के लिए | folders:* या folders:uid:alerts-folder |
alerting_manage_routing | Alerting | अधिसूचना नीतियां, संपर्क बिंदु, और समय अंतराल प्रबंधित करें | alert.notifications:read | वैश्विक दायरा |
alerting_manage_silences | Alerting | अलर्टिंग मौन प्रबंधित करें (सूची, प्राप्त करें, बनाएं, अपडेट करें, समाप्त करें) | alert.instances:read + alert.instances:write परिवर्तनों के लिए | वैश्विक दायरा |
list_oncall_schedules | OnCall | Grafana OnCall से शेड्यूल सूचीबद्ध करें | grafana-oncall-app.schedules:read | प्लगइन-विशिष्ट दायरे |
get_oncall_shift | OnCall | किसी विशिष्ट OnCall शिफ्ट के लिए विवरण प्राप्त करें | grafana-oncall-app.schedules:read | प्लगइन-विशिष्ट दायरे |
get_current_oncall_users | OnCall | किसी विशिष्ट शेड्यूल के लिए वर्तमान में ऑन-कॉल उपयोगकर्ता प्राप्त करें | grafana-oncall-app.schedules:read | प्लगइन-विशिष्ट दायरे |
list_oncall_teams | OnCall | Grafana OnCall से टीमें सूचीबद्ध करें | grafana-oncall-app.user-settings:read | प्लगइन-विशिष्ट दायरे |
list_oncall_users | OnCall | Grafana OnCall से उपयोगकर्ता सूचीबद्ध करें | grafana-oncall-app.user-settings:read | प्लगइन-विशिष्ट दायरे |
list_alert_groups | OnCall | फ़िल्टरिंग विकल्पों के साथ Grafana OnCall से अलर्ट समूह सूचीबद्ध करें | grafana-oncall-app.alert-groups:read | प्लगइन-विशिष्ट दायरे |
get_alert_group | OnCall | इसके ID द्वारा Grafana OnCall से एक विशिष्ट अलर्ट समूह प्राप्त करें | grafana-oncall-app.alert-groups:read | प्लगइन-विशिष्ट दायरे |
update_alert_group | OnCall | अलर्ट समूह को स्वीकार करें, अस्वीकार करें, हल करें, या अनसुलझा करें | grafana-oncall-app.alert-groups:write (और :read) | प्लगइन-विशिष्ट दायरे |
get_sift_investigation | Sift | इसके UUID द्वारा एक मौजूदा Sift जांच प्राप्त करें | दर्शक भूमिका | N/A |
get_sift_analysis | Sift | Sift जांच से एक विशिष्ट विश्लेषण प्राप्त करें | दर्शक भूमिका | N/A |
list_sift_investigations | Sift | वैकल्पिक सीमा के साथ Sift जांच की सूची प्राप्त करें | दर्शक भूमिका | N/A |
find_error_pattern_logs | Sift | Loki लॉग में उन्नत त्रुटि पैटर्न ढूंढता है। | संपादक भूमिका | N/A |
find_slow_requests | Sift | प्रासंगिक tempo डेटासोर्स से धीमे अनुरोध ढूंढता है। | संपादक भूमिका | N/A |
list_pyroscope_label_names | Pyroscope | एक चयनकर्ता से मेल खाते लेबल नाम सूचीबद्ध करें | datasources:query | datasources:uid:pyroscope-uid |
list_pyroscope_label_values | Pyroscope | एक लेबल नाम के लिए एक चयनकर्ता से मेल खाते लेबल मान सूचीबद्ध करें | datasources:query | datasources:uid:pyroscope-uid |
list_pyroscope_profile_types | Pyroscope | उपलब्ध प्रोफ़ाइल प्रकार सूचीबद्ध करें | datasources:query | datasources:uid:pyroscope-uid |
query_pyroscope | Pyroscope | Pyroscope से प्रोफ़ाइल, मेट्रिक्स, या दोनों क्वेरी करें | datasources:query | datasources:uid:pyroscope-uid |
get_assertions | Asserts | किसी दिए गए इकाई के लिए अभिकथन सारांश प्राप्त करें | प्लगइन-विशिष्ट अनुमतियां | प्लगइन-विशिष्ट दायरे |
agento11y_manage_conversations | Agent Observability* | Grafana Agent Observability से LLM वार्तालाप सूचीबद्ध करें, खोजें, और प्राप्त करें | grafana-agento11y-app.conversations:read | N/A |
agento11y_manage_generations | Agent Observability* | Grafana Agent Observability से LLM पीढ़ी विवरण और मूल्यांकन स्कोर प्राप्त करें | grafana-agento11y-app.data:read | N/A |
agento11y_manage_agents | Agent Observability* | एजेंट कैटलॉग पढ़ें: एजेंट सूचीबद्ध करें, एक एजेंट संस्करण पूर्ण रूप से प्राप्त करें, संस्करण इतिहास सूचीबद्ध करें, और प्रति-संस्करण स्कोर समुच्चय | grafana-agento11y-app.data:read | N/A |
agento11y_manage_evaluators | Agent Observability* | मूल्यांकनकर्ता, मूल्यांकनकर्ता टेम्पलेट, और न्यायाधीश कैटलॉग प्रबंधित करें (सूची, प्राप्त करें, अपसेर्ट, फोर्क, परीक्षण, हटाएं) | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write परिवर्तनों और परीक्षणों के लिए | N/A |
agento11y_manage_eval_rules | Agent Observability* | मूल्यांकन नियम और गार्ड प्रबंधित करें (सूची, प्राप्त करें, बनाएं, अपडेट करें, पूर्वावलोकन, हटाएं) | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write परिवर्तनों और पूर्वावलोकन के लिए | N/A |
agento11y_manage_eval_collections | Agent Observability* | सहेजे गए वार्तालाप और उन्हें समूहित करने वाले संग्रह प्रबंधित करें (सूची, प्राप्त करें, सहेजें, बनाएं, अपडेट करें, हटाएं, सदस्य जोड़ें और हटाएं) | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write परिवर्तनों के लिए | N/A |
agento11y_manage_experiments | एजेंट ऑब्ज़र्वेबिलिटी* | ऑफ़लाइन प्रयोग, उनके परीक्षण, स्कोर, आर्टिफैक्ट मेटाडेटा पढ़ें, और फ़िल्टर फ़ैसेट; प्रयोग को अपडेट और रद्द करें | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write म्यूटेशन के लिए | N/A |
agento11y_manage_test_suites | एजेंट ऑब्ज़र्वेबिलिटी* | उन टेस्ट सूट को प्रबंधित करें जिनके विरुद्ध ऑफ़लाइन प्रयोग चलते हैं, उनके संस्करण, और उनके टेस्ट केस (सूची, प्राप्त करें, बनाएं, अपडेट करें, ड्राफ्ट, प्रकाशित करें, अपसेर्ट, हटाएं) | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write म्यूटेशन के लिए | N/A |
ask_assistant | सहायक* | Grafana सहायक को एक प्रॉम्प्ट भेजें और पूर्ण टेक्स्ट उत्तर लौटाएं (contextId के माध्यम से मल्टी-टर्न) | प्लगइन-विशिष्ट अनुमतियाँ | प्लगइन-विशिष्ट स्कोप |
generate_deeplink | नेविगेशन | Grafana संसाधनों के लिए सटीक डीपलिंक URL उत्पन्न करें | कोई नहीं (केवल-पठन URL निर्माण) | N/A |
get_annotations | एनोटेशन | फ़िल्टर के साथ एनोटेशन प्राप्त करें | annotations:read | annotations:* या annotations:id:123 |
create_annotation | एनोटेशन | एक नया एनोटेशन बनाएं (मानक या Graphite प्रारूप) | annotations:write | annotations:* |
update_annotation | एनोटेशन | एनोटेशन के विशिष्ट फ़ील्ड अपडेट करें (आंशिक अपडेट) | annotations:write | annotations:* |
delete_annotation | एनोटेशन | आईडी द्वारा एनोटेशन हटाएं | annotations:delete | annotations:* |
get_annotation_tags | एनोटेशन | वैकल्पिक फ़िल्टरिंग के साथ एनोटेशन टैग सूचीबद्ध करें | annotations:read | annotations:* |
list_snapshots | स्नैपशॉट | वैकल्पिक क्वेरी और सीमा फ़िल्टर के साथ डैशबोर्ड स्नैपशॉट सूचीबद्ध करें | dashboards:read | dashboards:* या dashboards:uid:abc123 |
get_snapshot | स्नैपशॉट | स्नैपशॉट कुंजी द्वारा स्नैपशॉट मेटाडेटा और डैशबोर्ड पेलोड प्राप्त करें | dashboards:read | dashboards:* या dashboards:uid:abc123 |
create_snapshot | स्नैपशॉट | पूर्ण डैशबोर्ड पेलोड से डैशबोर्ड स्नैपशॉट बनाएं | dashboards:write | dashboards:* या dashboards:uid:abc123 |
delete_snapshot | स्नैपशॉट | स्नैपशॉट कुंजी द्वारा डैशबोर्ड स्नैपशॉट हटाएं | dashboards:write | dashboards:* या dashboards:uid:abc123 |
get_panel_image | रेंडरिंग | संग्रहीत डैशबोर्ड या पैनल — या रिपॉजिटरी शाखा से प्रोविज़निंग पूर्वावलोकन — को PNG छवि के रूप में रेंडर करें | dashboards:read | dashboards:uid:abc123 |
list_provisioning_repositories | प्रोविज़निंग | प्रोविज़निंग रिपॉजिटरी सूचीबद्ध करें (जैसे git-sync स्रोत) उनके स्रोत URL, शाखा, सिंक स्थिति, और स्वास्थ्य के साथ | provisioning.repositories:read | N/A |
validate_provisioning_file | प्रोविज़निंग | प्रोविज़निंग रिपॉजिटरी से एक फ़ाइल ड्राई-रन-लागू करें और प्रवेश सत्यापन त्रुटियों की रिपोर्ट करें | provisioning.repositories:read | N/A |
search_docs | दस्तावेज़ | Grafana दस्तावेज़ खोजें या उत्पाद समूह सूचीबद्ध करें (उत्पाद सूचीबद्ध करने के लिए क्वेरी छोड़ें) | कोई नहीं (सार्वजनिक grafana.com/docs) | N/A |
get_doc | दस्तावेज़ | एक दस्तावेज़ पृष्ठ प्राप्त करें; शीर्षकों के लिए outline_only सेट करें, या सीमित पुनर्प्राप्ति के लिए section सेट करें | कोई नहीं (सार्वजनिक grafana.com/docs) | N/A |
* डिफ़ॉल्ट रूप से अक्षम। सक्षम करने के लिए --enabled-tools में श्रेणी जोड़ें। |
CLI फ़्लैग संदर्भ
mcp-grafana बाइनरी कॉन्फ़िगरेशन के लिए विभिन्न कमांड-लाइन फ़्लैग का समर्थन करता है:
ट्रांसपोर्ट विकल्प:
-t, --transport: ट्रांसपोर्ट प्रकार (stdio,sse, याstreamable-http) - डिफ़ॉल्ट:stdio--address: SSE/streamable-http सर्वर के लिए होस्ट और पोर्ट - डिफ़ॉल्ट:localhost:8000--base-path: SSE/streamable-http सर्वर के लिए बेस पथ।/healthzऔर/metricsहमेशा सर्वर रूट पर परोसे जाते हैं, इस उपसर्ग के अंतर्गत नहीं — वे प्रोब और स्क्रेपर्स के लिए केवल-आंतरिक एंडपॉइंट हैं, और उन्हें एप्लिकेशन उपसर्ग से दूर रखने से रिवर्स प्रॉक्सी के माध्यम से API को उजागर करना आसान हो जाता है बिना उन्हें भी उजागर किए--endpoint-path: streamable-http सर्वर के लिए एंडपॉइंट पथ,--base-pathमें जोड़ा गया - डिफ़ॉल्ट:/mcp--server-name: MCP हैंडशेक और OTelservice.nameमें उपयोग किया जाने वाला सर्वर नाम - डिफ़ॉल्ट:mcp-grafana।GRAFANA_MCP_SERVER_NAMEenv var को ओवरराइड करता है--instructions-append: सर्वर निर्देशों में जोड़ा गया टेक्स्ट जो प्रारंभ करने पर MCP क्लाइंट्स को लौटाया जाता है, ताकि हर कनेक्ट होने वाला एजेंट इसे देखे
HTTP ट्रांसपोर्ट सुरक्षा (केवल SSE / streamable-http):
Host/Origin सत्यापन MCP लिसनर पर हर रूट पर लागू किया जाता है — /sse, /mcp, और /healthz / /metrics जब वे उस लिसनर को साझा करते हैं — इसलिए DNS-रीबाइंडिंग ब्राउज़र उनमें से किसी तक नहीं पहुंच सकता। Stdio ट्रांसपोर्ट अप्रभावित है। --healthz-address और --metrics-address एक अलग लिसनर शुरू करते हैं जो लपेटा नहीं गया है।
--allowed-hosts:Hostहेडर मानों की अल्पविराम-पृथक अनुमत सूची।--addressके लूपबैक वेरिएंट्स पर डिफ़ॉल्ट (जैसेlocalhost:8000,127.0.0.1:8000,[::1]:8000)। एक मान जो खाली में पार्स होता है (अनसेट,,,,, आदि) भी डिफ़ॉल्ट पर वापस आ जाता है ताकि टाइपो चुपचाप जांच को अक्षम न कर सके। अनुमत सूची के बाहरHostहेडर वाले अनुरोध403के साथ अस्वीकार कर दिए जाते हैं।*पास करेंHostसत्यापन अक्षम करने के लिए — केवल तभी सुरक्षित जब एक विश्वसनीय रिवर्स प्रॉक्सीHostसत्यापित करता है। K8shttpGetप्रोब और बाहरी/metricsस्क्रेप्स को इस सूची में एक स्पष्ट होस्टनाम,*, एकtcpSocketप्रोब, या एक अलग पोर्ट (--healthz-address/--metrics-address) की आवश्यकता होगी।--allowed-origins:Originहेडर मानों की अल्पविराम-पृथक अनुमत सूची। डिफ़ॉल्ट रूप से खाली — कोई भी अनुरोध जोOriginहेडर रखता है अस्वीकार कर दिया जाता है (ब्राउज़र हमेशा क्रॉस-ओरिजिन अनुरोधों के लिए एक भेजते हैं, और किसी भी ब्राउज़र को इस सर्वर को सीधे कॉल नहीं करना चाहिए)। ब्राउज़र-आधारित क्लाइंट्स की अनुमति देने के लिए एक स्पष्ट सूची पर सेट करें, या जांच अक्षम करने के लिए*।--allow-grafana-url-override:X-Grafana-URLचयन सक्षम करें।GRAFANA_ALLOW_URL_OVERRIDEपर वापस आ जाता है; डिफ़ॉल्ट रूप से अक्षम। अनुमत सूची के बिना, कॉलर किसी भी HTTP(S) URL का चयन कर सकते हैं जिस तक सर्वर पहुंच सकता है।--allowed-grafana-urls: URL ओवरराइड के लिए वैकल्पिक अल्पविराम-पृथक सटीक Grafana बेस URL अनुमत सूची।GRAFANA_ALLOWED_URLSपर वापस आ जाता है।--allow-grafana-url-overrideकी आवश्यकता है; एक स्पष्ट खाली फ़्लैग विरासत में मिली सूची को अक्षम करता है।
कॉलर प्रमाणीकरण (केवल SSE / streamable-http):
वैकल्पिक रूप से MCP क्लाइंट्स को सर्वर से प्रमाणित करने की आवश्यकता होती है। यह उन क्रेडेंशियल्स से अलग है जो सर्वर Grafana तक पहुंचने के लिए उपयोग करता है। Stdio अप्रभावित है।
--server-auth-token: बियरर टोकन जो कॉलर कोAuthorization: Bearer <token>के रूप में भेजना चाहिए।MCP_GRAFANA_SERVER_TOKENपर्यावरण चर पर वापस आ जाता है। सेट होने पर, मान्य टोकन के बिना अनुरोध किसी भी टूल चलने से पहले401के साथ अस्वीकार कर दिए जाते हैं। env var को प्राथमिकता दें ताकि गोपनीय प्रक्रिया तर्कों में दिखाई न दे।
कॉलर प्रमाणीकरण केवल तब लागू होता है जब --server-auth-token सेट हो। जब यह सेट नहीं है और सर्वर एक गैर-लूपबैक पता बांधता है, तो सर्वर शुरू होता है लेकिन एक सुरक्षा त्रुटि लॉग करता है — error लॉग स्तर पर उत्सर्जित होता है ताकि यह --log-level द्वारा छिपा न जाए (लूपबैक और stdio अप्रभावित हैं); एक भविष्य का प्रमुख रिलीज़ इसे स्टार्टअप त्रुटि बना देगा। जब भी कॉलर प्रमाणीकरण गैर-लूपबैक पते पर सक्षम हो तो TLS (या TLS समाप्ति) का उपयोग करें। जब कॉलर प्रमाणीकरण सक्षम हो, तो सत्यापित Authorization हेडर अनुरोधों के Grafana तक पहुंचने से पहले हटा दिया जाता है; --server-auth-token को GRAFANA_FORWARD_HEADERS=Authorization के साथ संयोजित करना स्टार्टअप पर अस्वीकार कर दिया जाता है।
Grafana URL ओवरराइड (केवल SSE / streamable-http):
[!चेतावनी] URL ओवरराइड MCP कॉलर को आउटबाउंड HTTP(S) गंतव्यों का चयन करने देते हैं। एक अनुमत सूची URL को सीमित करती है लेकिन कॉलर को प्रमाणित नहीं करती या टोकन को लक्ष्यों से बांधती नहीं है।
एक प्रमाणित प्रॉक्सी के पीछे तैनात करें जो प्रत्येक लक्ष्य को अधिकृत करता है, क्लाइंट-आपूर्ति URL और टोकन हेडर को बदलता है, और मिलान टोकन प्रदान करता है। सर्वर की आउटबाउंड नेटवर्क पहुंच को अनुमोदित गंतव्यों तक सीमित करें।
अनुमत सूची के बिना, एक नकली अनुरोध टोकन किसी भी पहुंच योग्य HTTP(S) सेवा, आंतरिक और मेटाडेटा सेवाओं सहित, अनुरोधों का कारण बन सकता है।
एक बड़े फ्लीट के लिए चयन सक्षम करने के लिए GRAFANA_ALLOW_URL_OVERRIDE=true (या --allow-grafana-url-override) सेट करें। गंतव्यों को प्रतिबंधित करने के लिए, GRAFANA_ALLOWED_URLS=https://one.example.com,https://two.example.com/grafana (या --allowed-grafana-urls) भी सेट करें।
प्रत्येक MCP अनुरोध पर ये हेडर भेजें जो एक लक्ष्य का चयन करता है:
X-Grafana-URL: https://one.example.com
X-Grafana-Service-Account-Token: <token for one.example.com>
यदि --server-auth-token कॉन्फ़िगर किया गया है, तो Authorization: Bearer <MCP caller token> भी भेजें। यह MCP सर्वर को प्रमाणित करता है और X-Grafana-Service-Account-Token से अलग है, जो चयनित Grafana इंस्टेंस के लिए है। आपका प्रॉक्सी प्रत्येक इंस्टेंस के लिए एक अलग Grafana टोकन भेज सकता है; सर्वर कभी भी एक कॉन्फ़िगर टोकन उनके बीच साझा नहीं करता। पुराना X-Grafana-API-Key हेडर भी काम करता है। अनुरोध Grafana टोकन के बिना एक URL हेडर अस्वीकार कर दिया जाता है। आने वाले अनुरोधों के लिए TLS का उपयोग करें क्योंकि वे टोकन ले जाते हैं।
अनुमत सूची सटीक बेस URL से मेल खाती है, जिसमें योजना, पोर्ट और पथ शामिल हैं; वाइल्डकार्ड समर्थित नहीं हैं। Grafana प्रमाणीकरण SSRF रक्षा नहीं है।
चयनित URL के लिए, सर्वर GRAFANA_SERVICE_ACCOUNT_TOKEN, GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE, GRAFANA_API_KEY, पर्यावरण बेसिक प्रमाणीकरण, GRAFANA_EXTRA_HEADERS, या क्लाइंट प्रमाणपत्र का उपयोग नहीं करता। TLS सत्यापन सक्षम रहता है भले ही --tls-skip-verify सेट हो; एक कॉन्फ़िगर CA फ़ाइल अभी भी लागू होती है। उस अनुरोध से स्पष्ट रूप से अग्रेषित हेडर अभी भी लागू होते हैं। चयनित बेस URL के बाहर रीडायरेक्ट और अन्य Grafana API अनुरोध अवरुद्ध हैं। X-Grafana-URL के बिना अनुरोध सामान्य GRAFANA_URL और पर्यावरण क्रेडेंशियल व्यवहार बनाए रखते हैं। यह विकल्प केवल SSE और streamable HTTP पर लागू होता है। SSE के लिए, प्रत्येक संदेश POST पर दोनों चयन हेडर शामिल करें; प्रारंभिक SSE GET पर हेडर टूल कॉल में स्थानांतरित नहीं होते।
डीबग और लॉगिंग:
--debug: विस्तृत HTTP अनुरोध/प्रतिक्रिया लॉगिंग के लिए डीबग मोड सक्षम करें--log-level: लॉग स्तर (debug,info,warn,error) - डिफ़ॉल्ट:info
Grafana क्लाइंट विकल्प:
--grafana-timeout: Grafana क्लाइंट द्वारा किए गए अनुरोधों के लिए समय सीमा। Go अवधि स्ट्रिंग्स स्वीकार करता है (जैसे,10s,500ms) - डिफ़ॉल्ट:10s--include-args-in-spans: OpenTelemetry स्पैन में टूल कॉल तर्क शामिल करें। केवल गैर-उत्पादन वातावरण में सक्षम करें या जब तर्क PII नहीं रखते हैं - डिफ़ॉल्ट:false
अवलोकनीयता:
--metrics:/metricsपर Prometheus मेट्रिक्स एंडपॉइंट सक्षम करें--metrics-address: मेट्रिक्स सर्वर के लिए अलग पता (जैसे,:9090)। यदि खाली है, तो मेट्रिक्स मुख्य सर्वर पर परोसे जाते हैं--healthz-address:/healthzके लिए अलग पता (जैसे,:8080)। यदि खाली है, तो/healthzमुख्य सर्वर पर परोसा जाता है। जब दो पते मेल खाते हैं तो--metrics-addressके साथ एक लिसनर साझा करता है। साइड लिसनर Host/Origin सत्यापन छोड़ देते हैं।--slow-request-threshold: एक घटना लॉग करें जब कोई MCP अनुरोध (टूल आह्वान, सूची, संसाधन पठन, आदि) इस अवधि से अधिक समय लेता है। Go अवधि स्ट्रिंग्स स्वीकार करता है (जैसे,500ms,5s)। डिफ़ॉल्ट0धीमे-अनुरोध लॉगिंग अक्षम करता है। धीमे-अनुरोध लॉगिंग अनुभाग देखें।--slow-request-log-level: धीमे-अनुरोध घटनाओं के लिए लॉग स्तर (infoयाwarn) - डिफ़ॉल्ट:warn।
अनाम उपयोग आँकड़े:
--usage-stats: अनाम उपयोग आँकड़े रिपोर्टिंग:enabled,disabled, याlog(रिपोर्ट प्रिंट करें जो stderr को भेजी जाएगी और कुछ नहीं भेजें)।GRAFANA_USAGE_STATSenv var को ओवरराइड करता है, जो बदले मेंDO_NOT_TRACKको ओवरराइड करता है; कोई भी अपरिचित मान रिपोर्टिंग अक्षम करता है। अनाम उपयोग आँकड़े अनुभाग देखें।
सत्र प्रबंधन:
--session-idle-timeout-minutes: सत्र निष्क्रिय समय समाप्ति मिनटों में। इस अवधि के लिए कोई गतिविधि नहीं वाले सत्र स्वचालित रूप से समाप्त हो जाते हैं - डिफ़ॉल्ट:30। सत्र समाप्ति अक्षम करने के लिए0पर सेट करें। केवल SSE और streamable-http ट्रांसपोर्ट के लिए प्रासंगिक। टूल कॉन्फ़िगरेशन:--enabled-tools: सक्षम श्रेणियों की अल्पविराम-पृथक सूची - डिफ़ॉल्ट:admin,agento11y,assistant,athena,clickhouse,cloudlogging,cloudwatch,elasticsearch,examples,graphite,quickwit,runpanelquery, औरsnowflakeको छोड़कर सभी श्रेणियाँ। अक्षम श्रेणियों को सक्षम करने के लिए, उन्हें सूची में जोड़ें (जैसे,"search,datasource,...,snowflake")--max-loki-log-limit: प्रतिquery_loki_logsकॉल लौटाई गई लॉग लाइनों की अधिकतम संख्या - डिफ़ॉल्ट:100। नोट: ट्रंकेशन का पता लगाने की अनुमति देने के लिए इसे Loki के सर्वर-साइडmax_entries_limit_per_queryसे कम से कम 1 नीचे सेट करें (टूल यह पता लगाने के लिए आंतरिक रूप सेlimit+1का अनुरोध करता है कि अधिक डेटा मौजूद है या नहीं)।--loki-guardrail-mode:query_loki_logsके लिए Loki क्वेरी लागत सुरक्षा-गार्ड - डिफ़ॉल्ट:off। Loki लाइन फ़िल्टर के बिना लॉग क्वेरी परmax_query_bytes_readलागू नहीं करता है, इसलिए व्यापक रेंज पर एक व्यापक सेलेक्टर टेराबाइट्स को स्कैन कर सकता है; सुरक्षा-गार्ड के लिए एक चयनात्मक स्ट्रीम सेलेक्टर की आवश्यकता होती है, प्रभावी समय सीमा को सीमित करता है (रेंज-वेक्टर अवधि जैसे[30d]सहित), और क्वेरी चलाने से पहले Loki के इंडेक्स/स्टैट्स बाइट अनुमान की पूर्व-जांच करता है।shadowउन क्वेरी को लॉग करता है जिन्हें ब्लॉक किया जाएगा लेकिन उन्हें चलने देता है (यह अभी भी इंडेक्स/स्टैट्स राउंड ट्रिप का भुगतान करता है);enforceउन्हें पुनर्लेखन मार्गदर्शन के साथ अस्वीकार करता है जिस पर LLM कार्य कर सकता है। VictoriaLogs पर सुरक्षा-गार्ड केवल सेलेक्टर-आकार ({...}) क्वेरी पर लागू होता है — जब कोई सेलेक्टर पार्स नहीं होता है (सामान्य ब्रेस-रहित LogsQL आकार), क्वेरी पूरी तरह से गुजरती है, और बाइट-बजट जांच कभी लागू नहीं होती है (कोई सस्ता इंडेक्स अनुमान नहीं)। एनवी फ़ॉलबैक:GRAFANA_LOKI_GUARDRAIL_MODE।--loki-guardrail-max-bytes: एकलquery_loki_logsकॉल द्वारा स्कैन किए जा सकने वाले अधिकतम बाइट्स, Loki के इंडेक्स/स्टैट्स API के माध्यम से अनुमानित - डिफ़ॉल्ट:107374182400(100 GiB)।0बाइट-बजट जांच को अक्षम करता है। एनवी फ़ॉलबैक:GRAFANA_LOKI_GUARDRAIL_MAX_BYTES।--loki-guardrail-max-range: एकलquery_loki_logsकॉल के लिए अधिकतम प्रभावी समय सीमा, रेंज-वेक्टर अवधि सहित - डिफ़ॉल्ट:24h। Go अवधि स्ट्रिंग स्वीकार करता है।0रेंज जांच को अक्षम करता है। एनवी फ़ॉलबैक:GRAFANA_LOKI_GUARDRAIL_MAX_RANGE।--loki-enforced-matchers: LogQL लेबल मैचर्स हर मूल-Loki क्वेरी में AND-ed होते हैं ताकि यह प्रतिबंधित किया जा सके कि कौन सी लॉग स्ट्रीम पढ़ी जा सकती हैं (जैसे,environment=~"prod|staging")।--disable-apiकी आवश्यकता है। Loki क्वेरी प्रवर्तन देखें।--loki-label-enumeration-fallback: लेबल-गणना उपकरण क्या करते हैं जब नकारात्मक लागू मैचर्स उन्हें स्कोप नहीं कर सकते:reject(डिफ़ॉल्ट) याunfiltered। Loki क्वेरी प्रवर्तन देखें।--disable-search: खोज उपकरण अक्षम करें--disable-datasource: डेटासोर्स उपकरण अक्षम करें--disable-incident: घटना उपकरण अक्षम करें--disable-prometheus: prometheus उपकरण अक्षम करें--disable-write: लेखन उपकरण अक्षम करें (बनाएं/अद्यतन संचालन)--disable-query: क्वेरी उपकरण अक्षम करें (डेटासोर्स के विरुद्ध क्वेरी निष्पादित करने वाले उपकरण); मेटाडेटा और खोज उपकरण उपलब्ध रहते हैं--enable-query: कच्चे-SQL क्वेरी उपकरण (query_sql,query_influxdb) को--disable-writeके तहत भी पंजीकृत रखें।--enable-write-tools=query_sql,query_influxdbके बराबर; उस सामान्य मामले के लिए आशुलिपि के रूप में रखा गया।--enable-write-tools: अल्पविराम-पृथक व्यक्तिगत टूल नामों की सूची जिन्हें--disable-writeके तहत भी पंजीकृत रखना है, उन टूल के लिए जिनका लेखन व्यवहार स्वतंत्र रूप से फिर से चुनने के लिए पर्याप्त रूप से स्कोप किया गया है (जैसे,find_error_pattern_logs,find_slow_requests)। उस टूल पर कोई प्रभाव नहीं पड़ता जिसकी पूरी श्रेणी अक्षम है, जैसे--disable-siftके माध्यम से।--disable-loki: loki उपकरण अक्षम करें--disable-elasticsearch: elasticsearch और opensearch उपकरण अक्षम करें--disable-quickwit: quickwit उपकरण अक्षम करें--disable-influxdb: InfluxDB उपकरण अक्षम करें--disable-alerting: अलर्टिंग उपकरण अक्षम करें--disable-dashboard: डैशबोर्ड उपकरण अक्षम करें--disable-oncall: oncall उपकरण अक्षम करें--disable-asserts: asserts उपकरण अक्षम करें--disable-sift: sift उपकरण अक्षम करें--disable-admin: प्रशासन उपकरण अक्षम करें--disable-pyroscope: pyroscope उपकरण अक्षम करें--disable-navigation: नेविगेशन उपकरण अक्षम करें--disable-rendering: रेंडरिंग उपकरण अक्षम करें (पैनल/डैशबोर्ड छवि निर्यात)--disable-snapshot: स्नैपशॉट उपकरण अक्षम करें--disable-cloudwatch: CloudWatch उपकरण अक्षम करें--disable-cloudlogging: Google Cloud Logging उपकरण अक्षम करें--disable-examples: क्वेरी उदाहरण उपकरण अक्षम करें--disable-sql: SQL डेटासोर्स उपकरण अक्षम करें (ClickHouse, Snowflake, Athena, MySQL, PostgreSQL, MSSQL)। उपनाम--disable-clickhouse,--disable-snowflake,--disable-athenaभी काम करते हैं।--disable-runpanelquery: रन पैनल क्वेरी उपकरण अक्षम करें--disable-graphite: Graphite उपकरण अक्षम करें--disable-provisioning: प्रावधान उपकरण अक्षम करें--disable-agento11y: Agent Observability उपकरण अक्षम करें--disable-assistant: Grafana Assistant उपकरण अक्षम करें--disable-docs: दस्तावेज़ीकरण उपकरण अक्षम करें
केवल-पठन मोड
--disable-write फ़्लैग MCP सर्वर को केवल-पठन मोड में चलाने का एक तरीका प्रदान करता है, जो आपके Grafana इंस्टेंस पर किसी भी लेखन संचालन को रोकता है। यह उन परिदृश्यों के लिए उपयोगी है जहां आप सुरक्षित, केवल-पठन पहुंच प्रदान करना चाहते हैं जैसे:
- सीमित केवल-पठन अनुमतियों वाले सेवा खातों का उपयोग करना
- संशोधन क्षमताओं के बिना AI सहायकों को अवलोकनीयता डेटा प्रदान करना
- उत्पादन वातावरण में चलाना जहां लेखन पहुंच प्रतिबंधित होनी चाहिए
- परीक्षण और विकास परिदृश्य जहां आप आकस्मिक संशोधनों को रोकना चाहते हैं
जब --disable-write सक्षम होता है, तो निम्नलिखित लेखन संचालन अक्षम हो जाते हैं:
डैशबोर्ड उपकरण:
update_dashboard
फ़ोल्डर उपकरण:
create_folder
घटना उपकरण:
create_incidentadd_activity_to_incidentupdate_incident
अलर्टिंग उपकरण:
alerting_manage_rules(बनाएं, अद्यतन, हटाएं संचालन)alerting_manage_silences(बनाएं, अद्यतन, हटाएं संचालन)
OnCall उपकरण:
update_alert_group
एनोटेशन उपकरण:
create_annotationupdate_annotationdelete_annotation
Sift उपकरण:
find_error_pattern_logs(जांच बनाता है)find_slow_requests(जांच बनाता है)
ये केवल Sift API के माध्यम से अस्थायी Sift जांच रिकॉर्ड बनाते हैं — वे कभी भी Grafana डैशबोर्ड, अलर्ट, या डेटासोर्स को स्पर्श नहीं करते हैं। उनके बिना, list_sift_investigations/get_sift_investigation/get_sift_analysis के पास सूचीबद्ध करने या प्राप्त करने के लिए कुछ नहीं होता है। उन्हें --disable-write के तहत पंजीकृत रखने के लिए --enable-write-tools=find_error_pattern_logs,find_slow_requests पास करें।
स्नैपशॉट उपकरण:
create_snapshotdelete_snapshot
कच्चे-SQL क्वेरी उपकरण:
ये आपके द्वारा दी गई किसी भी क्वेरी को बिना निरीक्षण किए निष्पादित करते हैं, इसलिए वे लिख सकते हैं जब डेटासोर्स क्रेडेंशियल इसकी अनुमति देते हैं — query_sql एक DROP TABLE चलाएगा, query_influxdb एक DELETE चलाएगा। इसलिए केवल-पठन मोड उन्हें हटा देता है। उन्हें रखने के लिए --enable-query पास करें जब डेटासोर्स क्रेडेंशियल ज्ञात रूप से केवल-पठन हों।
query_sqlquery_influxdb
Agent Observability उपकरण:
agento11y_manage_evaluators(upsert, delete, fork, test evaluator संचालन)agento11y_manage_eval_rules(बनाएं, अद्यतन, हटाएं, पूर्वावलोकन नियम और गार्ड संचालन)agento11y_manage_eval_collections(सहेजी गई बातचीत को सहेजें और हटाएं; संग्रह बनाएं, अद्यतन करें, हटाएं; संग्रह सदस्यों को जोड़ें और हटाएं)agento11y_manage_experiments(अद्यतन और रद्द प्रयोग संचालन)agento11y_manage_test_suites(परीक्षण सूट बनाएं और अद्यतन करें; संस्करण बनाएं और प्रकाशित करें; परीक्षण मामलों को upsert और हटाएं)
सभी पठन संचालन उपलब्ध रहते हैं, जिससे आप डैशबोर्ड क्वेरी कर सकते हैं, PromQL/LogQL क्वेरी चला सकते हैं, संसाधनों की सूची बना सकते हैं, और डेटा प्राप्त कर सकते हैं। क्वेरी भाषाएं जो लेखन व्यक्त नहीं कर सकतीं — PromQL, LogQL, TraceQL, Elasticsearch DSL, Graphite, CloudWatch — अपने क्वेरी उपकरण केवल-पठन मोड में रखती हैं; केवल ऊपर सूचीबद्ध कच्चे-SQL हटाए जाते हैं।
क्वेरी-मुक्त मोड
--disable-query फ़्लैग हर उस उपकरण को हटा देता है जो डेटासोर्स के विरुद्ध क्वेरी निष्पादित करता है, जबकि मेटाडेटा और खोज उपकरणों को जगह पर छोड़ देता है। यह तब उपयोगी होता है जब आप एक सहायक चाहते हैं जो यह पता लगा सके कि क्या मौजूद है — डेटासोर्स, डैशबोर्ड, मीट्रिक नाम, लेबल, तालिका स्कीमा — संभावित रूप से महंगी या डेटा-प्रकट करने वाली क्वेरी चलाए बिना, उदाहरण के लिए जब सेवा खाते के पास datasources:read है लेकिन datasources:query नहीं है।
यह तीन क्वेरी सेटिंग्स में सबसे मजबूत है, और यह --enable-query पर जीतता है:
| फ़्लैग | सुरक्षित क्वेरी उपकरण (query_prometheus, query_loki_logs, run_panel_query, …) | कच्चे-SQL क्वेरी उपकरण (query_sql, query_influxdb) |
|---|---|---|
| (कोई नहीं) | पंजीकृत | पंजीकृत |
--disable-write | पंजीकृत | पंजीकृत नहीं |
--disable-write --enable-query | पंजीकृत | पंजीकृत |
--disable-query | पंजीकृत नहीं | पंजीकृत नहीं |
--disable-query --enable-query | पंजीकृत नहीं | पंजीकृत नहीं |
जब --disable-query सक्षम होता है, तो निम्नलिखित उपकरण पंजीकृत नहीं होते हैं:
Prometheus उपकरण:
query_prometheusquery_prometheus_histogram
Loki उपकरण:
query_loki_logsquery_loki_patterns
query_loki_stats और analyze_loki_labels पंजीकृत रहते हैं: दोनों डेटासोर्स पर एक सेलेक्टर भेजते हैं, लेकिन वे इंडेक्स पढ़ते हैं और लॉग सामग्री के बजाय स्ट्रीम, चंक और बाइट गिनती लौटाते हैं।
Elasticsearch/OpenSearch और Quickwit उपकरण:
query_elasticsearchquery_quickwit
InfluxDB उपकरण (--disable-write द्वारा भी हटाए गए, ऊपर देखें):
query_influxdb
SQL डेटासोर्स उपकरण (--disable-write द्वारा भी हटाए गए, ऊपर देखें):
query_sql
Graphite उपकरण:
query_graphitequery_graphite_density
CloudWatch उपकरण:
query_cloudwatch
Google Cloud Logging उपकरण:
query_cloud_logging
Pyroscope उपकरण:
query_pyroscope
रन पैनल क्वेरी उपकरण:
run_panel_query
elasticsearch, quickwit, influxdb, और runpanelquery श्रेणियों में और कुछ नहीं है, इसलिए जब क्वेरी अक्षम होती हैं तो वे कोई उपकरण पंजीकृत नहीं करते हैं। हर अन्य श्रेणी में सहोदर उपकरण — list_prometheus_metric_names, list_loki_label_values, describe_sql_table, list_cloudwatch_metrics, list_cloud_logging_projects, और इसी तरह — उपलब्ध रहते हैं।
ध्यान दें कि --disable-query क्वेरी उपकरणों और grafana_api_request POST-से-/api/ds/query पथ को गेट करता है, लेकिन डेटासोर्स के हर मार्ग की निगरानी नहीं करता है। केवल-पठन मोड में, grafana_api_request POST को /api/ds/query पर केवल तभी अनुमति देता है जब क्वेरी उपकरण सक्षम हों (कच्चे-SQL उपकरणों के समान गेट — --disable-write द्वारा अवरुद्ध जब तक --enable-query ओवरराइड नहीं करता)। get_panel_image, जो सर्वर-साइड पैनल रेंडर करता है, अप्रभावित है।
क्लाइंट TLS कॉन्फ़िगरेशन (Grafana कनेक्शन के लिए):
--tls-cert-file: क्लाइंट प्रमाणीकरण के लिए TLS प्रमाणपत्र फ़ाइल का पथ--tls-key-file: क्लाइंट प्रमाणीकरण के लिए TLS निजी कुंजी फ़ाइल का पथ--tls-ca-file: सर्वर सत्यापन के लिए TLS CA प्रमाणपत्र फ़ाइल का पथ--tls-skip-verify: TLS प्रमाणपत्र सत्यापन छोड़ें (असुरक्षित)
सर्वर TLS कॉन्फ़िगरेशन (केवल स्ट्रीमेबल-HTTP ट्रांसपोर्ट):
--server.tls-cert-file: सर्वर HTTPS के लिए TLS प्रमाणपत्र फ़ाइल का पथ--server.tls-key-file: सर्वर HTTPS के लिए TLS निजी कुंजी फ़ाइल का पथ
उपयोग
यह MCP सर्वर स्थानीय Grafana इंस्टेंस और Grafana Cloud दोनों के साथ काम करता है। Grafana Cloud के लिए, नीचे दिए गए कॉन्फ़िगरेशन उदाहरणों में http://localhost:3000 के बजाय अपना इंस्टेंस URL (जैसे, https://myinstance.grafana.net) उपयोग करें।
-
यदि सेवा खाता टोकन प्रमाणीकरण का उपयोग कर रहे हैं, तो Grafana में उन उपकरणों का उपयोग करने के लिए पर्याप्त अनुमतियों वाला एक सेवा खाता बनाएं जिन्हें आप उपयोग करना चाहते हैं, एक सेवा खाता टोकन उत्पन्न करें, और इसे कॉन्फ़िगरेशन फ़ाइल में उपयोग के लिए क्लिपबोर्ड पर कॉपी करें। सेवा खाता टोकन बनाने के विवरण के लिए Grafana सेवा खाता दस्तावेज़ीकरण का पालन करें। टिप: यदि आप बारीक-दानेदार RBAC स्कोप कॉन्फ़िगर करने में सहज नहीं हैं, तो एक सरल (लेकिन कम प्रतिबंधात्मक) विकल्प सेवा खाते को अंतर्निहित
Editorभूमिका निर्दिष्ट करना है। यह व्यापक पढ़ने/लिखने की पहुंच प्रदान करता है जो अधिकांश MCP सर्वर संचालन को कवर करता है — इसका उपयोग करें जब सुविधा सख्त न्यूनतम-विशेषाधिकार आवश्यकताओं से अधिक हो।नोट: पर्यावरण चर
GRAFANA_API_KEYपदावनत है और भविष्य के संस्करण में हटा दिया जाएगा। कृपया इसके बजायGRAFANA_SERVICE_ACCOUNT_TOKENका उपयोग करने के लिए माइग्रेट करें। पुराना चर नाम पिछड़े संगतता के लिए काम करता रहेगा लेकिन पदावनति चेतावनी दिखाएगा।
फ़ाइल से सेवा खाता टोकन पढ़ना
GRAFANA_SERVICE_ACCOUNT_TOKEN के माध्यम से टोकन को इनलाइन पास करने के बजाय, आप GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE को एक फ़ाइल पथ पर इंगित कर सकते हैं जिसमें टोकन होता है। फ़ाइल हर अनुरोध पर ताज़ा पढ़ी जाती है, इसलिए घुमाए गए टोकन स्वचालित रूप से सर्वर को पुनरारंभ किए बिना उठाए जाते हैं।
यह Kubernetes में विशेष रूप से उपयोगी है, जहां वॉल्यूम के रूप में माउंट किया गया Secret अंतर्निहित Secret बदलने पर स्थान पर अपडेट होता है (आमतौर पर ~1 मिनट के भीतर)। प्रति-अनुरोध क्लाइंट कैश के साथ संयुक्त — जो टोकन मान पर कुंजीबद्ध है — एक घुमाया गया टोकन पारदर्शी रूप से एक नया क्लाइंट उत्पन्न करता है जिसमें कोई पॉड पुनरारंभ या डाउनटाइम नहीं होता:
env:
- name: GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE
value: /var/run/secrets/grafana/token
volumeMounts:
- name: grafana-token
mountPath: /var/run/secrets/grafana
readOnly: true
volumes:
- name: grafana-token
secret:
secretName: grafana-mcp-token
फ़ाइल सामग्री से आसपास का स्थान (एक अनुगामी नई पंक्ति सहित) हटा दिया जाता है। यदि GRAFANA_SERVICE_ACCOUNT_TOKEN और GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE दोनों सेट हैं, तो इनलाइन टोकन प्राथमिकता लेता है।
मल्टी-ऑर्गनाइज़ेशन समर्थन
आप निम्न में से किसी एक का उपयोग करके निर्दिष्ट कर सकते हैं कि किस संगठन के साथ बातचीत करनी है:
- पर्यावरण चर: संख्यात्मक संगठन आईडी पर
GRAFANA_ORG_IDसेट करें - HTTP हेडर: SSE या स्ट्रीमेबल HTTP ट्रांसपोर्ट का उपयोग करते समय
X-Grafana-Org-Idसेट करें (हेडर पर्यावरण चर पर प्राथमिकता लेता है - जिसका अर्थ है कि आप एक डिफ़ॉल्ट संगठन भी सेट कर सकते हैं)।
जब एक संगठन आईडी प्रदान की जाती है, तो MCP सर्वर Grafana को सभी अनुरोधों पर X-Grafana-Org-Id हेडर सेट करेगा, यह सुनिश्चित करते हुए कि संचालन निर्दिष्ट संगठन संदर्भ के भीतर किया जाता है।
गतिशील (प्रति-कॉल) संगठन चयन
उपरोक्त विकल्प पूरे कनेक्शन के लिए संगठन को स्थिर करते हैं। एक एकल कनेक्शन को प्रति टूल कॉल विभिन्न संगठनों को लक्षित करने देने के लिए, सर्वर को --dynamic-multi-org फ्लैग के साथ प्रारंभ करें। यह डिफ़ॉल्ट रूप से बंद है।
सक्षम होने पर, प्रत्येक टूल एक वैकल्पिक orgId तर्क स्वीकार करता है जो उस कॉल के लिए कनेक्शन के संगठन को ओवरराइड करता है (दोनों X-Grafana-Org-Id हेडर और, ऐप-प्लेटफ़ॉर्म API के लिए, हल किए गए Kubernetes नेमस्पेस को चलाता है)। प्रॉक्सी किए गए डेटासोर्स टूल अतिरिक्त रूप से हर संगठन में खोजे जाते हैं जिसे क्रेडेंशियल एक्सेस कर सकता है। orgId को छोड़ने वाले कॉल कनेक्शन के डिफ़ॉल्ट संगठन का उपयोग करते हैं।
यह केवल उन क्रेडेंशियल्स के लिए काम करता है जो एक से अधिक संगठनों से संबंधित हैं (जैसे उपयोगकर्ता या ऑन-बीहाफ-ऑफ पहचान); एक सेवा-खाता टोकन अपने एकल संगठन से बंधा रहता है। कौन से orgId मान मान्य हैं, यह खोजने के लिए user_info टूल का उपयोग करें।
संगठन आईडी के साथ उदाहरण:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_USERNAME": "<your username>",
"GRAFANA_PASSWORD": "<your password>",
"GRAFANA_ORG_ID": "2"
}
}
}
}
कस्टम HTTP हेडर
आप GRAFANA_EXTRA_HEADERS पर्यावरण चर का उपयोग करके सभी Grafana API अनुरोधों में मनमाने HTTP हेडर जोड़ सकते हैं। मान एक JSON ऑब्जेक्ट होना चाहिए जो हेडर नामों को मानों से मैप करता है।
कस्टम हेडर के साथ उदाहरण:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your token>",
"GRAFANA_EXTRA_HEADERS": "{\"X-Custom-Header\": \"custom-value\", \"X-Tenant-ID\": \"tenant-123\"}"
}
}
}
}
SOCKS5 प्रॉक्सी
आप इस सर्वर द्वारा Grafana को किए जाने वाले सभी अनुरोधों को GRAFANA_SOCKS5_PROXY पर्यावरण चर का उपयोग करके SOCKS5 प्रॉक्सी के माध्यम से रूट कर सकते हैं। प्रॉक्सी इस सर्वर के Grafana ट्रैफ़िक तक सीमित है: यह वैश्विक HTTP_PROXY/HTTPS_PROXY चर को संशोधित नहीं करता है, और सेट होने पर यह केवल Grafana ट्रांसपोर्ट के लिए उनके प्रॉक्सी चयन को ओवरराइड करता है, अन्य MCP सर्वर या आपके शेल सत्र को प्रभावित किए बिना। अनसेट होने पर, व्यवहार अपरिवर्तित रहता है।
URL को socks5:// या socks5h:// स्कीम का उपयोग करना चाहिए (Go उन्हें समान रूप से मानता है: होस्टनाम रिज़ॉल्यूशन प्रॉक्सी को सौंपा गया है) और इसमें क्रेडेंशियल शामिल हो सकते हैं, जैसे socks5://user:pass@127.0.0.1:1080।
उदाहरण:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your token>",
"GRAFANA_SOCKS5_PROXY": "socks5://127.0.0.1:1080"
}
}
}
}
एक अमान्य प्रॉक्सी URL एक स्टार्टअप त्रुटि है, और यदि रनटाइम पर एक प्रॉक्सी कनेक्शन बनाना विफल हो जाता है, तो सर्वर सीधे Grafana ट्रैफ़िक को चुपचाप भेजने के बजाय बंद विफल हो जाता है।
क्लाइंट से हेडर अग्रेषित करना (केवल SSE/स्ट्रीमेबल-HTTP)
जब MCP सर्वर एक गेटवे या रिवर्स प्रॉक्सी के पीछे चलता है जो SSO संभालता है (जैसे OIDC के साथ AWS ALB), तो प्रत्येक उपयोगकर्ता का सत्र कुकी Grafana तक पहुंचना चाहिए ताकि यह अनुरोध को प्रमाणित उपयोगकर्ता के साथ जोड़ सके। GRAFANA_FORWARD_HEADERS पर्यावरण चर आने वाले HTTP अनुरोध से हर बाहरी Grafana API अनुरोध में कॉपी करने के लिए हेडर नामों की एक अल्पविराम-पृथक अनुमति सूची निर्दिष्ट करके इसे सक्षम करता है।
यह केवल SSE (-t sse) या स्ट्रीमेबल-http (-t streamable-http) ट्रांसपोर्ट का उपयोग करते समय लागू होता है। stdio मोड में इसका कोई प्रभाव नहीं पड़ता।
उदाहरण: सत्र कुकी अग्रेषित करें
{
"env": {
"GRAFANA_URL": "https://grafana.internal",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your token>",
"GRAFANA_FORWARD_HEADERS": "Cookie"
}
}
आप उन्हें अल्पविराम से अलग करके कई हेडर अग्रेषित कर सकते हैं:
GRAFANA_FORWARD_HEADERS=Cookie,X-Session-Id
अग्रेषित हेडर GRAFANA_EXTRA_HEADERS में परिभाषित किसी भी हेडर के साथ विलय कर दिए जाते हैं। यदि एक हेडर नाम दोनों में दिखाई देता है, तो उस अनुरोध के लिए आने वाले अनुरोध से मान प्राथमिकता लेता है।
ट्रेस संदर्भ हेडर (traceparent, tracestate, baggage) अपवाद हैं: सर्वर स्वयं ट्रेस संदर्भ प्रसारित करता है, इसलिए एक अग्रेषित मान कभी भी उस मान को ओवरराइड नहीं करता जो वह इंजेक्ट करता है। observability देखें।
-
mcp-grafanaस्थापित करने के लिए आपके पास कई विकल्प हैं:-
uvx (अनुशंसित): यदि आपके पास uv स्थापित है, तो कोई अतिरिक्त सेटअप आवश्यक नहीं है —
uvxस्वचालित रूप से सर्वर को डाउनलोड और चलाएगा:uvx mcp-grafana -
Docker छवि: Docker Hub से पूर्व-निर्मित Docker छवि का उपयोग करें।
महत्वपूर्ण: Docker छवि का एंट्रीपॉइंट डिफ़ॉल्ट रूप से SSE मोड में MCP सर्वर चलाने के लिए कॉन्फ़िगर किया गया है, लेकिन अधिकांश उपयोगकर्ता Claude Desktop जैसे AI सहायकों के साथ सीधे एकीकरण के लिए STDIO मोड का उपयोग करना चाहेंगे:
- STDIO मोड: stdio मोड के लिए आपको
-t stdioके साथ डिफ़ॉल्ट को स्पष्ट रूप से ओवरराइड करना होगा और stdin खुला रखने के लिए-iफ्लैग शामिल करना होगा:
docker pull grafana/mcp-grafana # For local Grafana: docker run --rm -i -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> grafana/mcp-grafana -t stdio # For Grafana Cloud: docker run --rm -i -e GRAFANA_URL=https://myinstance.grafana.net -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> grafana/mcp-grafana -t stdioनोट — नेटवर्क मोड सुरक्षित करें: SSE और स्ट्रीमेबल-http मोड में कंटेनर एक गैर-लूपबैक पता (
0.0.0.0:8000) बांधता है। कॉलर टोकन के बिना सर्वर शुरू होता है लेकिन एक सुरक्षा त्रुटि लॉग करता है (errorलॉग स्तर पर, इसलिए यह--log-levelद्वारा छिपा नहीं है; और यह भविष्य के प्रमुख रिलीज़ में शुरू करने से इनकार करेगा)। क्लाइंट सेAuthorization: Bearer <token>की आवश्यकता के लिएMCP_GRAFANA_SERVER_TOKENसेट करें (अनुशंसित)। STDIO मोड अप्रभावित है। कॉलर प्रमाणीकरण देखें।- SSE मोड: इस मोड में, सर्वर एक HTTP सर्वर के रूप में चलता है जिससे क्लाइंट कनेक्ट होते हैं। आपको
-pफ्लैग का उपयोग करके पोर्ट 8000 को उजागर करना होगा:
docker pull grafana/mcp-grafana docker run --rm -p 8000:8000 -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> -e MCP_GRAFANA_SERVER_TOKEN=<caller auth token> grafana/mcp-grafana- स्ट्रीमेबल HTTP मोड: इस मोड में, सर्वर एक स्वतंत्र प्रक्रिया के रूप में संचालित होता है जो कई क्लाइंट कनेक्शन संभाल सकता है। आपको
-pफ्लैग का उपयोग करके पोर्ट 8000 को उजागर करना होगा: इस मोड के लिए आपको-t streamable-httpके साथ डिफ़ॉल्ट को स्पष्ट रूप से ओवरराइड करना होगा
docker pull grafana/mcp-grafana docker run --rm -p 8000:8000 -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> -e MCP_GRAFANA_SERVER_TOKEN=<caller auth token> grafana/mcp-grafana -t streamable-httpसर्वर TLS प्रमाणपत्रों के साथ HTTPS स्ट्रीमेबल HTTP मोड के लिए:
docker pull grafana/mcp-grafana docker run --rm -p 8443:8443 \ -v /path/to/certs:/certs:ro \ -e GRAFANA_URL=http://localhost:3000 \ -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> \ -e MCP_GRAFANA_SERVER_TOKEN=<caller auth token> \ grafana/mcp-grafana \ -t streamable-http \ -addr :8443 \ --server.tls-cert-file /certs/server.crt \ --server.tls-key-file /certs/server.key - STDIO मोड: stdio मोड के लिए आपको
-
बाइनरी डाउनलोड करें: रिलीज़ पृष्ठ से
mcp-grafanaका नवीनतम रिलीज़ डाउनलोड करें और इसे अपने$PATHमें रखें। -
स्रोत से निर्माण करें: यदि आपके पास Go टूलचेन स्थापित है तो आप
GOBINपर्यावरण चर का उपयोग करके स्रोत से भी निर्माण और स्थापित कर सकते हैं यह निर्दिष्ट करने के लिए कि बाइनरी किस निर्देशिका में स्थापित की जानी चाहिए। यह आपके$PATHमें भी होना चाहिए।GOBIN="$HOME/go/bin" go install github.com/grafana/mcp-grafana/cmd/mcp-grafana@latest -
Helm का उपयोग करके Kubernetes पर तैनात करें: Grafana helm-charts रिपॉजिटरी से Helm चार्ट का उपयोग करें
helm repo add grafana https://grafana.github.io/helm-charts helm install --set grafana.apiKey=<Grafana_ApiKey> --set grafana.url=<GrafanaUrl> my-release grafana/grafana-mcp
-
-
सर्वर कॉन्फ़िगरेशन को अपनी क्लाइंट कॉन्फ़िगरेशन फ़ाइल में जोड़ें। उदाहरण के लिए, Claude Desktop के लिए:
यदि uvx का उपयोग कर रहे हैं:
{ "mcpServers": { "grafana": { "command": "uvx", "args": ["mcp-grafana"], "env": { "GRAFANA_URL": "http://localhost:3000", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>" } } } }यदि बाइनरी का उपयोग कर रहे हैं:
{ "mcpServers": { "grafana": { "command": "mcp-grafana", "args": [], "env": { "GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud "GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>", // If using username/password authentication "GRAFANA_USERNAME": "<your username>", "GRAFANA_PASSWORD": "<your password>", // Optional: specify organization ID for multi-org support "GRAFANA_ORG_ID": "1" } } } }
नोट: यदि आप Claude Desktop में
Error: spawn mcp-grafana ENOENTदेखते हैं, तो आपकोmcp-grafanaका पूर्ण पथ निर्दिष्ट करना होगा।
यदि Docker का उपयोग कर रहे हैं:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio"
],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>",
// If using username/password authentication
"GRAFANA_USERNAME": "<your username>",
"GRAFANA_PASSWORD": "<your password>",
// Optional: specify organization ID for multi-org support
"GRAFANA_ORG_ID": "1"
}
}
}
}
नोट:
-t stdioतर्क यहां आवश्यक है क्योंकि यह Docker छवि में डिफ़ॉल्ट SSE मोड को ओवरराइड करता है।
रिमोट MCP सर्वर के साथ VSCode का उपयोग करना
यदि आप VSCode का उपयोग कर रहे हैं और MCP सर्वर को SSE मोड में चला रहे हैं (जो ट्रांसपोर्ट को ओवरराइड किए बिना Docker छवि का उपयोग करते समय डिफ़ॉल्ट है), तो सुनिश्चित करें कि आपका .vscode/settings.json निम्नलिखित शामिल करता है:
"mcp": {
"servers": {
"grafana": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
सर्वर TLS प्रमाणपत्रों के साथ HTTPS स्ट्रीमेबल HTTP मोड के लिए:
"mcp": {
"servers": {
"grafana": {
"type": "sse",
"url": "https://localhost:8443/sse"
}
}
}
डीबग मोड
आप कमांड में -debug फ्लैग जोड़कर Grafana ट्रांसपोर्ट के लिए डीबग मोड सक्षम कर सकते हैं। यह MCP सर्वर और Grafana API के बीच HTTP अनुरोधों और प्रतिक्रियाओं का विस्तृत लॉगिंग प्रदान करेगा, जो समस्या निवारण के लिए सहायक हो सकता है।
Claude Desktop कॉन्फ़िगरेशन के साथ डीबग मोड का उपयोग करने के लिए, अपने कॉन्फ़िग को निम्नानुसार अपडेट करें:
यदि बाइनरी का उपयोग कर रहे हैं:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": ["-debug"],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
यदि Docker का उपयोग कर रहे हैं:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio",
"-debug"
],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
नोट: मानक कॉन्फ़िगरेशन के साथ, Docker छवि में डिफ़ॉल्ट SSE मोड को ओवरराइड करने के लिए
-t stdioतर्क आवश्यक है।
TLS कॉन्फ़िगरेशन
यदि आपका Grafana इंस्टेंस mTLS के पीछे है या कस्टम TLS प्रमाणपत्रों की आवश्यकता है, तो आप MCP सर्वर को कस्टम प्रमाणपत्रों का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं। सर्वर निम्नलिखित TLS कॉन्फ़िगरेशन विकल्पों का समर्थन करता है:
--tls-cert-file: क्लाइंट प्रमाणीकरण के लिए TLS प्रमाणपत्र फ़ाइल का पथ--tls-key-file: क्लाइंट प्रमाणीकरण के लिए TLS निजी कुंजी फ़ाइल का पथ--tls-ca-file: सर्वर सत्यापन के लिए TLS CA प्रमाणपत्र फ़ाइल का पथ--tls-skip-verify: TLS प्रमाणपत्र सत्यापन छोड़ें (असुरक्षित, केवल परीक्षण के लिए उपयोग करें)
क्लाइंट प्रमाणपत्र प्रमाणीकरण के साथ उदाहरण:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [
"--tls-cert-file",
"/path/to/client.crt",
"--tls-key-file",
"/path/to/client.key",
"--tls-ca-file",
"/path/to/ca.crt"
],
"env": {
"GRAFANA_URL": "https://secure-grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Docker के साथ उदाहरण:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"/path/to/certs:/certs:ro",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio",
"--tls-cert-file",
"/certs/client.crt",
"--tls-key-file",
"/certs/client.key",
"--tls-ca-file",
"/certs/ca.crt"
],
"env": {
"GRAFANA_URL": "https://secure-grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
TLS कॉन्फ़िगरेशन MCP सर्वर द्वारा उपयोग किए जाने वाले सभी HTTP क्लाइंट पर लागू होता है, जिसमें शामिल हैं:
- मुख्य Grafana OpenAPI क्लाइंट
- Prometheus डेटासोर्स क्लाइंट
- Loki डेटासोर्स क्लाइंट
- घटना प्रबंधन क्लाइंट
- Sift जांच क्लाइंट
- अलर्टिंग क्लाइंट
- Asserts क्लाइंट
प्रत्यक्ष CLI उपयोग उदाहरण:
स्व-हस्ताक्षरित प्रमाणपत्रों के साथ परीक्षण के लिए:
./mcp-grafana --tls-skip-verify -debug
क्लाइंट प्रमाणपत्र प्रमाणीकरण के साथ:
./mcp-grafana \
--tls-cert-file /path/to/client.crt \
--tls-key-file /path/to/client.key \
--tls-ca-file /path/to/ca.crt \
-debug
केवल कस्टम CA प्रमाणपत्र के साथ:
./mcp-grafana --tls-ca-file /path/to/ca.crt
प्रोग्रामेटिक उपयोग:
यदि आप इस लाइब्रेरी का प्रोग्रामेटिक रूप से उपयोग कर रहे हैं, तो आप TLS-सक्षम संदर्भ फ़ंक्शन भी बना सकते हैं:
// Using struct literals
tlsConfig := &mcpgrafana.TLSConfig{
CertFile: "/path/to/client.crt",
KeyFile: "/path/to/client.key",
CAFile: "/path/to/ca.crt",
}
grafanaConfig := mcpgrafana.GrafanaConfig{
Debug: true,
TLSConfig: tlsConfig,
}
contextFunc := mcpgrafana.ComposedStdioContextFunc(grafanaConfig)
// Or inline
grafanaConfig := mcpgrafana.GrafanaConfig{
Debug: true,
TLSConfig: &mcpgrafana.TLSConfig{
CertFile: "/path/to/client.crt",
KeyFile: "/path/to/client.key",
CAFile: "/path/to/ca.crt",
},
}
contextFunc := mcpgrafana.ComposedStdioContextFunc(grafanaConfig)
URL सत्यापन:
NewGrafanaClient को सीधे कॉल करते समय (stdio या प्रोग्रामेटिक निर्माण), एक सुलभ पैनिक से बचने के लिए URL को पूर्व-सत्यापित करें:
if err := mcpgrafana.ValidateGrafanaURL(urlFromHeader); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
client := mcpgrafana.NewGrafanaClient(ctx, urlFromHeader, apiKey, nil)
सर्वर TLS कॉन्फ़िगरेशन (केवल स्ट्रीमेबल HTTP ट्रांसपोर्ट)
स्ट्रीमेबल HTTP ट्रांसपोर्ट (-t streamable-http) का उपयोग करते समय, आप MCP सर्वर को HTTP के बजाय HTTPS परोसने के लिए कॉन्फ़िगर कर सकते हैं। यह उपयोगी है जब आपको अपने MCP क्लाइंट और सर्वर के बीच कनेक्शन सुरक्षित करने की आवश्यकता होती है।
सर्वर स्ट्रीमेबल HTTP ट्रांसपोर्ट के लिए निम्नलिखित TLS कॉन्फ़िगरेशन विकल्पों का समर्थन करता है:
--server.tls-cert-file: सर्वर HTTPS के लिए TLS प्रमाणपत्र फ़ाइल का पथ (TLS के लिए आवश्यक)--server.tls-key-file: सर्वर HTTPS के लिए TLS निजी कुंजी फ़ाइल का पथ (TLS के लिए आवश्यक)
नोट: ये फ्लैग ऊपर प्रलेखित क्लाइंट TLS फ्लैग से पूरी तरह अलग हैं। क्लाइंट TLS फ्लैग कॉन्फ़िगर करते हैं कि MCP सर्वर Grafana से कैसे कनेक्ट होता है, जबकि ये सर्वर TLS फ्लैग कॉन्फ़िगर करते हैं कि स्ट्रीमेबल HTTP ट्रांसपोर्ट का उपयोग करते समय क्लाइंट MCP सर्वर से कैसे कनेक्ट होते हैं।
HTTPS स्ट्रीमेबल HTTP सर्वर के साथ उदाहरण:
./mcp-grafana \
-t streamable-http \
--server.tls-cert-file /path/to/server.crt \
--server.tls-key-file /path/to/server.key \
-addr :8443
यह MCP सर्वर को HTTPS पोर्ट 8443 पर शुरू करेगा। क्लाइंट तब http://localhost:8000/ के बजाय https://localhost:8443/ से कनेक्ट होंगे।
सर्वर TLS के साथ Docker उदाहरण:
docker run --rm -p 8443:8443 \
-v /path/to/certs:/certs:ro \
-e GRAFANA_URL=http://localhost:3000 \
-e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> \
grafana/mcp-grafana \
-t streamable-http \
-addr :8443 \
--server.tls-cert-file /certs/server.crt \
--server.tls-key-file /certs/server.key
स्वास्थ्य जांच समापन बिंदु
SSE (-t sse) या स्ट्रीमेबल HTTP (-t streamable-http) ट्रांसपोर्ट का उपयोग करते समय, MCP सर्वर /healthz पर एक स्वास्थ्य जांच समापन बिंदु उजागर करता है। इस समापन बिंदु का उपयोग लोड बैलेंसर, निगरानी प्रणाली, या ऑर्केस्ट्रेशन प्लेटफ़ॉर्म द्वारा यह सत्यापित करने के लिए किया जा सकता है कि सर्वर चल रहा है और कनेक्शन स्वीकार कर रहा है।
समापन बिंदु: GET /healthz
प्रतिक्रिया:
- स्थिति कोड:
200 OK - बॉडी:
ok
उपयोग उदाहरण:
# For streamable HTTP or SSE transport on default port
curl http://localhost:8000/healthz
# Probe a side listener while MCP stays on loopback (Kubernetes + sidecar)
./mcp-grafana -t streamable-http --address 127.0.0.1:8000 --healthz-address :8080
curl http://127.0.0.1:8080/healthz
# With --base-path /my-base the MCP routes move under the prefix
# (/my-base/sse, /my-base/mcp), but healthz does not:
curl http://localhost:8000/healthz # 200 ok
curl http://localhost:8000/my-base/healthz # 404
नोट: स्वास्थ्य जांच समापन बिंदु केवल SSE या स्ट्रीमेबल HTTP ट्रांसपोर्ट का उपयोग करते समय उपलब्ध है। यह stdio ट्रांसपोर्ट (-t stdio) का उपयोग करते समय उपलब्ध नहीं है, क्योंकि stdio एक HTTP सर्वर उजागर नहीं करता है।
अनाम उपयोग आँकड़े
सर्वर Grafana Labs को अपने बारे में अनाम उपयोग आँकड़े रिपोर्ट कर सकता है: कौन से टूल कॉल किए गए, उनमें से कितने कॉल विफल रहे, और सर्वर कैसे कॉन्फ़िगर किया गया है। एक रिपोर्ट एक सर्वर प्रोसेस को कवर करती है — न कि एक उपयोगकर्ता को और न ही एक वार्तालाप को — और हर 4 घंटे में भेजी जाती है, साथ ही शटडाउन पर एक बार भेजी जाती है। इस रिलीज़ में रिपोर्टिंग डिफ़ॉल्ट रूप से अक्षम है — प्राप्त करने वाला एंडपॉइंट अभी लाइव नहीं है — और एक बाद की रिलीज़ डिफ़ॉल्ट को उसी ऑप्ट-आउट के साथ सक्षम में बदल देगी।
टूल तर्क, संसाधन नाम, क्वेरी, लॉग लाइनें, त्रुटि संदेश और क्रेडेंशियल कभी नहीं भेजे जाते। फ़्लैग केवल नाम से दर्ज किए जाते हैं, कभी मान से नहीं, और Grafana इंस्टेंस को केवल cloud या self_hosted के रूप में वर्णित किया जाता है — कभी URL, होस्टनाम, स्टैक स्लग या org द्वारा नहीं। कुछ भी प्रति उपयोगकर्ता, प्रति सत्र या प्रति क्लाइंट नहीं है: वायर पर कोई सत्र पहचानकर्ता नहीं है और किसी टूल कॉल को किसी विशेष क्लाइंट से जोड़ने का कोई तरीका नहीं है।
# Turn reporting on
mcp-grafana --usage-stats=enabled
# Turn it off (or GRAFANA_USAGE_STATS=disabled)
mcp-grafana --usage-stats=disabled
# Print what would be sent, to stderr, and send nothing
GRAFANA_USAGE_STATS=log mcp-grafana
DO_NOT_TRACK=1 भी रिपोर्टिंग को अक्षम करता है, क्रॉस-टूल DO_NOT_TRACK परंपरा का पालन करते हुए। केवल 1 का कोई प्रभाव है, यह केवल अक्षम कर सकता है, और --usage-stats और GRAFANA_USAGE_STATS दोनों इसे ओवरराइड करते हैं, इसलिए एक होस्ट जो इसे वैश्विक रूप से सेट करता है वह अभी भी एक सर्वर को वापस ऑप्ट-इन कर सकता है।
GRAFANA_USAGE_STATS_ENDPOINT गंतव्य बदलता है। यह ऑप्ट-आउट नहीं है।
पूर्ण फ़ील्ड सूची के लिए, क्या कभी नहीं भेजा जाता है, डेटा कैसे पढ़ें और इसकी सीमाएँ, अनाम उपयोग आँकड़े देखें।
अवलोकनीयता
MCP सर्वर Prometheus मेट्रिक्स, OpenTelemetry वितरित ट्रेसिंग, और OpenTelemetry लॉग निर्यात का समर्थन करता है, OTel MCP शब्दार्थ परंपराओं का पालन करते हुए। ट्रेसिंग और लॉग निर्यात मानक OTEL_* पर्यावरण चर के माध्यम से कॉन्फ़िगर किए जाते हैं और किसी भी ट्रांसपोर्ट के साथ काम करते हैं।
नोट: mcp-grafana वर्तमान में केवल ट्रेस और लॉग दोनों के लिए OTLP/gRPC ट्रांसपोर्ट का समर्थन करता है। OTEL_EXPORTER_OTLP_PROTOCOL (और इसके _TRACES_PROTOCOL / _LOGS_PROTOCOL वेरिएंट) का सम्मान नहीं किया जाता है — gRPC का उपयोग हमेशा किया जाता है।
मेट्रिक्स
SSE या स्ट्रीमेबल HTTP ट्रांसपोर्ट का उपयोग करते समय, --metrics फ़्लैग के साथ Prometheus मेट्रिक्स सक्षम करें:
# Metrics served on the main server at /metrics
./mcp-grafana -t streamable-http --metrics
# Metrics served on a separate address
./mcp-grafana -t streamable-http --metrics --metrics-address :9090
उपलब्ध मेट्रिक्स:
| मेट्रिक | प्रकार | विवरण |
|---|---|---|
mcp_server_operation_duration_seconds | हिस्टोग्राम | MCP संचालन की अवधि (लेबल: mcp_method_name, gen_ai_tool_name, error_type, network_transport, mcp_protocol_version) |
mcp_server_session_duration_seconds | हिस्टोग्राम | MCP क्लाइंट सत्रों की अवधि (लेबल: network_transport, mcp_protocol_version) |
http_server_request_duration_seconds | हिस्टोग्राम | HTTP सर्वर अनुरोधों की अवधि (otelhttp से) |
नोट: मेट्रिक्स केवल SSE या स्ट्रीमेबल HTTP ट्रांसपोर्ट का उपयोग करते समय उपलब्ध हैं। वे stdio ट्रांसपोर्ट के साथ उपलब्ध नहीं हैं।
जब Loki लागत गार्डरेल (--loki-guardrail-mode) सक्षम होता है, तो चार और काउंटर इसके निर्णय दर्ज करते हैं:
| मेट्रिक | प्रकार | विवरण |
|---|---|---|
mcp_loki_guardrail_admitted_total | काउंटर | क्वेरी जो हर सक्षम जाँच पास कर गईं (लेबल: backend) |
mcp_loki_guardrail_would_block_total | काउंटर | क्वेरी जो shadow मोड में एक जाँच में विफल रहीं और फिर भी चलीं (लेबल: backend, reason) |
mcp_loki_guardrail_blocked_total | काउंटर | enforce मोड में अस्वीकृत क्वेरी (लेबल: backend, reason) |
mcp_loki_guardrail_fail_open_total | काउंटर | क्वेरी जिनका गार्डरेल मूल्यांकन नहीं कर सका और स्वीकार कर लिया (लेबल: backend, cause) |
reason selector, range, bytes में से एक है; cause unparseable, estimate_failed में से एक है; backend loki, victorialogs, unknown में से एक है। एक क्वेरी जो कई जाँचों को ट्रिगर करती है, उसे एक बार गिना जाता है, उस जाँच के साथ लेबल किया जाता है जो पहले चली (selector, फिर range, फिर bytes), इसलिए चार काउंटर संरक्षित जनसंख्या को विभाजित करते हैं। shadow → enforce रोलआउट के दौरान उन्हें कैसे पढ़ें, इसके लिए अवलोकनीयता देखें।
लाइब्रेरी एम्बेडर्स को GrafanaConfig.MeterProvider सेट करना चाहिए (GrafanaConfig.Logger का मेट्रिक्स समकक्ष): गार्डरेल एक टूल हैंडलर के अंदर चलता है, इसलिए इसका कोई कंस्ट्रक्टर विकल्प नहीं है, और एक प्रोसेस जो एक noop वैश्विक MeterProvider स्थापित करता है, अन्यथा हर रिकॉर्डिंग छोड़ देगा।
धीमे-अनुरोध लॉगिंग
--slow-request-threshold फ़्लैग एक संरचित लॉग इवेंट उत्सर्जित करता है जब भी कोई MCP अनुरोध (टूल इनवोकेशन, सूची, संसाधन पठन, आदि) दी गई अवधि से अधिक हो जाता है। यह पूर्ण डीबग लॉग में डूबे बिना धीमी क्वेरी और टूल कॉल के निदान के लिए उपयोगी है।
# Warn on any request slower than 500ms (works on all transports)
./mcp-grafana -t streamable-http --slow-request-threshold 500ms
# Same thing on stdio (the feature is transport-agnostic, unlike --metrics)
./mcp-grafana -t stdio --slow-request-threshold 500ms
# Log at INFO level instead of WARN (useful during investigation)
./mcp-grafana -t streamable-http --slow-request-threshold 500ms --slow-request-log-level info
लॉग इवेंट इन संरचित विशेषताओं को वहन करता है:
| विशेषता | विवरण |
|---|---|
mcp.method | MCP विधि (जैसे, tools/call, tools/list, resources/read) |
duration | देखी गई अनुरोध अवधि |
threshold | कॉन्फ़िगर की गई सीमा |
tool | टूल नाम (केवल tools/call विधियों के लिए मौजूद) |
error | त्रुटि मान, जब अनुरोध विफल हुआ (सर्वोत्तम-प्रयास संदर्भ; सामग्री अपस्ट्रीम त्रुटि रैपिंग द्वारा नियंत्रित होती है) |
error.type | बाउंडेड-कार्डिनैलिटी त्रुटि वर्गीकरण (अटाइप्ड त्रुटियों के लिए _OTHER) |
धीमे-अनुरोध लॉगिंग सभी ट्रांसपोर्ट (stdio सहित) पर काम करती है और --metrics की आवश्यकता नहीं होती है। 0 की डिफ़ॉल्ट सीमा इसे पूरी तरह से अक्षम कर देती है। प्रॉक्सी किए गए टूल tools/call के माध्यम से प्रवाहित होते हैं और स्वचालित रूप से कवर होते हैं।
ट्रेसिंग
वितरित ट्रेसिंग मानक OTEL_* पर्यावरण चर के माध्यम से कॉन्फ़िगर की जाती है और --metrics फ़्लैग से स्वतंत्र रूप से काम करती है। जब OTEL_EXPORTER_OTLP_ENDPOINT (या सिग्नल-विशिष्ट OTEL_EXPORTER_OTLP_TRACES_ENDPOINT) सेट होता है, तो सर्वर OTLP/gRPC के माध्यम से ट्रेस निर्यात करता है:
# Send traces to a local Tempo instance
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 \
OTEL_EXPORTER_OTLP_INSECURE=true \
./mcp-grafana -t streamable-http
# Send traces to Grafana Cloud with authentication
OTEL_EXPORTER_OTLP_ENDPOINT=https://tempo-us-central1.grafana.net:443 \
OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic ..." \
./mcp-grafana -t streamable-http
टूल कॉल स्पैन semconv नामकरण (tools/call <tool_name>) का पालन करते हैं और gen_ai.tool.name, mcp.method.name, और mcp.session.id जैसी विशेषताएँ शामिल करते हैं। सर्वर टूल कॉल अनुरोधों के _meta फ़ील्ड से W3C ट्रेस संदर्भ प्रसार का भी समर्थन करता है।
लॉग
जब OTEL_EXPORTER_OTLP_ENDPOINT (या सिग्नल-विशिष्ट OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) सेट होता है, तो सर्वर मौजूदा प्लेन-टेक्स्ट stderr आउटपुट के अतिरिक्त OTLP/gRPC के माध्यम से संरचित लॉग भी निर्यात करता है। otelslog ब्रिज स्वचालित रूप से सक्रिय स्पैन से trace_id और span_id संलग्न करता है, इसलिए लॉग रिकॉर्ड उन ट्रेस के साथ सहसंबंधित होते हैं जो सर्वर पहले से उत्सर्जित करता है।
ट्रेस और लॉग अपने एंडपॉइंट स्वतंत्र रूप से हल करते हैं, इसलिए दोनों सिग्नल अलग-अलग सक्षम किए जा सकते हैं: केवल OTEL_EXPORTER_OTLP_TRACES_ENDPOINT सेट करने से लॉग निर्यात के बिना ट्रेसिंग सक्षम होती है, केवल OTEL_EXPORTER_OTLP_LOGS_ENDPOINT सेट करने से ट्रेसिंग के बिना लॉग निर्यात सक्षम होता है, और सामान्य OTEL_EXPORTER_OTLP_ENDPOINT दोनों को सक्षम करता है।
यदि आप सामान्य OTEL_EXPORTER_OTLP_ENDPOINT का उपयोग करते हैं लेकिन लॉग निर्यात अक्षम करना चाहते हैं (जैसे आपका बैकएंड LogsService का समर्थन नहीं करता), तो सेट करें:
OTEL_LOGS_EXPORTER=none
यह सर्वर को एंडपॉइंट कॉन्फ़िगरेशन की परवाह किए बिना OTLP लॉग एक्सपोर्टर बनाने से रोकता है, unknown service opentelemetry.proto.collector.logs.v1.LogsService जैसी त्रुटियों से बचाता है।
OTLP लॉगिंग सक्षम होने पर stderr लॉगिंग अपरिवर्तित रहती है; यदि आप चाहें तो कंटेनर लॉग पर भरोसा करना जारी रख सकते हैं या stderr को /dev/null पर पाइप कर सकते हैं।
# Send both logs and traces to a local OTel collector
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 \
OTEL_EXPORTER_OTLP_INSECURE=true \
./mcp-grafana -t streamable-http
ट्रांसपोर्ट OTLP/gRPC है (डिफ़ॉल्ट पोर्ट 4317)। लॉग सीधे किसी भी प्रबंधित बैकएंड पर भेजे जा सकते हैं जो OTLP/gRPC स्वीकार करता है — उदाहरण के लिए, Grafana Cloud — OTEL_EXPORTER_OTLP_LOGS_ENDPOINT (या सामान्य OTEL_EXPORTER_OTLP_ENDPOINT) को दूरस्थ gRPC एंडपॉइंट पर इंगित करके और OTEL_EXPORTER_OTLP_LOGS_HEADERS (या OTEL_EXPORTER_OTLP_HEADERS) के माध्यम से प्रमाणीकरण प्रदान करके, ऊपर दिए गए ट्रेसिंग उदाहरण को प्रतिबिंबित करते हुए। एक स्थानीय OTel कलेक्टर वैकल्पिक है — फैन-आउट, बैचिंग, या मल्टी-बैकएंड रूटिंग के लिए उपयोगी, लेकिन आवश्यक नहीं।
सिग्नल-विशिष्ट वेरिएंट OTEL_EXPORTER_OTLP_LOGS_ENDPOINT, OTEL_EXPORTER_OTLP_LOGS_HEADERS, OTEL_EXPORTER_OTLP_LOGS_INSECURE, OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_LOGS_TIMEOUT, और OTEL_EXPORTER_OTLP_LOGS_COMPRESSION का सम्मान किया जाता है और अपने सामान्य OTEL_EXPORTER_OTLP_* समकक्षों को ओवरराइड करते हैं — पूरी सूची और प्राथमिकता नियमों के लिए OTel एक्सपोर्टर स्पेक देखें।
यदि कॉन्फ़िगर किया गया कलेक्टर अप्राप्य है, तो लॉग रिकॉर्ड मेमोरी में बफ़र किए जाते हैं (डिफ़ॉल्ट कतार: 2048) और कतार भर जाने पर सबसे पुराने रिकॉर्ड हटा दिए जाते हैं। प्रक्रिया सेवा को अवरुद्ध किए बिना जारी रहती है। यदि आपको आउटेज के दौरान दोषरहित बफ़रिंग की आवश्यकता है तो एक स्थानीय OTel कलेक्टर कॉन्फ़िगर करें।
लॉग stdio ट्रांसपोर्ट के तहत भी निर्यात किए जाते हैं, जिससे IDE क्लाइंट द्वारा आहूत स्थानीय mcp-grafana इंस्टेंस से लॉग केंद्रीकृत करना आसान हो जाता है।
मेट्रिक्स, ट्रेसिंग और लॉग के साथ Docker उदाहरण:
docker run --rm -p 8000:8000 \
-e GRAFANA_URL=http://localhost:3000 \
-e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your token> \
-e OTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317 \
-e OTEL_EXPORTER_OTLP_INSECURE=true \
grafana/mcp-grafana \
-t streamable-http --metrics
Loki क्वेरी प्रवर्तन
--loki-enforced-matchers एक ऑपरेटर को यह प्रतिबंधित करने देता है कि सर्वर कौन से Loki लॉग स्ट्रीम कभी पढ़ सकता है, हर नेटिव-Loki क्वेरी में LogQL लेबल मैचर्स का एक निश्चित सेट AND करके जो सर्वर जारी करता है। यह तब उपयोगी होता है जब एक डेटासोर्स में ऐसी स्ट्रीम होती हैं जिन्हें उजागर नहीं किया जाना चाहिए (जैसे लॉग जो संवेदनशील जानकारी ले जा सकते हैं) लेकिन आप Grafana या Loki परत पर पहुँच प्रतिबंधित नहीं कर सकते (OSS में प्रति-डेटासोर्स या प्रति-उपयोगकर्ता लेबल पहुँच नियंत्रण नहीं है)।
# Only ever read prod/staging environments (allowlist)
./mcp-grafana --loki-enforced-matchers 'environment=~"prod|staging"' --disable-api
# Never read the vault or payments namespaces (exclusion)
./mcp-grafana --loki-enforced-matchers 'namespace!~"vault|payments"' --disable-api
यह कैसे काम करता है:
- मैचर्स को स्टार्टअप पर एक बार पार्स किया जाता है (अमान्य इनपुट सर्वर को समाप्त कर देता है) और प्रत्येक क्वेरी में हर स्ट्रीम चयनकर्ता में जोड़ा जाता है। क्योंकि Loki एक चयनकर्ता के भीतर मैचर्स को AND करता है, एक उपयोगकर्ता क्वेरी केवल प्रवर्तित सीमाओं के भीतर परिणामों को संकीर्ण कर सकती है — यह उन्हें कभी चौड़ा नहीं कर सकती। एक उपयोगकर्ता चयनकर्ता जो नीति के साथ संघर्ष करता है (जैसे बहिष्करण के तहत
{namespace="vault"}माँगना) बस कुछ भी नहीं लौटाता। - यह
query_loki_logs,query_loki_stats,query_loki_patterns,list_loki_label_names, औरlist_loki_label_valuesको कवर करता है। - यह विफल-बंद है: कोई भी क्वेरी जिसे पार्स नहीं किया जा सकता, उसे बिना फ़िल्टर किए भेजने के बजाय अस्वीकार कर दिया जाता है।
- VictoriaLogs डेटासोर्स LogsQL का उपयोग करते हैं, जिसे सुरक्षित रूप से फिर से नहीं लिखा जा सकता, इसलिए प्रवर्तन सक्षम होने पर उन्हें पूरी तरह से अस्वीकार कर दिया जाता है।
- विशुद्ध रूप से नकारात्मक मैचर्स लेबल-गणना एंडपॉइंट को स्कोप नहीं कर सकते (Loki बिना सकारात्मक मैचर के एक स्टैंडअलोन चयनकर्ता को अस्वीकार करता है)। उस किनारे के मामले को
--loki-label-enumeration-fallback(डिफ़ॉल्ट रूप सेreject, या लेबल मेटाडेटा की असंबद्ध गणना की अनुमति देने के लिएunfiltered) के साथ नियंत्रित करें — लॉग लाइनें कभी उजागर नहीं होतीं। सकारात्मक/अनुमति-सूची मैचर्स प्रभावित नहीं होते।
[!IMPORTANT] प्रवर्तन केवल Loki क्वेरी टूल पर लागू होता है। अन्य टूल उन पथों के माध्यम से Loki लॉग डेटा तक पहुँच सकते हैं जो प्रवर्तित बैकएंड को कभी स्पर्श नहीं करते, इसलिए प्रतिबंध को वास्तव में बनाए रखने के लिए आपको उन्हें भी अक्षम करना होगा:
--disable-api—grafana_api_requestLoki डेटासोर्स प्रॉक्सी को सीधे क्वेरी कर सकता है (पूर्ण बायपास)।--disable-rendering—get_panel_imageLoki पैनल सर्वर-साइड रेंडर करता है, अप्रतिबंधित लॉग लाइनों के साथ छवियाँ उत्पन्न करता है।--disable-sift— Sift जाँच सभी स्ट्रीम में Loki लॉग का सर्वर-साइड विश्लेषण करती हैं।--disable-assistant—ask_assistantGrafana Assistant को प्रत्यायोजित करता है, जो सभी स्ट्रीम में Loki को सर्वर-साइड पढ़ता है। केवल तब पंजीकृत होता है जब लेखन टूल सक्षम होते हैं, इसलिए--disable-writeइसे भी बंद कर देता है।सर्वर स्टार्टअप पर एक चेतावनी लॉग करता है जो इनमें से प्रत्येक का नाम देता है जो अभी भी सक्षम है।
run_panel_queryसुरक्षित है (यह प्रवर्तित क्वेरी पथ का पुन: उपयोग करता है)। Tempo टूल ट्रेस क्वेरी करते हैं, Loki लॉग नहीं, इसलिए वे बायपास नहीं हैं। डैशबोर्ड स्नैपशॉट (--disable-snapshot) प्रवर्तन के बाहर कैप्चर किए गए लॉग-पैनल डेटा को भी एम्बेड कर सकते हैं।
समस्या निवारण
Grafana संस्करण संगतता
यदि आपको डेटासोर्स-संबंधित टूल का उपयोग करते समय निम्न त्रुटि मिलती है:
get datasource by uid : [GET /datasources/uid/{uid}][400] getDataSourceByUidBadRequest {"message":"id is invalid"}
यह आमतौर पर इंगित करता है कि आप Grafana संस्करण 9.0 से पहले का उपयोग कर रहे हैं। /datasources/uid/{uid} API एंडपॉइंट Grafana 9.0 में पेश किया गया था, और डेटासोर्स संचालन पुराने संस्करणों पर विफल हो जाएगा।
समाधान: इस समस्या को हल करने के लिए अपने Grafana इंस्टेंस को संस्करण 9.0 या बाद में अपग्रेड करें।
विकास
योगदान का स्वागत है! कृपया पहले CONTRIBUTING.md पढ़ें — यह कवर करता है कि इस सर्वर में क्या शामिल है और इसे कैसे प्रस्तावित किया जाए। यदि आप एक नया टूल जोड़ रहे हैं, तो कृपया कोड लिखने से पहले एक टूल प्रस्ताव खोलें। हर डिफ़ॉल्ट-चालू टूल को हर अनुरोध पर हर उपयोगकर्ता द्वारा मॉडल को भेजा जाता है, इसलिए हम तैयार पुल अनुरोध को अस्वीकार करने के बजाय विचार पर चर्चा करना पसंद करेंगे। बग फिक्स, दस्तावेज़, परीक्षण और मौजूदा टूल पर नए पैरामीटर के लिए किसी प्रस्ताव की आवश्यकता नहीं है — बस एक PR भेजें।
यह प्रोजेक्ट Go में लिखा गया है। अपने प्लेटफ़ॉर्म के लिए निर्देशों का पालन करते हुए Go इंस्टॉल करें।
सर्वर को स्थानीय रूप से STDIO मोड में चलाने के लिए (जो स्थानीय विकास के लिए डिफ़ॉल्ट है), उपयोग करें:
make run
सर्वर को स्थानीय रूप से SSE मोड में चलाने के लिए, उपयोग करें:
go run ./cmd/mcp-grafana --transport sse
आप कस्टम निर्मित Docker इमेज के अंदर SSE ट्रांसपोर्ट का उपयोग करके भी सर्वर चला सकते हैं। प्रकाशित Docker इमेज की तरह, इस कस्टम इमेज का एंट्रीपॉइंट डिफ़ॉल्ट रूप से SSE मोड में होता है। इमेज बनाने के लिए, उपयोग करें:
make build-image
और इमेज को SSE मोड में चलाने के लिए (डिफ़ॉल्ट), उपयोग करें:
docker run -it --rm -p 8000:8000 mcp-grafana:latest
यदि आपको इसे STDIO मोड में चलाने की आवश्यकता है, तो ट्रांसपोर्ट सेटिंग को ओवरराइड करें:
docker run -it --rm mcp-grafana:latest -t stdio
परीक्षण
तीन प्रकार के परीक्षण उपलब्ध हैं:
- यूनिट परीक्षण (कोई बाहरी निर्भरता आवश्यक नहीं):
make test-unit
आप यूनिट परीक्षण भी चला सकते हैं:
make test
- एकीकरण परीक्षण (docker कंटेनर चालू होने की आवश्यकता है):
make test-integration
- क्लाउड परीक्षण (क्लाउड Grafana इंस्टेंस और क्रेडेंशियल की आवश्यकता है):
make test-cloud
नोट: क्लाउड परीक्षण CI में स्वचालित रूप से कॉन्फ़िगर किए जाते हैं। स्थानीय विकास के लिए, आपको अपना स्वयं का Grafana क्लाउड इंस्टेंस और क्रेडेंशियल सेट करने की आवश्यकता होगी।
अधिक व्यापक एकीकरण परीक्षणों के लिए पोर्ट 3000 पर स्थानीय रूप से चल रहे Grafana इंस्टेंस की आवश्यकता होगी; आप इसे Docker Compose के साथ शुरू कर सकते हैं:
docker-compose up -d
एकीकरण परीक्षण इसके साथ चलाए जा सकते हैं:
make test-all
यदि आप अधिक टूल जोड़ रहे हैं, तो कृपया उनके लिए एकीकरण परीक्षण जोड़ें। मौजूदा परीक्षण एक अच्छा प्रारंभिक बिंदु होना चाहिए।
लिंटिंग
कोड को लिंट करने के लिए, चलाएं:
make lint
इसमें एक कस्टम लिंटर शामिल है जो jsonschema स्ट्रक्चर टैग में अनएस्केप्ड कॉमा की जांच करता है। description फ़ील्ड में कॉमा को \\, के साथ एस्केप किया जाना चाहिए ताकि मौन ट्रंकेशन को रोका जा सके। आप केवल इस लिंटर को इसके साथ चला सकते हैं:
make lint-jsonschema
अधिक विवरण के लिए JSONSchema लिंटर दस्तावेज़ देखें।
लाइसेंस
यह प्रोजेक्ट Apache लाइसेंस, संस्करण 2.0 के तहत लाइसेंस प्राप्त है।