Grafana

आधिकारिक

अपने Grafana इंस्टेंस में डैशबोर्ड खोजें, घटनाओं की जांच करें और डेटास्रोतों से क्वेरी करें।

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

  • डैशबोर्ड खोजें और निरीक्षण करेंsearch_dashboards और get_dashboard_summary का उपयोग करके डैशबोर्ड खोजें और बिना पूर्ण JSON के संक्षिप्त अवलोकन प्राप्त करें।
  • Prometheus और Loki से क्वेरी करें — अपने डेटासोर्स पर PromQL और LogQL क्वेरी चलाएँ, जिसमें मेटाडेटा और हिस्टोग्राम पर्सेंटाइल शामिल हैं।
  • अलर्टिंग प्रबंधित करें — अलर्ट नियम सूचीबद्ध करें, बनाएँ, अपडेट करें और हटाएँ, साथ ही सूचना नीतियाँ और संपर्क बिंदु देखें।
  • डीपलिंक उत्पन्न करें — नेविगेशन टूल के माध्यम से समय सीमा के साथ डैशबोर्ड, पैनल और Explore के लिए सटीक URL बनाएँ।
  • पैनल क्वेरी चलाएँrun_panel_query का उपयोग करके कस्टम समय सीमा और चर के साथ डैशबोर्ड पैनल की क्वेरी निष्पादित करें।

दस्तावेज़

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 द्वारा डैशबोर्ड प्राप्त करें: अपने अद्वितीय पहचानकर्ता का उपयोग करके पूर्ण डैशबोर्ड विवरण प्राप्त करें। चेतावनी: बड़े डैशबोर्ड महत्वपूर्ण संदर्भ विंडो स्थान का उपभोग कर सकते हैं।
  • डैशबोर्ड सारांश प्राप्त करें: डैशबोर्ड का एक संक्षिप्त अवलोकन प्राप्त करें जिसमें शीर्षक, पैनल गणना, पैनल प्रकार, चर और मेटाडेटा शामिल हों, बिना पूर्ण 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 पैरामीटर के माध्यम से स्पष्ट रूप से सेट किया जा सकता है।

ClickHouse क्वेरी

नोट: ClickHouse टूल डिफ़ॉल्ट रूप से अक्षम हैं। इन्हें सक्षम करने के लिए, अपने --enabled-tools फ़्लैग में clickhouse जोड़ें।

  • ClickHouse तालिकाएँ सूचीबद्ध करें: पंक्ति गणना और आकार के साथ ClickHouse डेटाबेस की सभी तालिकाएँ सूचीबद्ध करें।
  • तालिका स्कीमा का वर्णन करें: ClickHouse तालिका के लिए कॉलम नाम, प्रकार और मेटाडेटा प्राप्त करें।
  • ClickHouse क्वेरी करें: Grafana मैक्रो और चर प्रतिस्थापन समर्थन के साथ SQL क्वेरी निष्पादित करें।

CloudWatch क्वेरी

नोट: CloudWatch टूल डिफ़ॉल्ट रूप से अक्षम हैं। इन्हें सक्षम करने के लिए, अपने --enabled-tools फ़्लैग में cloudwatch जोड़ें।

  • CloudWatch नेमस्पेस सूचीबद्ध करें: उपलब्ध AWS CloudWatch नेमस्पेस खोजें।
  • CloudWatch मेट्रिक्स सूचीबद्ध करें: किसी विशिष्ट नेमस्पेस में उपलब्ध मेट्रिक्स सूचीबद्ध करें।
  • CloudWatch डाइमेंशन सूचीबद्ध करें: मेट्रिक क्वेरी फ़िल्टर करने के लिए डाइमेंशन प्राप्त करें।
  • CloudWatch क्वेरी करें: समय सीमा समर्थन के साथ CloudWatch मेट्रिक क्वेरी निष्पादित करें।

Graphite क्वेरी

नोट: Graphite टूल डिफ़ॉल्ट रूप से अक्षम हैं। इन्हें सक्षम करने के लिए, अपने --enabled-tools फ़्लैग में graphite जोड़ें।

  • Graphite क्वेरी करें: Graphite डेटासोर्स के विरुद्ध Graphite render API क्वेरी निष्पादित करें।
  • Graphite मेट्रिक्स सूचीबद्ध करें: Graphite मेट्रिक पथ ब्राउज़ करें और खोजें।
  • Graphite टैग सूचीबद्ध करें: उपलब्ध Graphite टैग और टैग मान सूचीबद्ध करें।
  • Graphite घनत्व क्वेरी करें: किसी दिए गए पैटर्न के लिए Graphite मेट्रिक घनत्व क्वेरी करें।

Athena क्वेरी

नोट: Athena टूल डिफ़ॉल्ट रूप से अक्षम हैं। इन्हें सक्षम करने के लिए, अपने --enabled-tools फ़्लैग में athena जोड़ें।

  • Athena कैटलॉग सूचीबद्ध करें: उपलब्ध डेटा कैटलॉग खोजें (जैसे AwsDataCatalog, Iceberg कनेक्टर)।
  • Athena डेटाबेस सूचीबद्ध करें: Athena कैटलॉग में डेटाबेस सूचीबद्ध करें।
  • Athena तालिकाएँ सूचीबद्ध करें: Athena डेटाबेस में तालिकाएँ सूचीबद्ध करें।
  • Athena तालिका का वर्णन करें: Athena तालिका के लिए कॉलम नाम प्राप्त करें।
  • Athena क्वेरी करें: मैक्रो प्रतिस्थापन, सीमा प्रवर्तन और टेम्पलेट चर समर्थन के साथ Grafana के माध्यम से Amazon Athena के विरुद्ध SQL क्वेरी निष्पादित करें।

Snowflake क्वेरी

नोट: Snowflake टूल डिफ़ॉल्ट रूप से अक्षम हैं। इन्हें सक्षम करने के लिए, अपने --enabled-tools फ़्लैग में snowflake जोड़ें।

क्वेरीज़ Grafana के Snowflake डेटासोर्स (Grafana Enterprise प्लगइन grafana-snowflake-datasource) से होकर जाती हैं, इसलिए प्रमाणीकरण Grafana में डेटासोर्स कॉन्फ़िगरेशन द्वारा संभाला जाता है — क्रेडेंशियल MCP सर्वर द्वारा कभी नहीं देखे जाते। यह ClickHouse टूल के लिए उपयोग किया जाने वाला वही मॉडल है।

  • Snowflake तालिकाएँ सूचीबद्ध करें: INFORMATION_SCHEMA.TABLES के माध्यम से तालिकाएँ खोजें (डेटाबेस, स्कीमा, प्रकार, पंक्ति गणना और आकार के साथ)। वैकल्पिक डेटाबेस/स्कीमा फ़िल्टर।
  • तालिका स्कीमा का वर्णन करें: Snowflake तालिका के लिए कॉलम नाम, डेटा प्रकार, शून्यता, डिफ़ॉल्ट और टिप्पणियाँ प्राप्त करें।
  • Snowflake क्वेरी करें: मैक्रो और चर प्रतिस्थापन समर्थन के साथ SQL क्वेरी निष्पादित करें। लॉग और ट्रेस के लिए Snowflake की इवेंट तालिकाओं (जैसे SNOWFLAKE.TELEMETRY.EVENTS) या किसी भी उपयोगकर्ता तालिका को क्वेरी करने के लिए उपयोगी।
    • समर्थित मैक्रो: $__timeFilter(column), $__timeFrom, $__timeTo, $__from, $__to (Unix ms), $__interval (सेकंड), $__interval_ms, और टेम्पलेट चर प्रतिस्थापन के लिए ${varname}

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 परिणाम और अधिक) के साथ खोजें। खोज परिणामों में त्रुटि गणना, रेटिंग सारांश, मूल्यांकन सारांश और ट्रेस ID शामिल हैं।
  • वार्तालाप विवरण प्राप्त करें: प्रॉम्प्ट और आउटपुट सहित सभी जनरेशन के साथ एक एकल वार्तालाप प्राप्त करें।
  • जनरेशन विवरण और स्कोर प्राप्त करें: ID द्वारा एक एकल जनरेशन और उसके मूल्यांकन स्कोर (मूल्यांकक, स्कोर कुंजी, मान, पास, स्पष्टीकरण) प्राप्त करें।
  • एजेंट कैटलॉग पढ़ें: टेलीमेट्री भेजने वाले एजेंटों को सूचीबद्ध करें, एक एजेंट संस्करण को पूर्ण रूप से प्राप्त करें (पूर्ण सिस्टम प्रॉम्प्ट, अपने JSON स्कीमा के साथ हर टूल, और जिन मॉडलों पर यह चला), एजेंट के संस्करण इतिहास को देखें, और प्रति संस्करण मूल्यांकन स्कोर समुच्चय की तुलना करें। प्रभावी संस्करण sha256: हैश हैं जिन्हें टूल परिवर्तन कभी प्रभावित नहीं करता; एक एजेंट के लिए जो अपना कोई संस्करण रिपोर्ट नहीं करता, वे सिस्टम प्रॉम्प्ट को हैश करते हैं, इसलिए प्रॉम्प्ट संपादन एक नया संस्करण बनाता है। कैटलॉग और संस्करण पंक्तियों में एक token_estimate होता है, जिसे पूर्ण प्रॉम्प्ट प्राप्त करने से पहले जाँचना उचित है।
  • मूल्यांकक और टेम्पलेट निरीक्षण करें: वे मूल्यांकक पढ़ें जिनसे स्कोर आया, वे टेम्पलेट जिनसे वे व्युत्पन्न हुए, और LLM-जज मूल्यांककों के लिए उपलब्ध जज प्रदाता और मॉडल। राइट टूल सक्षम होने पर, मूल्यांकक बनाएं, फ़ोर्क करें, परीक्षण करें और हटाएं भी।
  • Eval नियम और गार्ड निरीक्षण करें: अतुल्यकालिक eval नियम पढ़ें जो मूल्यांककों को उत्पादन ट्रैफ़िक से बांधते हैं, और गार्ड (हुक नियम) जो इनलाइन चलते हैं और चेतावनी या अस्वीकार कर सकते हैं। राइट टूल सक्षम होने पर, इन्हें बनाएं, अपडेट करें, पूर्वावलोकन करें और हटाएं भी। लेखन और गैर-स्थायी preview_rule और test_evaluator संचालन के लिए grafana-agento11y-app.eval:write अनुमति की आवश्यकता होती है, जो Agento11y Admin भूमिका द्वारा प्रदान की जाती है।
  • सहेजे गए वार्तालाप और संग्रह क्यूरेट करें: सहेजे गए वार्तालाप (बुकमार्क जो वार्तालाप को एक स्थिर ID, नाम और टैग देते हैं) और उन्हें समूहित करने वाले संग्रह पढ़ें, जिसमें प्रत्येक संग्रह की सदस्य गणना और हर सहेजे गए वार्तालाप पंक्ति में एम्बेडेड संग्रह शामिल हैं। राइट टूल सक्षम होने पर, वार्तालाप को बुकमार्क करें, संग्रह बनाएं और संपादित करें, और सदस्य जोड़ें या हटाएं भी। इन लेखनों के लिए समान grafana-agento11y-app.eval:write अनुमति की आवश्यकता होती है।
  • परीक्षण सूट पढ़ें और संपादित करें: संस्करणित परीक्षण सूट सूचीबद्ध करें जिनके विरुद्ध ऑफ़लाइन प्रयोग चलते हैं, एक को उसके पूर्ण संस्करण इतिहास के साथ पढ़ें, और एक संस्करण के परीक्षण मामलों के माध्यम से पृष्ठांकित करें। राइट टूल सक्षम होने पर, एक सूट बनाएं, उसका नाम बदलें या पुनः टैग करें, एक ड्राफ्ट संस्करण खोलें, उसे प्रकाशित करें, और उसके परीक्षण मामले लिखें या हटाएं। एक प्रकाशित संस्करण जमे हुए होता है, इसलिए संपादन का अर्थ है एक नया ड्राफ्ट खोलना। इन लेखनों के लिए grafana-agento11y-app.eval:write की आवश्यकता होती है।
  • ऑफ़लाइन प्रयोग पढ़ें: परीक्षण सूट पर मूल्यांकन रन सूचीबद्ध करें और एक को उसकी मुख्य पास दर, लागत और टोकन कुल के साथ पढ़ें। प्रति-परीक्षण-मामला रिपोर्ट के माध्यम से परीक्षणों तक ड्रिल डाउन करें, प्रत्येक जज के स्पष्टीकरण के साथ उनके स्कोर, और उनके आर्टिफैक्ट मेटाडेटा। राइट टूल सक्षम होने पर, एक प्रयोग का नाम बदलें या पुनः टैग करें और चल रहे एक को रद्द करें, जिसके लिए grafana-agento11y-app.eval:write की आवश्यकता होती है। प्रयोग SDK रनर द्वारा बनाए जाते हैं, इस टूल द्वारा नहीं।

Grafana Assistant

नोट: असिस्टेंट टूल डिफ़ॉल्ट रूप से अक्षम होते हैं और लक्ष्य Grafana इंस्टेंस पर Grafana Assistant प्लगइन (grafana-assistant-app) इंस्टॉल होना आवश्यक है। वे राइट टूल भी हैं (असिस्टेंट स्टैक स्थिति को बदल सकता है), इसलिए जब --disable-write सेट होता है तो उन्हें छोड़ दिया जाता है। उन्हें सक्षम करने के लिए, अपने --enabled-tools फ़्लैग में assistant जोड़ें।

  • असिस्टेंट से पूछें: Grafana Assistant को प्राकृतिक-भाषा प्रॉम्प्ट भेजें और पूर्ण टेक्स्ट उत्तर की प्रतीक्षा करें। असिस्टेंट टूल, मेट्रिक्स, लॉग्स और अन्य स्टैक संदर्भ का उपयोग कर सकता है—एक पृथक डेटा-स्रोत क्वेरी चलाने से कहीं अधिक व्यापक। उसी वार्तालाप को जारी रखने के लिए लौटाए गए contextId को अनुवर्ती कॉल में वापस भेजें। जटिल कार्यों में कई मिनट लग सकते हैं; कॉल तब तक ब्लॉक रहता है जब तक उत्तर पूरा नहीं हो जाता या अनुरोध टाइमआउट (5 मिनट) नहीं हो जाता।

Incidents

  • इंसिडेंट खोजें, बनाएं और अपडेट करें: Grafana Incident में इंसिडेंट प्रबंधित करें, जिसमें खोज, निर्माण और इंसिडेंट में गतिविधियाँ जोड़ना शामिल है।

Sift Investigations

  • Sift जाँच सूचीबद्ध करें: सीमा पैरामीटर के समर्थन के साथ Sift जाँचों की सूची प्राप्त करें।
  • Sift जाँच प्राप्त करें: किसी विशिष्ट Sift जाँच का विवरण उसके UUID द्वारा प्राप्त करें।
  • Sift विश्लेषण प्राप्त करें: किसी Sift जाँच से विशिष्ट विश्लेषण प्राप्त करें।
  • लॉग्स में त्रुटि पैटर्न खोजें: Sift का उपयोग करके Loki लॉग्स में बढ़े हुए त्रुटि पैटर्न का पता लगाएं।
  • धीमे अनुरोध खोजें: Sift (Tempo) का उपयोग करके धीमे अनुरोधों का पता लगाएं।

Alerting

  • अलर्ट नियम जानकारी सूचीबद्ध करें और प्राप्त करें: Grafana में अलर्ट नियम और उनकी स्थितियाँ (firing/normal/error/etc.) देखें। Prometheus या Loki डेटास्रोतों से Grafana-प्रबंधित नियमों और डेटास्रोत-प्रबंधित नियमों दोनों का समर्थन करता है।
  • अलर्ट नियम बनाएं और अपडेट करें: नए अलर्ट नियम बनाएं या मौजूदा नियमों को संशोधित करें।
  • अलर्ट नियम हटाएं: अलर्ट नियमों को UID द्वारा हटाएं।
  • अलर्टिंग रूटिंग प्रबंधित करें: नोटिफिकेशन नीतियाँ, संपर्क बिंदु और समय अंतराल देखें। बाहरी Alertmanager डेटास्रोतों (Prometheus Alertmanager, Mimir, Cortex) से Grafana-प्रबंधित संपर्क बिंदुओं और रिसीवर्स दोनों का समर्थन करता है।

Grafana OnCall

  • शेड्यूल सूचीबद्ध करें और प्रबंधित करें: Grafana OnCall में ऑन-कॉल शेड्यूल देखें और प्रबंधित करें।
  • शिफ्ट विवरण प्राप्त करें: विशिष्ट ऑन-कॉल शिफ्टों के बारे में विस्तृत जानकारी प्राप्त करें।
  • वर्तमान ऑन-कॉल उपयोगकर्ता प्राप्त करें: देखें कि किसी शेड्यूल के लिए वर्तमान में कौन से उपयोगकर्ता ऑन-कॉल हैं।
  • टीमें और उपयोगकर्ता सूचीबद्ध करें: सभी OnCall टीमें और उपयोगकर्ता देखें।
  • अलर्ट समूह सूचीबद्ध करें: स्थिति, एकीकरण, लेबल और समय सीमा सहित विभिन्न मानदंडों द्वारा Grafana OnCall से अलर्ट समूह देखें और फ़िल्टर करें।
  • अलर्ट समूह विवरण प्राप्त करें: उसके ID द्वारा किसी विशिष्ट अलर्ट समूह के बारे में विस्तृत जानकारी प्राप्त करें।

Admin

नोट: एडमिन टूल डिफ़ॉल्ट रूप से अक्षम होते हैं। उन्हें सक्षम करने के लिए, अपने --enabled-tools फ़्लैग में admin शामिल करें।

  • टीमें सूचीबद्ध करें: Grafana में सभी कॉन्फ़िगर की गई टीमें देखें।
  • उपयोगकर्ता सूचीबद्ध करें: Grafana में किसी संगठन के सभी उपयोगकर्ता देखें।
  • सभी भूमिकाएँ सूचीबद्ध करें: सभी Grafana भूमिकाएँ सूचीबद्ध करें, जिसमें प्रत्यायोजित (delegatable) भूमिकाओं के लिए वैकल्पिक फ़िल्टर हो।
  • भूमिका विवरण प्राप्त करें: UID द्वारा किसी विशिष्ट Grafana भूमिका का विवरण प्राप्त करें।
  • किसी भूमिका के लिए असाइनमेंट सूचीबद्ध करें: किसी भूमिका को सौंपे गए सभी उपयोगकर्ता, टीमें और सेवा खाते सूचीबद्ध करें।
  • उपयोगकर्ताओं के लिए भूमिकाएँ सूचीबद्ध करें: एक या अधिक उपयोगकर्ताओं को सौंपी गई सभी भूमिकाएँ सूचीबद्ध करें।
  • टीमों के लिए भूमिकाएँ सूचीबद्ध करें: एक या अधिक टीमों को सौंपी गई सभी भूमिकाएँ सूचीबद्ध करें।
  • किसी संसाधन के लिए अनुमतियाँ सूचीबद्ध करें: किसी विशिष्ट संसाधन (डैशबोर्ड, डेटास्रोत, फ़ोल्डर, आदि) के लिए परिभाषित सभी अनुमतियाँ सूचीबद्ध करें।
  • Grafana संसाधन का वर्णन करें: किसी संसाधन प्रकार के लिए उपलब्ध अनुमतियाँ और असाइनमेंट क्षमताएँ सूचीबद्ध करें।

Navigation

  • डीपलिंक उत्पन्न करें: LLM URL अनुमान लगाने पर निर्भर रहने के बजाय Grafana संसाधनों के लिए सटीक डीपलिंक URL बनाएं।
    • डैशबोर्ड लिंक: उनके UID का उपयोग करके डैशबोर्ड के लिए सीधे लिंक उत्पन्न करें (जैसे, http://localhost:3000/d/dashboard-uid)
    • पैनल लिंक: viewPanel पैरामीटर के साथ डैशबोर्ड के भीतर विशिष्ट पैनलों के लिंक बनाएं (जैसे, http://localhost:3000/d/dashboard-uid?viewPanel=5)
    • Explore लिंक: पूर्व-कॉन्फ़िगर डेटास्रोतों के साथ Grafana Explore के लिंक उत्पन्न करें (जैसे, http://localhost:3000/explore?left={"datasource":"prometheus-uid"})
    • समय सीमा समर्थन: लिंक में समय सीमा पैरामीटर जोड़ें (from=now-1h&to=now)
    • कस्टम पैरामीटर: डैशबोर्ड वेरिएबल या रीफ़्रेश अंतराल जैसे अतिरिक्त क्वेरी पैरामीटर शामिल करें

Annotations

  • एनोटेशन प्राप्त करें: फ़िल्टर के साथ एनोटेशन क्वेरी करें। समय सीमा, डैशबोर्ड UID, टैग और मैच मोड का समर्थन करता है।
  • एनोटेशन बनाएं: डैशबोर्ड या पैनल पर एक नया एनोटेशन बनाएं।
  • Graphite एनोटेशन बनाएं: Graphite प्रारूप (what, when, tags, data) का उपयोग करके एनोटेशन बनाएं।
  • एनोटेशन अपडेट करें: किसी मौजूदा एनोटेशन के सभी फ़ील्ड बदलें (पूर्ण अपडेट)।
  • एनोटेशन पैच करें: किसी एनोटेशन के केवल विशिष्ट फ़ील्ड अपडेट करें (आंशिक अपडेट)।
  • एनोटेशन टैग प्राप्त करें: वैकल्पिक फ़िल्टरिंग के साथ उपलब्ध एनोटेशन टैग सूचीबद्ध करें।

Snapshots

  • स्नैपशॉट सूचीबद्ध करें: वैकल्पिक क्वेरी और सीमा फ़िल्टर के साथ डैशबोर्ड स्नैपशॉट सूचीबद्ध करें।
  • स्नैपशॉट प्राप्त करें: स्नैपशॉट कुंजी द्वारा स्नैपशॉट मेटाडेटा और डैशबोर्ड पेलोड प्राप्त करें।
  • स्नैपशॉट बनाएं: पूर्ण डैशबोर्ड पेलोड से एक डैशबोर्ड स्नैपशॉट बनाएं, जिसमें वैकल्पिक समाप्ति और बाहरी स्नैपशॉट विकल्प हों।
  • स्नैपशॉट हटाएं: स्नैपशॉट कुंजी द्वारा एक स्नैपशॉट हटाएं।

Rendering

  • पैनल या डैशबोर्ड छवि प्राप्त करें: Grafana डैशबोर्ड पैनल या पूर्ण डैशबोर्ड को PNG छवि के रूप में रेंडर करें। रिपोर्ट, अलर्ट या प्रस्तुतियों में उपयोग के लिए छवि को base64 एन्कोडेड डेटा के रूप में लौटाता है। आयाम, समय सीमा, थीम, स्केल और डैशबोर्ड वेरिएबल को अनुकूलित करने का समर्थन करता है। वैकल्पिक provisioningPreview पैरामीटर के माध्यम से प्रोविज़निंग रिपॉजिटरी ब्रांच (जैसे git-sync PR पूर्वावलोकन) से अभी-अभी लागू न किए गए डैशबोर्ड को रेंडर करने का भी समर्थन करता है।
    • नोट: Grafana Image Renderer सेवा को इंस्टॉल और कॉन्फ़िगर करना आवश्यक है।

Provisioning

  • प्रोविज़निंग रिपॉजिटरी सूचीबद्ध करें: इस Grafana इंस्टेंस के लिए कॉन्फ़िगर की गई प्रोविज़निंग रिपॉजिटरी (जैसे git-sync स्रोत) सूचीबद्ध करें, प्रत्येक रिपॉजिटरी का slug उसके स्रोत URL, ब्रांच, पथ, सिंक स्थिति और स्वास्थ्य के साथ लौटाएं।
  • प्रोविज़निंग फ़ाइल सत्यापित करें: किसी दिए गए ब्रांच या कमिट पर प्रोविज़निंग रिपॉजिटरी से फ़ाइल का ड्राई-रन आवेदन करें। यह लौटाता है कि क्या इसे स्वीकार किया जाएगा, संसाधन क्रिया (create/update), लक्ष्य संसाधन प्रकार, और कोई भी संरचित सत्यापन त्रुटियाँ — वही प्रवेश सतह जो 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 भूमिका: केवल-पढ़ने के संचालन के लिए आवश्यक (इंसिडेंट सूचीबद्ध करें, जाँच प्राप्त करें)
  • Editor भूमिका: लेखन संचालन के लिए आवश्यक (इंसिडेंट बनाएं, जाँच संशोधित करें)

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)
    

Tools

उपकरणश्रेणीविवरणआवश्यक 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:*
search_dashboardsखोजडैशबोर्ड खोजेंdashboards:readdashboards:* या dashboards:uid:abc123
get_dashboard_by_uidडैशबोर्डuid द्वारा डैशबोर्ड प्राप्त करें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_examplesExamples*किसी डेटासोर्स प्रकार के लिए उदाहरण क्वेरी प्राप्त करें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 Incident में घटनाओं की सूची बनाएंदर्शक भूमिकाN/A
create_incidentघटनाGrafana Incident में घटना बनाएंसंपादक भूमिकाN/A
add_activity_to_incidentघटनाGrafana Incident में किसी घटना में गतिविधि आइटम जोड़ेंसंपादक भूमिकाN/A
get_incidentघटनाID द्वारा एकल घटना प्राप्त करेंदर्शक भूमिका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_clickhouse_tablesClickHouse*ClickHouse डेटाबेस में तालिकाओं की सूची बनाएंdatasources:querydatasources:uid:*
describe_clickhouse_tableClickHouse*कॉलम प्रकारों के साथ तालिका स्कीमा प्राप्त करेंdatasources:querydatasources:uid:*
query_clickhouseClickHouse*मैक्रो प्रतिस्थापन के साथ SQL क्वेरी निष्पादित करेंdatasources:querydatasources:uid:*
list_cloudwatch_namespacesCloudWatch*उपलब्ध AWS CloudWatch नेमस्पेस की सूची बनाएंdatasources:querydatasources:uid:*
list_cloudwatch_metricsCloudWatch*किसी नेमस्पेस में मेट्रिक्स सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_cloudwatch_dimensionsCloudWatch*किसी मेट्रिक के लिए डाइमेंशन सूचीबद्ध करेंdatasources:querydatasources:uid:*
query_cloudwatchCloudWatch*CloudWatch मेट्रिक क्वेरी निष्पादित करेंdatasources:querydatasources:uid:*
list_athena_catalogsAthena*उपलब्ध Athena डेटा कैटलॉग सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_athena_databasesAthena*Athena कैटलॉग में डेटाबेस सूचीबद्ध करेंdatasources:querydatasources:uid:*
list_athena_tablesAthena*Athena डेटाबेस में टेबल सूचीबद्ध करेंdatasources:querydatasources:uid:*
describe_athena_tableAthena*Athena टेबल के लिए कॉलम नाम प्राप्त करेंdatasources:querydatasources:uid:*
query_athenaAthena*मैक्रो प्रतिस्थापन के साथ SQL क्वेरी निष्पादित करें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
list_snowflake_tablesSnowflake*INFORMATION_SCHEMA के माध्यम से Snowflake डेटाबेस/स्कीमा में टेबल सूचीबद्ध करेंdatasources:querydatasources:uid:*
describe_snowflake_tableSnowflake*टेबल स्कीमा प्राप्त करें (कॉलम प्रकार, नलक्षमता, डिफ़ॉल्ट, टिप्पणियाँ)datasources:querydatasources:uid:*
query_snowflakeSnowflake*मैक्रो/वेरिएबल प्रतिस्थापन के साथ SQL क्वेरी निष्पादित करेंdatasources:querydatasources:uid:*
alerting_manage_rulesAlertingअलर्ट नियम प्रबंधित करें (सूची, प्राप्त करें, संस्करण, बनाएं, अपडेट करें, हटाएं)alert.rules:read + alert.rules:write म्यूटेशन के लिएfolders:* या folders:uid:alerts-folder
alerting_manage_routingAlertingअधिसूचना नीतियां, संपर्क बिंदु और समय अंतराल प्रबंधित करेंalert.notifications:readवैश्विक दायरा
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_groupOnCallGrafana OnCall से उसके ID द्वारा एक विशिष्ट अलर्ट समूह प्राप्त करेंgrafana-oncall-app.alert-groups:readप्लगइन-विशिष्ट दायरे
get_sift_investigationSiftकिसी मौजूदा Sift जांच को उसके UUID द्वारा प्राप्त करेंदर्शक भूमिका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किसी दिए गए इकाई के लिए assertion सारांश प्राप्त करेंप्लगइन-विशिष्ट अनुमतियाँप्लगइन-विशिष्ट दायरे
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_experimentsAgent Observability*ऑफ़लाइन प्रयोग, उनके परीक्षण, स्कोर, आर्टिफैक्ट मेटाडेटा और फ़िल्टर फ़ैसेट पढ़ें; प्रयोग अपडेट और रद्द करेंgrafana-agento11y-app.data:read + grafana-agento11y-app.eval:write म्यूटेशन के लिएN/A
agento11y_manage_test_suitesAgent Observability*उन टेस्ट सूट प्रबंधित करें जिनके विरुद्ध ऑफ़लाइन प्रयोग चलते हैं, उनके संस्करण और उनके टेस्ट केस (सूची, प्राप्त करें, बनाएं, अपडेट करें, ड्राफ्ट, प्रकाशित करें, अपसेर्ट, हटाएं)grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write म्यूटेशन के लिएN/A
ask_assistantAssistant*Grafana Assistant को प्रॉम्प्ट भेजें और पूर्ण टेक्स्ट उत्तर लौटाएं (contextId के माध्यम से मल्टी-टर्न)प्लगइन-विशिष्ट अनुमतियाँप्लगइन-विशिष्ट दायरे
generate_deeplinkNavigationGrafana संसाधनों के लिए सटीक डीपलिंक URL उत्पन्न करेंकोई नहीं (केवल-पढ़ने के लिए URL जनरेशन)N/A
get_annotationsAnnotationsफ़िल्टर के साथ एनोटेशन प्राप्त करेंannotations:readannotations:* या annotations:id:123
create_annotationएनोटेशनएक नया एनोटेशन बनाएँ (मानक या Graphite प्रारूप)annotations:writeannotations:*
update_annotationएनोटेशनएनोटेशन के विशिष्ट फ़ील्ड अपडेट करें (आंशिक अपडेट)annotations:writeannotations:*
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
* डिफ़ॉल्ट रूप से अक्षम। सक्षम करने के लिए --enabled-tools में श्रेणी जोड़ें।

CLI फ़्लैग संदर्भ

mcp-grafana बाइनरी कॉन्फ़िगरेशन के लिए विभिन्न कमांड-लाइन फ़्लैग का समर्थन करती है:

परिवहन विकल्प:

  • -t, --transport: परिवहन प्रकार (stdio, sse, या streamable-http) - डिफ़ॉल्ट: stdio
  • --address: SSE/streamable-http सर्वर के लिए होस्ट और पोर्ट - डिफ़ॉल्ट: localhost:8000
  • --base-path: SSE/streamable-http सर्वर के लिए बेस पाथ
  • --endpoint-path: streamable-http सर्वर के लिए एंडपॉइंट पथ - डिफ़ॉल्ट: /mcp
  • --server-name: MCP हैंडशेक और OTel service.name में उपयोग किया जाने वाला सर्वर नाम - डिफ़ॉल्ट: mcp-grafanaGRAFANA_MCP_SERVER_NAME env वेरिएबल को ओवरराइड करता है

HTTP परिवहन सुरक्षा (केवल SSE / streamable-http):

Host/Origin सत्यापन लिसनर पर हर रूट पर लागू किया जाता है — /sse, /mcp, /healthz, और /metrics — इसलिए DNS-rebinding ब्राउज़र उनमें से किसी तक नहीं पहुँच सकता। Stdio परिवहन अप्रभावित रहता है।

  • --allowed-hosts: Host हेडर मानों की अल्पविराम-पृथक अनुमति-सूची। डिफ़ॉल्ट रूप से --address के लूपबैक वेरिएंट (जैसे localhost:8000,127.0.0.1:8000,[::1]:8000) होते हैं। वह मान जो खाली पार्स होता है (अनसेट, ,, ,, आदि) भी डिफ़ॉल्ट पर वापस आ जाता है ताकि टाइपो चुपचाप जाँच को अक्षम न कर सके। अनुमति-सूची से बाहर Host हेडर वाले अनुरोधों को 403 के साथ अस्वीकार कर दिया जाता है। जाँच अक्षम करने के लिए * पास करें — यह केवल तभी सुरक्षित है जब आप किसी विश्वसनीय रिवर्स प्रॉक्सी के पीछे चल रहे हों जो Host को फिर से लिखता है, या किसी पृथक नेटवर्क में। K8s httpGet प्रोब और बाहरी /metrics स्क्रेप्स को इस सूची में एक स्पष्ट होस्टनाम, *, या tcpSocket प्रोब / एक अलग मेट्रिक्स पोर्ट (--metrics-address) की आवश्यकता होगी।
  • --allowed-origins: Origin हेडर मानों की अल्पविराम-पृथक अनुमति-सूची। डिफ़ॉल्ट रूप से खाली — कोई भी अनुरोध जो Origin हेडर रखता है उसे अस्वीकार कर दिया जाता है (ब्राउज़र क्रॉस-ओरिजिन अनुरोधों के लिए हमेशा एक भेजते हैं, और किसी भी ब्राउज़र को इस सर्वर को सीधे कॉल नहीं करना चाहिए)। ब्राउज़र-आधारित क्लाइंट को अनुमति देने के लिए एक स्पष्ट सूची सेट करें, या जाँच अक्षम करने के लिए * सेट करें।

कॉलर प्रमाणीकरण (केवल SSE / streamable-http):

वैकल्पिक रूप से MCP क्लाइंट को सर्वर से प्रमाणित होने की आवश्यकता होती है। यह उन क्रेडेंशियल्स से अलग है जो सर्वर Grafana तक पहुँचने के लिए उपयोग करता है। Stdio अप्रभावित रहता है।

  • --server-auth-token: Bearer टोकन जो कॉलर्स को Authorization: Bearer <token> के रूप में भेजना होता है। MCP_GRAFANA_SERVER_TOKEN पर्यावरण चर पर वापस आ जाता है। सेट होने पर, वैध टोकन के बिना अनुरोध किसी भी टूल के चलने से पहले 401 के साथ अस्वीकार कर दिए जाते हैं। env वेरिएबल को प्राथमिकता दें ताकि रहस्य प्रोसेस तर्कों में दिखाई न दे।

कॉलर प्रमाणीकरण केवल तभी लागू होता है जब --server-auth-token सेट हो। जब यह सेट नहीं होता और सर्वर गैर-लूपबैक पते से बंधता है, तो सर्वर शुरू होता है लेकिन सुरक्षा त्रुटि लॉग करता है — जो error लॉग स्तर पर उत्सर्जित होती है ताकि यह --log-level द्वारा छिपी न हो (लूपबैक और stdio अप्रभावित रहते हैं); भविष्य का एक प्रमुख रिलीज़ इसे स्टार्टअप त्रुटि बना देगा। गैर-लूपबैक पते पर कॉलर प्रमाणीकरण सक्षम होने पर TLS (या TLS समाप्ति) का उपयोग करें। जब कॉलर प्रमाणीकरण सक्षम होता है, तो सत्यापित Authorization हेडर अनुरोधों के Grafana तक पहुँचने से पहले हटा दिया जाता है; --server-auth-token को GRAFANA_FORWARD_HEADERS=Authorization के साथ संयोजित करना स्टार्टअप पर अस्वीकार कर दिया जाता है।

डीबग और लॉगिंग:

  • --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)। खाली होने पर, मेट्रिक्स मुख्य सर्वर पर परोसे जाते हैं
  • --slow-request-threshold: जब कोई MCP अनुरोध (टूल इनवोकेशन, सूची, संसाधन पठन, आदि) इस अवधि से अधिक समय लेता है तो एक इवेंट लॉग करें। Go अवधि स्ट्रिंग स्वीकार करता है (जैसे, 500ms, 5s)। डिफ़ॉल्ट 0 धीमी-अनुरोध लॉगिंग को अक्षम करता है। धीमी-अनुरोध लॉगिंग अनुभाग देखें।
  • --slow-request-log-level: धीमी-अनुरोध इवेंट के लिए लॉग स्तर (info या warn) - डिफ़ॉल्ट: warn

सत्र प्रबंधन:

  • --session-idle-timeout-minutes: सत्र निष्क्रिय टाइमआउट मिनटों में। इस अवधि के लिए बिना गतिविधि वाले सत्र स्वचालित रूप से समाप्त कर दिए जाते हैं - डिफ़ॉल्ट: 30। सत्र समाप्ति अक्षम करने के लिए 0 सेट करें। केवल SSE और streamable-http परिवहन के लिए प्रासंगिक।

टूल कॉन्फ़िगरेशन:

  • --enabled-tools: सक्षम श्रेणियों की अल्पविराम-पृथक सूची - डिफ़ॉल्ट: admin, agento11y, assistant, athena, clickhouse, 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 का अनुरोध करता है)।
  • --disable-search: खोज टूल अक्षम करें
  • --disable-datasource: डेटासोर्स टूल अक्षम करें
  • --disable-incident: इंसिडेंट टूल अक्षम करें
  • --disable-prometheus: prometheus टूल अक्षम करें
  • --disable-write: राइट टूल अक्षम करें (क्रिएट/अपडेट ऑपरेशन)
  • --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-examples: क्वेरी उदाहरण टूल अक्षम करें
  • --disable-clickhouse: ClickHouse टूल अक्षम करें
  • --disable-snowflake: Snowflake टूल अक्षम करें
  • --disable-runpanelquery: रन पैनल क्वेरी टूल अक्षम करें
  • --disable-graphite: Graphite टूल अक्षम करें
  • --disable-athena: Athena टूल अक्षम करें
  • --disable-provisioning: प्रोविज़निंग टूल अक्षम करें
  • --disable-agento11y: Agent Observability टूल अक्षम करें
  • --disable-assistant: Grafana Assistant टूल अक्षम करें

रीड-ओनली मोड

--disable-write फ़्लैग MCP सर्वर को रीड-ओनली मोड में चलाने का एक तरीका प्रदान करता है, जो आपके Grafana इंस्टेंस में किसी भी राइट ऑपरेशन को रोकता है। यह उन परिदृश्यों के लिए उपयोगी है जहाँ आप सुरक्षित, रीड-ओनली पहुँच प्रदान करना चाहते हैं जैसे:

  • सीमित रीड-ओनली अनुमतियों वाले सेवा खातों का उपयोग करना
  • AI सहायकों को संशोधन क्षमताओं के बिना अवलोकनीयता डेटा प्रदान करना
  • उत्पादन वातावरण में चलाना जहाँ राइट पहुँच प्रतिबंधित होनी चाहिए
  • परीक्षण और विकास परिदृश्य जहाँ आप आकस्मिक संशोधनों को रोकना चाहते हैं

जब --disable-write सक्षम होता है, तो निम्नलिखित राइट ऑपरेशन अक्षम हो जाते हैं:

डैशबोर्ड टूल:

  • update_dashboard

फ़ोल्डर टूल:

  • create_folder

इंसिडेंट टूल:

  • create_incident
  • add_activity_to_incident

अलर्टिंग टूल:

  • alerting_manage_rules (क्रिएट, अपडेट, डिलीट ऑपरेशन)

एनोटेशन टूल:

  • create_annotation
  • update_annotation

Sift टूल:

  • find_error_pattern_logs (जाँच बनाता है)
  • find_slow_requests (जाँच बनाता है)

स्नैपशॉट टूल:

  • create_snapshot
  • delete_snapshot

Agent Observability टूल:

  • agento11y_manage_evaluators (upsert, delete, fork, test evaluator ऑपरेशन)
  • agento11y_manage_eval_rules (create, update, delete, preview rule और guard ऑपरेशन)
  • agento11y_manage_eval_collections (सहेजे गए वार्तालाप सहेजें और हटाएं; कलेक्शन बनाएं, अपडेट करें, हटाएं; कलेक्शन सदस्य जोड़ें और हटाएं)
  • agento11y_manage_experiments (update और cancel experiment ऑपरेशन)
  • agento11y_manage_test_suites (create और update test suites; create और publish versions; upsert और delete test cases)

सभी रीड ऑपरेशन उपलब्ध रहते हैं, जिससे आप डैशबोर्ड क्वेरी कर सकते हैं, PromQL/LogQL क्वेरी चला सकते हैं, संसाधनों की सूची बना सकते हैं, और डेटा प्राप्त कर सकते हैं।

क्लाइंट TLS कॉन्फ़िगरेशन (Grafana कनेक्शन के लिए):

  • --tls-cert-file: क्लाइंट प्रमाणीकरण के लिए TLS प्रमाणपत्र फ़ाइल का पथ
  • --tls-key-file: क्लाइंट प्रमाणीकरण के लिए TLS निजी कुंजी फ़ाइल का पथ
  • --tls-ca-file: सर्वर सत्यापन के लिए TLS CA प्रमाणपत्र फ़ाइल का पथ
  • --tls-skip-verify: TLS प्रमाणपत्र सत्यापन छोड़ें (असुरक्षित)

सर्वर TLS कॉन्फ़िगरेशन (केवल streamable-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 deprecated है और भविष्य के संस्करण में हटा दिया जाएगा। कृपया GRAFANA_SERVICE_ACCOUNT_TOKEN का उपयोग करने के लिए माइग्रेट करें। पुराना वेरिएबल नाम पिछड़ी संगतता के लिए काम करता रहेगा लेकिन deprecation चेतावनी दिखाएगा।

सेवा खाता टोकन को फ़ाइल से पढ़ना

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

बहु-संगठन समर्थन

आप निम्न में से किसी एक का उपयोग करके निर्दिष्ट कर सकते हैं कि किस संगठन के साथ बातचीत करनी है:

  • पर्यावरण चर: संख्यात्मक संगठन ID पर GRAFANA_ORG_ID सेट करें
  • HTTP हेडर: SSE या streamable HTTP परिवहन का उपयोग करते समय X-Grafana-Org-Id सेट करें (हेडर पर्यावरण चर पर पूर्वता लेता है - जिसका अर्थ है कि आप एक डिफ़ॉल्ट संगठन भी सेट कर सकते हैं)।

जब संगठन ID प्रदान किया जाता है, तो MCP सर्वर Grafana को सभी अनुरोधों पर X-Grafana-Org-Id हेडर सेट करेगा, यह सुनिश्चित करते हुए कि ऑपरेशन निर्दिष्ट संगठन संदर्भ में किए जाते हैं।

संगठन ID के साथ उदाहरण:

{
  "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\"}"
      }
    }
  }
}

क्लाइंट से हेडर फॉरवर्ड करना (केवल SSE/Streamable-HTTP)

जब MCP सर्वर किसी गेटवे या रिवर्स प्रॉक्सी के पीछे चलता है जो SSO संभालता है (उदाहरण के लिए ओआईडीसी के साथ 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 में परिभाषित किसी भी हेडर के साथ विलय कर दिया जाता है। यदि कोई हेडर नाम दोनों में दिखाई देता है, तो उस अनुरोध के लिए इनकमिंग अनुरोध का मान प्राथमिकता लेता है।

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

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

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

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

      1. 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. सर्वर कॉन्फ़िगरेशन को अपनी क्लाइंट कॉन्फ़िगरेशन फ़ाइल में जोड़ें। उदाहरण के लिए, क्लॉड डेस्कटॉप के लिए:

    यदि 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"
          }
        }
      }
    }
    

नोट: यदि आपको क्लॉड डेस्कटॉप में 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 अनुरोधों और प्रतिक्रियाओं के विस्तृत लॉगिंग प्रदान करेगा, जो समस्या निवारण में सहायक हो सकता है।

क्लॉड डेस्कटॉप कॉन्फ़िगरेशन के साथ डीबग मोड का उपयोग करने के लिए, अपने कॉन्फ़िग को निम्नानुसार अपडेट करें:

यदि बाइनरी का उपयोग कर रहे हैं:

{
  "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

# With custom address
curl http://localhost:9090/healthz

नोट: स्वास्थ्य जाँच एंडपॉइंट केवल SSE या स्ट्रीमेबल HTTP ट्रांसपोर्ट का उपयोग करते समय उपलब्ध है। यह stdio ट्रांसपोर्ट (-t stdio) का उपयोग करते समय उपलब्ध नहीं है, क्योंकि stdio एक HTTP सर्वर उजागर नहीं करता है।

अवलोकनीयता

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 ट्रांसपोर्ट के साथ उपलब्ध नहीं हैं।

धीमी-अनुरोध लॉगिंग

--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

समस्या निवारण

Grafana संस्करण संगतता

यदि आपको datasource-संबंधित टूल का उपयोग करते समय निम्न त्रुटि मिलती है:

get datasource by uid : [GET /datasources/uid/{uid}][400] getDataSourceByUidBadRequest {"message":"id is invalid"}

यह आमतौर पर इंगित करता है कि आप Grafana के 9.0 से पहले के संस्करण का उपयोग कर रहे हैं। /datasources/uid/{uid} API एंडपॉइंट Grafana 9.0 में पेश किया गया था, और पुराने संस्करणों पर datasource संचालन विफल हो जाएगा।

समाधान: इस समस्या को हल करने के लिए अपने Grafana इंस्टेंस को संस्करण 9.0 या बाद में अपग्रेड करें।

विकास

योगदान का स्वागत है! यदि आपके पास कोई सुझाव या सुधार है, तो कृपया एक issue खोलें या pull request सबमिट करें।

यह प्रोजेक्ट Go में लिखा गया है। अपने प्लेटफ़ॉर्म के लिए निर्देशों का पालन करते हुए Go इंस्टॉल करें।

सर्वर को स्थानीय रूप से STDIO मोड में चलाने के लिए (जो स्थानीय विकास के लिए डिफ़ॉल्ट है), उपयोग करें:

make run

सर्वर को स्थानीय रूप से SSE मोड में चलाने के लिए, उपयोग करें:

go run ./cmd/mcp-grafana --transport sse

आप कस्टम निर्मित Docker इमेज के अंदर SSE परिवहन का उपयोग करके भी सर्वर चला सकते हैं। प्रकाशित Docker इमेज की तरह, इस कस्टम इमेज का entrypoint डिफ़ॉल्ट रूप से 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 Cloud इंस्टेंस और क्रेडेंशियल सेट करने की आवश्यकता होगी।

अधिक व्यापक एकीकरण परीक्षणों के लिए एक Grafana इंस्टेंस को स्थानीय रूप से पोर्ट 3000 पर चलाने की आवश्यकता होगी; आप Docker Compose के साथ एक शुरू कर सकते हैं:

docker-compose up -d

एकीकरण परीक्षण इसके साथ चलाए जा सकते हैं:

make test-all

यदि आप अधिक टूल जोड़ रहे हैं, तो कृपया उनके लिए एकीकरण परीक्षण जोड़ें। मौजूदा परीक्षण एक अच्छा प्रारंभिक बिंदु होना चाहिए।

लिंटिंग

कोड को लिंट करने के लिए, चलाएँ:

make lint

इसमें एक कस्टम लिंटर शामिल है जो jsonschema struct टैग में अनएस्केप्ड कॉमा की जाँच करता है। description फ़ील्ड में कॉमा को मौन ट्रंकेशन को रोकने के लिए \\, के साथ एस्केप किया जाना चाहिए। आप केवल इस लिंटर को इसके साथ चला सकते हैं:

make lint-jsonschema

अधिक विवरण के लिए JSONSchema Linter दस्तावेज़ देखें।

लाइसेंस

यह प्रोजेक्ट Apache License, Version 2.0 के तहत लाइसेंस प्राप्त है।