Grafana MCP Server

आधिकारिक

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

दस्तावेज़

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) से बदलें। Docker, बाइनरी और Helm सहित अधिक इंस्टॉलेशन विकल्पों के लिए उपयोग देखें।

आवश्यकताएँ

  • Grafana संस्करण 9.0 या बाद का पूर्ण कार्यक्षमता के लिए आवश्यक है। कुछ सुविधाएँ, विशेष रूप से डेटास्रोत-संबंधी संचालन, पुराने संस्करणों के साथ अनुपलब्ध API एंडपॉइंट के कारण सही ढंग से काम नहीं कर सकती हैं।

सुविधाएँ

निम्नलिखित सुविधाएँ वर्तमान में MCP सर्वर में उपलब्ध हैं। यह सूची केवल सूचनात्मक उद्देश्यों के लिए है और किसी रोडमैप या भविष्य की सुविधाओं के प्रति प्रतिबद्धता का प्रतिनिधित्व नहीं करती है।

डैशबोर्ड

  • डैशबोर्ड खोजें: शीर्षक या अन्य मेटाडेटा द्वारा डैशबोर्ड खोजें
  • UID द्वारा डैशबोर्ड प्राप्त करें: अद्वितीय पहचानकर्ता का उपयोग करके पूर्ण डैशबोर्ड विवरण प्राप्त करें। चेतावनी: बड़े डैशबोर्ड महत्वपूर्ण संदर्भ विंडो स्थान का उपभोग कर सकते हैं।
  • डैशबोर्ड सारांश प्राप्त करें: संदर्भ विंडो उपयोग को कम करने के लिए पूर्ण JSON के बिना शीर्षक, पैनल गणना, पैनल प्रकार, चर और मेटाडेटा सहित डैशबोर्ड का एक संक्षिप्त अवलोकन प्राप्त करें
  • डैशबोर्ड गुण प्राप्त करें: केवल आवश्यक डेटा प्राप्त करने और संदर्भ विंडो खपत को कम करने के लिए JSONPath अभिव्यक्तियों (जैसे, $.title, $.panels[*].title) का उपयोग करके डैशबोर्ड के विशिष्ट भाग निकालें
  • डैशबोर्ड अपडेट या बनाएँ: मौजूदा डैशबोर्ड संशोधित करें या नए बनाएँ। चेतावनी: पूर्ण डैशबोर्ड JSON की आवश्यकता होती है जो बड़ी मात्रा में संदर्भ विंडो स्थान का उपभोग कर सकता है।
  • पैच डैशबोर्ड: पूर्ण JSON की आवश्यकता के बिना डैशबोर्ड में विशिष्ट परिवर्तन लागू करें, लक्षित संशोधनों के लिए संदर्भ विंडो उपयोग को महत्वपूर्ण रूप से कम करता है
  • पैनल क्वेरी और डेटास्रोत जानकारी प्राप्त करें: डैशबोर्ड के प्रत्येक पैनल से शीर्षक, क्वेरी स्ट्रिंग और डेटास्रोत जानकारी (यदि उपलब्ध हो तो UID और प्रकार सहित) प्राप्त करें

पैनल क्वेरी चलाएँ

नोट: पैनल क्वेरी चलाने के उपकरण डिफ़ॉल्ट रूप से अक्षम हैं। उन्हें सक्षम करने के लिए, अपने --enabled-tools फ़्लैग में runpanelquery जोड़ें।

  • पैनल क्वेरी चलाएँ: कस्टम समय सीमाओं और चर ओवरराइड के साथ डैशबोर्ड पैनल की क्वेरी निष्पादित करें।

संदर्भ विंडो प्रबंधन

डैशबोर्ड उपकरणों में अब संदर्भ विंडो उपयोग को प्रभावी ढंग से प्रबंधित करने के लिए कई रणनीतियाँ शामिल हैं (मुद्दा #101):

  • डैशबोर्ड अवलोकन और योजना संशोधनों के लिए get_dashboard_summary का उपयोग करें
  • जब आपको केवल विशिष्ट डैशबोर्ड भागों की आवश्यकता हो तो JSONPath के साथ get_dashboard_property का उपयोग करें
  • get_dashboard_by_uid से बचें जब तक कि आपको विशेष रूप से पूर्ण डैशबोर्ड JSON की आवश्यकता न हो

डेटास्रोत

  • डेटास्रोत जानकारी सूचीबद्ध करें और प्राप्त करें: सभी कॉन्फ़िगर किए गए डेटास्रोत देखें और प्रत्येक के बारे में विस्तृत जानकारी प्राप्त करें।
    • समर्थित डेटास्रोत प्रकार: 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 रेंडर 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 क्वेरी DSL का उपयोग करके Elasticsearch या OpenSearch डेटास्रोतों के विरुद्ध खोज क्वेरी निष्पादित करें। समय सीमा द्वारा फ़िल्टर करने और लॉग, मीट्रिक या किसी भी अनुक्रमित डेटा को पुनर्प्राप्त करने का समर्थन करता है। दस्तावेज़ों को उनके इंडेक्स, ID, स्रोत फ़ील्ड और वैकल्पिक प्रासंगिकता स्कोर के साथ लौटाता है।

Quickwit क्वेरीइंग

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

  • Quickwit क्वेरी करें: Lucene क्वेरी सिंटैक्स या आंशिक Elasticsearch-संगत क्वेरी DSL का उपयोग करके Quickwit डेटास्रोतों के विरुद्ध खोज क्वेरी निष्पादित करें। समय सीमा द्वारा फ़िल्टर करने और लॉग या अन्य अनुक्रमित दस्तावेज़ों को पुनर्प्राप्त करने का समर्थन करता है। दस्तावेज़ों को उनके इंडेक्स, ID, स्रोत फ़ील्ड और वैकल्पिक प्रासंगिकता स्कोर के साथ लौटाता है।

घटनाएँ

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

Sift जाँच

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

चेतावनी

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

Grafana OnCall

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

व्यवस्थापक

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

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

नेविगेशन

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

एनोटेशन

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

स्नैपशॉट

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

रेंडरिंग

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

प्रावधानिंग

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

उपकरणों की सूची विन्यास योग्य है, इसलिए आप चुन सकते हैं कि आप MCP क्लाइंट को कौन से उपकरण उपलब्ध कराना चाहते हैं। यह तब उपयोगी है जब आप कुछ कार्यक्षमता का उपयोग नहीं करते हैं या यदि आप संदर्भ विंडो में बहुत अधिक स्थान नहीं लेना चाहते हैं। उपकरणों की एक श्रेणी को अक्षम करने के लिए, सर्वर प्रारंभ करते समय --disable-<category> फ़्लैग का उपयोग करें। उदाहरण के लिए, OnCall उपकरणों को अक्षम करने के लिए --disable-oncall का उपयोग करें, या नेविगेशन डीपलिंक जनरेशन को अक्षम करने के लिए --disable-navigation का उपयोग करें।

RBAC अनुमतियाँ

प्रत्येक उपकरण को ठीक से काम करने के लिए विशिष्ट RBAC अनुमतियों की आवश्यकता होती है। MCP सर्वर के लिए सेवा खाता बनाते समय, सुनिश्चित करें कि उसके पास आपके द्वारा उपयोग किए जाने वाले उपकरणों के आधार पर आवश्यक अनुमतियाँ हों। सूचीबद्ध अनुमतियाँ न्यूनतम आवश्यक क्रियाएँ हैं - आपको अपने उपयोग के मामले के आधार पर उपयुक्त स्कोप (जैसे, datasources:*, dashboards:*, folders:*) की भी आवश्यकता हो सकती है।

सुझाव: यदि आप Grafana RBAC से परिचित नहीं हैं या कई विस्तृत स्कोप कॉन्फ़िगर करने के बजाय एक तेज़, सरल सेटअप चाहते हैं, तो आप सेवा खाते को Editor जैसी अंतर्निहित भूमिका असाइन कर सकते हैं। Editor भूमिका व्यापक पढ़ने/लिखने की पहुँच प्रदान करती है जो अधिकांश MCP सर्वर संचालन की अनुमति देगी; यह मैन्युअल रूप से लागू स्कोप की तुलना में कम विस्तृत (और इसलिए कम प्रतिबंधात्मक) है, इसलिए इसका उपयोग केवल तब करें जब सख्त न्यूनतम-विशेषाधिकार पहुँच की तुलना में सुविधा अधिक महत्वपूर्ण हो।

नोट: Grafana इंसीडेंट और Sift उपकरण विस्तृत RBAC अनुमतियों के बजाय बुनियादी Grafana भूमिकाओं का उपयोग करते हैं:

  • व्यूअर भूमिका: केवल-पढ़ने के संचालन (घटनाओं की सूची बनाना, जाँच प्राप्त करना) के लिए आवश्यक
  • एडिटर भूमिका: लेखन संचालन (घटनाएँ बनाना, जाँच संशोधित करना) के लिए आवश्यक

Grafana RBAC के बारे में अधिक जानकारी के लिए, आधिकारिक दस्तावेज़ीकरण देखें।

RBAC स्कोप

स्कोप उन विशिष्ट संसाधनों को परिभाषित करते हैं जिन पर अनुमतियाँ लागू होती हैं। प्रत्येक क्रिया के लिए उपयुक्त अनुमति और स्कोप संयोजन दोनों की आवश्यकता होती है।

सामान्य स्कोप पैटर्न:

  • व्यापक पहुँच: संगठन-व्यापी पहुँच के लिए * वाइल्डकार्ड का उपयोग करें

    • 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:*
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_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 Incident में घटनाओं की सूची बनाएँदर्शक भूमिकालागू नहीं
create_incidentघटनाGrafana Incident में एक घटना बनाएँसंपादक भूमिकालागू नहीं
add_activity_to_incidentघटनाGrafana Incident में किसी घटना में गतिविधि आइटम जोड़ेंसंपादक भूमिकालागू नहीं
get_incidentघटनाID द्वारा एकल घटना प्राप्त करेंदर्शक भूमिकालागू नहीं
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 स्निपेट जनरेट करेंलागू नहींलागू नहीं
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 द्वारा पुनर्प्राप्त करेंदर्शक भूमिकालागू नहीं
get_sift_analysisSiftSift जाँच से एक विशिष्ट विश्लेषण पुनर्प्राप्त करेंदर्शक भूमिकालागू नहीं
list_sift_investigationsSiftएक वैकल्पिक सीमा के साथ Sift जाँचों की सूची पुनर्प्राप्त करेंदर्शक भूमिकालागू नहीं
find_error_pattern_logsSiftLoki लॉग में बढ़े हुए त्रुटि पैटर्न ढूँढता है।संपादक भूमिकालागू नहीं
find_slow_requestsSiftसंबंधित tempo डेटास्रोतों से धीमे अनुरोध ढूँढता है।संपादक भूमिकालागू नहीं
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किसी दिए गए एंटिटी के लिए अभिकथन सारांश प्राप्त करेंप्लगइन-विशिष्ट अनुमतियाँप्लगइन-विशिष्ट दायरे
generate_deeplinkNavigationGrafana संसाधनों के लिए सटीक डीपलिंक URL जनरेट करेंकोई नहीं (केवल-पढ़ने के लिए URL जनरेशन)लागू नहीं
get_annotationsAnnotationsफ़िल्टर के साथ एनोटेशन प्राप्त करेंannotations:readannotations:* या annotations:id:123
create_annotationAnnotationsएक नया एनोटेशन बनाएँ (मानक या Graphite प्रारूप)annotations:writeannotations:*
update_annotationAnnotationsकिसी एनोटेशन के विशिष्ट फ़ील्ड अपडेट करें (आंशिक अपडेट)annotations:writeannotations:*
get_annotation_tagsAnnotationsवैकल्पिक फ़िल्टरिंग के साथ एनोटेशन टैग सूचीबद्ध करेंannotations:readannotations:*
list_snapshotsSnapshotवैकल्पिक क्वेरी और सीमा फ़िल्टर के साथ डैशबोर्ड स्नैपशॉट सूचीबद्ध करेंdashboards:readdashboards:* या dashboards:uid:abc123
get_snapshotSnapshotस्नैपशॉट कुंजी द्वारा स्नैपशॉट मेटाडेटा और डैशबोर्ड पेलोड प्राप्त करेंdashboards:readdashboards:* या dashboards:uid:abc123
create_snapshotSnapshotपूर्ण डैशबोर्ड पेलोड से एक डैशबोर्ड स्नैपशॉट बनाएँdashboards:writedashboards:* या dashboards:uid:abc123
delete_snapshotSnapshotस्नैपशॉट कुंजी द्वारा डैशबोर्ड स्नैपशॉट हटाएँdashboards:writedashboards:* या dashboards:uid:abc123
get_panel_imageRenderingकिसी संग्रहीत डैशबोर्ड या पैनल — या किसी रिपॉजिटरी शाखा से प्रोविज़निंग पूर्वावलोकन — को PNG छवि के रूप में रेंडर करेंdashboards:readdashboards:uid:abc123
list_provisioning_repositoriesProvisioningप्रोविज़निंग रिपॉजिटरी (जैसे git-sync स्रोत) को उनके स्रोत URL, शाखा, सिंक स्थिति और स्वास्थ्य के साथ सूचीबद्ध करेंprovisioning.repositories:readलागू नहीं
validate_provisioning_fileप्रावधानीकरणप्रावधानीकरण रिपॉजिटरी से किसी फ़ाइल का ड्राई-रन-अप्लाई करें और प्रवेश सत्यापन त्रुटियों की रिपोर्ट करेंprovisioning.repositories:readलागू नहीं
* डिफ़ॉल्ट रूप से अक्षम। सक्षम करने के लिए --enabled-tools में श्रेणी जोड़ें।

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

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

ट्रांसपोर्ट विकल्प:

  • -t, --transport: ट्रांसपोर्ट प्रकार (stdio, sse, या streamable-http) - डिफ़ॉल्ट: stdio
  • --address: SSE/स्ट्रीमेबल-http सर्वर के लिए होस्ट और पोर्ट - डिफ़ॉल्ट: localhost:8000
  • --base-path: SSE/स्ट्रीमेबल-http सर्वर के लिए आधार पथ
  • --endpoint-path: स्ट्रीमेबल-http सर्वर के लिए एंडपॉइंट पथ - डिफ़ॉल्ट: /

HTTP ट्रांसपोर्ट सुरक्षा (केवल SSE / स्ट्रीमेबल-http):

Host/Origin सत्यापन श्रोता पर प्रत्येक मार्ग पर लागू किया जाता है — /sse, /mcp, /healthz, और /metrics — ताकि DNS-रीबाइंडिंग ब्राउज़र उनमें से किसी तक न पहुँच सके। 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 हेडर ले जाता है, अस्वीकार कर दिया जाता है (ब्राउज़र हमेशा क्रॉस-ओरिजिन अनुरोधों के लिए एक भेजते हैं, और किसी भी ब्राउज़र को इस सर्वर को सीधे कॉल नहीं करना चाहिए)। ब्राउज़र-आधारित क्लाइंट को अनुमति देने के लिए एक स्पष्ट सूची पर सेट करें, या जाँच को अक्षम करने के लिए *

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

  • --debug: विस्तृत HTTP अनुरोध/प्रतिक्रिया लॉगिंग के लिए डीबग मोड सक्षम करें
  • --log-level: लॉग स्तर (debug, info, warn, error) - डिफ़ॉल्ट: info

ऑब्ज़र्वेबिलिटी:

  • --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 और स्ट्रीमेबल-http ट्रांसपोर्ट के लिए प्रासंगिक।

उपकरण कॉन्फ़िगरेशन:

  • --enabled-tools: सक्षम श्रेणियों की अल्पविराम-पृथक सूची - डिफ़ॉल्ट: admin, 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-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

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

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

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

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

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

      महत्वपूर्ण: डॉकर छवि का एंट्रीपॉइंट डिफ़ॉल्ट रूप से MCP सर्वर को SSE मोड में चलाने के लिए कॉन्फ़िगर किया गया है, लेकिन अधिकांश उपयोगकर्ता AI सहायकों जैसे Claude Desktop के साथ सीधे एकीकरण के लिए 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
      
      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> 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> 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> \
        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)

अपने स्वयं के HTTP सर्वर को वायर करते समय URL सत्यापन:

जब लाइब्रेरी उपभोक्ता mcp-grafana के संदर्भ फ़ंक्शनों को अपने स्वयं के http.Server में वायर करते हैं, तो विकृत X-Grafana-URL हेडर को 400 खराब अनुरोध (बाइनरी के व्यवहार से मेल खाते हुए) के साथ अस्वीकार करने के लिए ValidateGrafanaURLMiddleware स्थापित करें:

mux.Handle(path, mcpgrafana.ValidateGrafanaURLMiddleware(yourMCPHandler))

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)

दोनों पैटर्न एकल सत्यापनकर्ता के रूप में ValidateGrafanaURL साझा करते हैं।

सर्वर 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 सर्वर OTel MCP सिमेंटिक कन्वेंशन का पालन करते हुए Prometheus मेट्रिक्स, OpenTelemetry वितरित अनुरेखण, और OpenTelemetry लॉग निर्यात का समर्थन करता है। अनुरेखण और लॉग निर्यात मानक 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 सेट किया जाता है, तो सर्वर 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 संलग्न करता है, ताकि लॉग रिकॉर्ड सर्वर द्वारा पहले से उत्सर्जित अनुरेखणों के साथ सहसंबद्ध हों।

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 संस्करण संगतता

यदि आपको डेटास्रोत-संबंधित उपकरणों का उपयोग करते समय निम्नलिखित त्रुटि का सामना करना पड़ता है:

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

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

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

विकास

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

यह परियोजना 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. एकीकरण परीक्षण (डॉकर कंटेनरों के चालू और संचालित होने की आवश्यकता है):
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 स्ट्रक्ट टैग में अनएस्केप्ड कॉमा की जाँच करता है। description फ़ील्ड में कॉमा को \\, के साथ एस्केप किया जाना चाहिए ताकि मूक कटाव को रोका जा सके। आप केवल इस लिंटर को इसके साथ चला सकते हैं:

make lint-jsonschema

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

लाइसेंस

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