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 सर्वर

Unit Tests Integration Tests E2E Tests Go Reference MCP Catalog

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 से नीचे का Grafana panes नहीं समझता है, इसलिए उन संस्करणों के लिए विरासत ?left={...} प्रारूप उत्सर्जित होता है।
    • समय सीमा समर्थन: लिंक में समय सीमा पैरामीटर जोड़ें (from=now-1h&to=now)
    • कस्टम पैरामीटर: डैशबोर्ड चर या रीफ़्रेश अंतराल जैसे अतिरिक्त क्वेरी पैरामीटर शामिल करें

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 - केवल UID abc123 वाले डैशबोर्ड तक पहुंच
    • folders:uid:xyz789 - केवल UID xyz789 वाले फ़ोल्डर तक पहुंच
    • teams:id:5 - केवल ID 5 वाली टीम तक पहुंच
    • global.users:id:123 - केवल ID 123 वाले उपयोगकर्ता तक पहुंच

उदाहरण:

  • पूर्ण 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:readteams:* या teams:id:1
list_users_by_orgएडमिनकिसी संगठन में सभी उपयोगकर्ताओं की सूची बनाएंusers:readglobal.users:* या global.users:id:123
list_all_rolesएडमिनसभी Grafana भूमिकाओं की सूची बनाएंroles:readroles:*
get_role_detailsएडमिनकिसी Grafana भूमिका के विवरण प्राप्त करेंroles:readroles:uid:editor
get_role_assignmentsएडमिनकिसी भूमिका के लिए असाइनमेंट की सूची बनाएंroles:readroles:uid:editor
list_user_rolesएडमिनउपयोगकर्ताओं के लिए भूमिकाओं की सूची बनाएंroles:readglobal.users:id:123
list_team_rolesएडमिनटीमों के लिए भूमिकाओं की सूची बनाएंroles:readteams:id:7
get_resource_permissionsएडमिनकिसी संसाधन के लिए अनुमतियों की सूची बनाएंpermissions:readdashboards:uid:abcd1234
get_resource_descriptionएडमिनकिसी Grafana संसाधन प्रकार का वर्णन करेंpermissions:readdashboards:*
user_infoउपयोगकर्तावर्तमान पहचान, क्षमताएं, और सुलभ संगठनकोई नहीं (साइन-इन उपयोगकर्ता)—
search_dashboardsखोजक्वेरी, फ़ोल्डर UID, टैग, या स्टार्ड द्वारा डैशबोर्ड खोजेंdashboards:readdashboards:* या dashboards:uid:abc123
get_dashboard_by_uidडैशबोर्डuid द्वारा डैशबोर्ड प्राप्त करें, वैकल्पिक रूप से सहेजा गया संस्करणdashboards:readdashboards:uid:abc123
list_dashboard_versionsडैशबोर्डडैशबोर्ड के सहेजे गए संस्करणों की सूची बनाएं (संस्करण, लेखक, समय, संदेश)dashboards:readdashboards:uid:abc123
update_dashboardडैशबोर्डनया डैशबोर्ड अपडेट या बनाएंdashboards:create, dashboards:writedashboards:*, folders:* या folders:uid:xyz789
get_dashboard_panel_queriesडैशबोर्डडैशबोर्ड से पैनल शीर्षक, क्वेरी, डेटासोर्स UID और प्रकार प्राप्त करेंdashboards:readdashboards:uid:abc123
run_panel_queryRunPanelQuery*एक या अधिक डैशबोर्ड पैनल क्वेरी निष्पादित करेंdashboards:read, datasources:querydashboards:uid:*, datasources:uid:*
get_dashboard_propertyडैशबोर्डJSONPath एक्सप्रेशन का उपयोग करके डैशबोर्ड के विशिष्ट भाग निकालेंdashboards:readdashboards:uid:abc123
get_dashboard_summaryडैशबोर्डपूर्ण JSON के बिना डैशबोर्ड का संक्षिप्त सारांश प्राप्त करेंdashboards:readdashboards:uid:abc123
list_datasourcesडेटासोर्सडेटासोर्स की सूची बनाएंdatasources:readdatasources:*
get_datasourceडेटासोर्सUID या नाम से डेटासोर्स प्राप्त करेंdatasources:readdatasources:uid:prometheus-uid
get_query_examplesउदाहरण*डेटासोर्स प्रकार के लिए उदाहरण क्वेरी प्राप्त करेंdatasources:readdatasources:*
query_prometheusPrometheusPrometheus डेटासोर्स के विरुद्ध क्वेरी निष्पादित करेंdatasources:querydatasources:uid:prometheus-uid
list_prometheus_metric_metadataPrometheusमीट्रिक मेटाडेटा की सूची बनाएंdatasources:querydatasources:uid:prometheus-uid
list_prometheus_metric_namesPrometheusउपलब्ध मीट्रिक नामों की सूची बनाएंdatasources:querydatasources:uid:prometheus-uid
list_prometheus_label_namesPrometheusचयनकर्ता से मेल खाने वाले लेबल नामों की सूची बनाएंdatasources:querydatasources:uid:prometheus-uid
list_prometheus_label_valuesPrometheusकिसी विशिष्ट लेबल के लिए मानों की सूची बनाएंdatasources:querydatasources:uid:prometheus-uid
query_prometheus_histogramPrometheusहिस्टोग्राम प्रतिशतक मानों की गणना करेंdatasources:querydatasources: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_logsLokiLogQL का उपयोग करके लॉग क्वेरी और पुनर्प्राप्त करें (या तो लॉग या मीट्रिक क्वेरी)datasources:querydatasources:uid:loki-uid
list_loki_label_namesLokiलॉग में सभी उपलब्ध लेबल नामों की सूची बनाएंdatasources:querydatasources:uid:loki-uid
list_loki_label_valuesLokiकिसी विशिष्ट लॉग लेबल के लिए मानों की सूची बनाएंdatasources:querydatasources:uid:loki-uid
query_loki_statsLokiलॉग स्ट्रीम के बारे में आँकड़े प्राप्त करेंdatasources:querydatasources:uid:loki-uid
query_loki_patternsLokiसामान्य संरचनाओं की पहचान करने के लिए पता लगाए गए लॉग पैटर्न क्वेरी करेंdatasources:querydatasources:uid:loki-uid
analyze_loki_labelsLokiLoki लेबल रणनीति का ऑडिट करें (लाइव या स्थिर) और वैकल्पिक रूप से क्वेरी प्रदर्शन का निदान करेंdatasources:querydatasources:uid:loki-uid
suggest_loki_alloy_label_configकॉन्फ़िगरअनुमोदित लेबल लागू करने वाला Alloy loki.process स्निपेट उत्पन्न करेंN/AN/A
query_influxdbInfluxDBInfluxQL (v1) या Flux (v2) का उपयोग करके InfluxDB से क्वेरी करेंdatasources:querydatasources:uid:influxdb-uid
list_sql_databasesSQL*SQL डेटासोर्स से डेटाबेस, स्कीमा, या कैटलॉग सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_sql_tablesSQL*SQL डेटासोर्स में टेबल सूचीबद्ध करेंdatasources:querydatasources:uid:*
describe_sql_tableSQL*किसी टेबल के लिए कॉलम स्कीमा प्राप्त करेंdatasources:querydatasources:uid:*
query_sqlSQL*मैक्रो प्रतिस्थापन के साथ SQL क्वेरी निष्पादित करेंdatasources:querydatasources:uid:*
list_cloudwatch_namespacesCloudWatch*उपलब्ध AWS CloudWatch नेमस्पेस सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_cloudwatch_metricsCloudWatch*नेमस्पेस में मेट्रिक्स सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_cloudwatch_dimensionsCloudWatch*किसी मेट्रिक के लिए आयाम सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_cloudwatch_dimension_valuesCloudWatch*किसी आयाम कुंजी के लिए मान सूचीबद्ध करेंdatasources:querydatasources:uid:*
query_cloudwatchCloudWatch*CloudWatch मेट्रिक क्वेरी निष्पादित करेंdatasources:querydatasources:uid:*
list_cloud_logging_projectsCloud Logging*Google Cloud Logging डेटासोर्स द्वारा पठनीय GCP प्रोजेक्ट सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_cloud_logging_bucketsCloud Logging*GCP प्रोजेक्ट में लॉग बकेट सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_cloud_logging_viewsCloud Logging*लॉग बकेट में लॉग दृश्य सूचीबद्ध करेंdatasources:querydatasources:uid:*
query_cloud_loggingCloud Logging*Cloud Logging क्वेरी भाषा के साथ लॉग क्वेरी करेंdatasources:querydatasources:uid:*
query_elasticsearchElasticsearch/OpenSearch*Lucene सिंटैक्स या Query DSL का उपयोग करके Elasticsearch या OpenSearch क्वेरी करेंdatasources:querydatasources:uid:datasource-uid
query_quickwitQuickwit*Lucene सिंटैक्स या Query DSL का उपयोग करके Quickwit क्वेरी करेंdatasources:querydatasources:uid:quickwit-uid
alerting_manage_rulesAlertingअलर्ट नियम प्रबंधित करें (सूची, प्राप्त करें, संस्करण, बनाएं, अपडेट करें, हटाएं)alert.rules:read + alert.rules:write परिवर्तनों के लिएfolders:* या folders:uid:alerts-folder
alerting_manage_routingAlertingअधिसूचना नीतियां, संपर्क बिंदु, और समय अंतराल प्रबंधित करेंalert.notifications:readवैश्विक दायरा
alerting_manage_silencesAlertingअलर्टिंग मौन प्रबंधित करें (सूची, प्राप्त करें, बनाएं, अपडेट करें, समाप्त करें)alert.instances:read + alert.instances:write परिवर्तनों के लिएवैश्विक दायरा
list_oncall_schedulesOnCallGrafana OnCall से शेड्यूल सूचीबद्ध करेंgrafana-oncall-app.schedules:readप्लगइन-विशिष्ट दायरे
get_oncall_shiftOnCallकिसी विशिष्ट OnCall शिफ्ट के लिए विवरण प्राप्त करेंgrafana-oncall-app.schedules:readप्लगइन-विशिष्ट दायरे
get_current_oncall_usersOnCallकिसी विशिष्ट शेड्यूल के लिए वर्तमान में ऑन-कॉल उपयोगकर्ता प्राप्त करेंgrafana-oncall-app.schedules:readप्लगइन-विशिष्ट दायरे
list_oncall_teamsOnCallGrafana OnCall से टीमें सूचीबद्ध करेंgrafana-oncall-app.user-settings:readप्लगइन-विशिष्ट दायरे
list_oncall_usersOnCallGrafana OnCall से उपयोगकर्ता सूचीबद्ध करेंgrafana-oncall-app.user-settings:readप्लगइन-विशिष्ट दायरे
list_alert_groupsOnCallफ़िल्टरिंग विकल्पों के साथ Grafana OnCall से अलर्ट समूह सूचीबद्ध करेंgrafana-oncall-app.alert-groups:readप्लगइन-विशिष्ट दायरे
get_alert_groupOnCallइसके ID द्वारा Grafana OnCall से एक विशिष्ट अलर्ट समूह प्राप्त करेंgrafana-oncall-app.alert-groups:readप्लगइन-विशिष्ट दायरे
update_alert_groupOnCallअलर्ट समूह को स्वीकार करें, अस्वीकार करें, हल करें, या अनसुलझा करेंgrafana-oncall-app.alert-groups:write (और :read)प्लगइन-विशिष्ट दायरे
get_sift_investigationSiftइसके UUID द्वारा एक मौजूदा Sift जांच प्राप्त करेंदर्शक भूमिकाN/A
get_sift_analysisSiftSift जांच से एक विशिष्ट विश्लेषण प्राप्त करेंदर्शक भूमिकाN/A
list_sift_investigationsSiftवैकल्पिक सीमा के साथ Sift जांच की सूची प्राप्त करेंदर्शक भूमिकाN/A
find_error_pattern_logsSiftLoki लॉग में उन्नत त्रुटि पैटर्न ढूंढता है।संपादक भूमिकाN/A
find_slow_requestsSiftप्रासंगिक tempo डेटासोर्स से धीमे अनुरोध ढूंढता है।संपादक भूमिकाN/A
list_pyroscope_label_namesPyroscopeएक चयनकर्ता से मेल खाते लेबल नाम सूचीबद्ध करेंdatasources:querydatasources:uid:pyroscope-uid
list_pyroscope_label_valuesPyroscopeएक लेबल नाम के लिए एक चयनकर्ता से मेल खाते लेबल मान सूचीबद्ध करेंdatasources:querydatasources:uid:pyroscope-uid
list_pyroscope_profile_typesPyroscopeउपलब्ध प्रोफ़ाइल प्रकार सूचीबद्ध करेंdatasources:querydatasources:uid:pyroscope-uid
query_pyroscopePyroscopePyroscope से प्रोफ़ाइल, मेट्रिक्स, या दोनों क्वेरी करेंdatasources:querydatasources:uid:pyroscope-uid
get_assertionsAssertsकिसी दिए गए इकाई के लिए अभिकथन सारांश प्राप्त करेंप्लगइन-विशिष्ट अनुमतियांप्लगइन-विशिष्ट दायरे
agento11y_manage_conversationsAgent Observability*Grafana Agent Observability से LLM वार्तालाप सूचीबद्ध करें, खोजें, और प्राप्त करेंgrafana-agento11y-app.conversations:readN/A
agento11y_manage_generationsAgent Observability*Grafana Agent Observability से LLM पीढ़ी विवरण और मूल्यांकन स्कोर प्राप्त करेंgrafana-agento11y-app.data:readN/A
agento11y_manage_agentsAgent Observability*एजेंट कैटलॉग पढ़ें: एजेंट सूचीबद्ध करें, एक एजेंट संस्करण पूर्ण रूप से प्राप्त करें, संस्करण इतिहास सूचीबद्ध करें, और प्रति-संस्करण स्कोर समुच्चयgrafana-agento11y-app.data:readN/A
agento11y_manage_evaluatorsAgent Observability*मूल्यांकनकर्ता, मूल्यांकनकर्ता टेम्पलेट, और न्यायाधीश कैटलॉग प्रबंधित करें (सूची, प्राप्त करें, अपसेर्ट, फोर्क, परीक्षण, हटाएं)grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write परिवर्तनों और परीक्षणों के लिएN/A
agento11y_manage_eval_rulesAgent Observability*मूल्यांकन नियम और गार्ड प्रबंधित करें (सूची, प्राप्त करें, बनाएं, अपडेट करें, पूर्वावलोकन, हटाएं)grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write परिवर्तनों और पूर्वावलोकन के लिएN/A
agento11y_manage_eval_collectionsAgent 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:readannotations:* या annotations:id:123
create_annotationएनोटेशनएक नया एनोटेशन बनाएं (मानक या Graphite प्रारूप)annotations:writeannotations:*
update_annotationएनोटेशनएनोटेशन के विशिष्ट फ़ील्ड अपडेट करें (आंशिक अपडेट)annotations:writeannotations:*
delete_annotationएनोटेशनआईडी द्वारा एनोटेशन हटाएंannotations:deleteannotations:*
get_annotation_tagsएनोटेशनवैकल्पिक फ़िल्टरिंग के साथ एनोटेशन टैग सूचीबद्ध करेंannotations:readannotations:*
list_snapshotsस्नैपशॉटवैकल्पिक क्वेरी और सीमा फ़िल्टर के साथ डैशबोर्ड स्नैपशॉट सूचीबद्ध करेंdashboards:readdashboards:* या dashboards:uid:abc123
get_snapshotस्नैपशॉटस्नैपशॉट कुंजी द्वारा स्नैपशॉट मेटाडेटा और डैशबोर्ड पेलोड प्राप्त करेंdashboards:readdashboards:* या dashboards:uid:abc123
create_snapshotस्नैपशॉटपूर्ण डैशबोर्ड पेलोड से डैशबोर्ड स्नैपशॉट बनाएंdashboards:writedashboards:* या dashboards:uid:abc123
delete_snapshotस्नैपशॉटस्नैपशॉट कुंजी द्वारा डैशबोर्ड स्नैपशॉट हटाएंdashboards:writedashboards:* या dashboards:uid:abc123
get_panel_imageरेंडरिंगसंग्रहीत डैशबोर्ड या पैनल — या रिपॉजिटरी शाखा से प्रोविज़निंग पूर्वावलोकन — को PNG छवि के रूप में रेंडर करेंdashboards:readdashboards:uid:abc123
list_provisioning_repositoriesप्रोविज़निंगप्रोविज़निंग रिपॉजिटरी सूचीबद्ध करें (जैसे git-sync स्रोत) उनके स्रोत URL, शाखा, सिंक स्थिति, और स्वास्थ्य के साथprovisioning.repositories:readN/A
validate_provisioning_fileप्रोविज़निंगप्रोविज़निंग रिपॉजिटरी से एक फ़ाइल ड्राई-रन-लागू करें और प्रवेश सत्यापन त्रुटियों की रिपोर्ट करेंprovisioning.repositories:readN/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 हैंडशेक और OTel service.name में उपयोग किया जाने वाला सर्वर नाम - डिफ़ॉल्ट: mcp-grafana। GRAFANA_MCP_SERVER_NAME env 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 सत्यापित करता है। K8s httpGet प्रोब और बाहरी /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_STATS env 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_incident
  • add_activity_to_incident
  • update_incident

अलर्टिंग उपकरण:

  • alerting_manage_rules (बनाएं, अद्यतन, हटाएं संचालन)
  • alerting_manage_silences (बनाएं, अद्यतन, हटाएं संचालन)

OnCall उपकरण:

  • update_alert_group

एनोटेशन उपकरण:

  • create_annotation
  • update_annotation
  • delete_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_snapshot
  • delete_snapshot

कच्चे-SQL क्वेरी उपकरण:

ये आपके द्वारा दी गई किसी भी क्वेरी को बिना निरीक्षण किए निष्पादित करते हैं, इसलिए वे लिख सकते हैं जब डेटासोर्स क्रेडेंशियल इसकी अनुमति देते हैं — query_sql एक DROP TABLE चलाएगा, query_influxdb एक DELETE चलाएगा। इसलिए केवल-पठन मोड उन्हें हटा देता है। उन्हें रखने के लिए --enable-query पास करें जब डेटासोर्स क्रेडेंशियल ज्ञात रूप से केवल-पठन हों।

  • query_sql
  • query_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_prometheus
  • query_prometheus_histogram

Loki उपकरण:

  • query_loki_logs
  • query_loki_patterns

query_loki_stats और analyze_loki_labels पंजीकृत रहते हैं: दोनों डेटासोर्स पर एक सेलेक्टर भेजते हैं, लेकिन वे इंडेक्स पढ़ते हैं और लॉग सामग्री के बजाय स्ट्रीम, चंक और बाइट गिनती लौटाते हैं।

Elasticsearch/OpenSearch और Quickwit उपकरण:

  • query_elasticsearch
  • query_quickwit

InfluxDB उपकरण (--disable-write द्वारा भी हटाए गए, ऊपर देखें):

  • query_influxdb

SQL डेटासोर्स उपकरण (--disable-write द्वारा भी हटाए गए, ऊपर देखें):

  • query_sql

Graphite उपकरण:

  • query_graphite
  • query_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) उपयोग करें।

  1. यदि सेवा खाता टोकन प्रमाणीकरण का उपयोग कर रहे हैं, तो 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 देखें।

  1. mcp-grafana स्थापित करने के लिए आपके पास कई विकल्प हैं:

    • uvx (अनुशंसित): यदि आपके पास uv स्थापित है, तो कोई अतिरिक्त सेटअप आवश्यक नहीं है — uvx स्वचालित रूप से सर्वर को डाउनलोड और चलाएगा:

      uvx mcp-grafana
      
    • Docker छवि: Docker Hub से पूर्व-निर्मित Docker छवि का उपयोग करें।

      महत्वपूर्ण: Docker छवि का एंट्रीपॉइंट डिफ़ॉल्ट रूप से SSE मोड में MCP सर्वर चलाने के लिए कॉन्फ़िगर किया गया है, लेकिन अधिकांश उपयोगकर्ता Claude Desktop जैसे AI सहायकों के साथ सीधे एकीकरण के लिए STDIO मोड का उपयोग करना चाहेंगे:

      1. 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 मोड अप्रभावित है। कॉलर प्रमाणीकरण देखें।

      1. 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
      
      1. स्ट्रीमेबल 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
      
    • बाइनरी डाउनलोड करें: रिलीज़ पृष्ठ से 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
      
  2. सर्वर कॉन्फ़िगरेशन को अपनी क्लाइंट कॉन्फ़िगरेशन फ़ाइल में जोड़ें। उदाहरण के लिए, 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.methodMCP विधि (जैसे, 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_request Loki डेटासोर्स प्रॉक्सी को सीधे क्वेरी कर सकता है (पूर्ण बायपास)।
  • --disable-rendering — get_panel_image Loki पैनल सर्वर-साइड रेंडर करता है, अप्रतिबंधित लॉग लाइनों के साथ छवियाँ उत्पन्न करता है।
  • --disable-sift — Sift जाँच सभी स्ट्रीम में Loki लॉग का सर्वर-साइड विश्लेषण करती हैं।
  • --disable-assistant — ask_assistant Grafana 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

परीक्षण

तीन प्रकार के परीक्षण उपलब्ध हैं:

  1. यूनिट परीक्षण (कोई बाहरी निर्भरता आवश्यक नहीं):
make test-unit

आप यूनिट परीक्षण भी चला सकते हैं:

make test
  1. एकीकरण परीक्षण (docker कंटेनर चालू होने की आवश्यकता है):
make test-integration
  1. क्लाउड परीक्षण (क्लाउड 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 के तहत लाइसेंस प्राप्त है।