/ Verzeichnis / Playground / Grafana MCP
● Offiziell grafana 🔑 Eigener Schlüssel nötig

Grafana MCP

von grafana · grafana/mcp-grafana

Das offizielle Grafana-MCP — Prometheus/Loki/Tempo abfragen, Dashboards auflisten, Alerts abrufen, Incident-Timelines erstellen, alles hinter einem einzigen stdio-Server.

Grafanas First-Party-MCP-Server verbindet sich mit dem Grafana-Stack (OSS, Cloud oder Enterprise) und stellt seine Datenquellen und Management-API als MCP-Tools bereit. Prometheus/Loki/Tempo-Queries, Dashboard-Discovery, Alert-Status, OnCall und Sift-Untersuchungen sind enthalten — alles, was Grafana kann, kann Claude auch abfragen.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

mcp-grafana.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-grafana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_URL": "https://your-grafana.example.com",
        "GRAFANA_API_KEY": "${GRAFANA_API_KEY}"
      }
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcp-grafana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_URL": "https://your-grafana.example.com",
        "GRAFANA_API_KEY": "${GRAFANA_API_KEY}"
      }
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcp-grafana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_URL": "https://your-grafana.example.com",
        "GRAFANA_API_KEY": "${GRAFANA_API_KEY}"
      }
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-grafana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_URL": "https://your-grafana.example.com",
        "GRAFANA_API_KEY": "${GRAFANA_API_KEY}"
      }
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcp-grafana",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcp-grafana": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "GRAFANA_URL",
          "-e",
          "GRAFANA_API_KEY",
          "mcp/grafana",
          "-t",
          "stdio"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add mcp-grafana -- docker run -i --rm -e GRAFANA_URL -e GRAFANA_API_KEY mcp/grafana -t stdio

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: Grafana MCP

Eine Incident-Timeline aus Grafana-Daten aufbauen

👤 SREs / On-Call ⏱ ~10 min intermediate

Wann einsetzen: Pager hat ausgelöst; eine kohärente Timeline wird vor dem Call benötigt.

Voraussetzungen
  • Grafana-Service-Account-Token — Grafana → Administration → Service accounts; Editor-Rolle reicht für Queries
Ablauf
  1. Was feuert
    Grafana: in den letzten 30 Minuten feuernde Alerts für service=checkout auflisten.✓ Kopiert
    → list_alerts gibt 1+ Alerts mit Timestamps zurück
  2. Die Metrik ziehen
    Für jeden Alert eine Prometheus-Range-Query für die zugrunde liegende Metrik über die letzte Stunde ausführen. Breach-Zeitpunkt notieren.✓ Kopiert
    → query_prometheus_range gibt Zeitreihen zurück
  3. Logs beim Breach ziehen
    Loki: Logs für service=checkout, level=error, [breach_time-2m, breach_time+2m]. Top-Muster anzeigen.✓ Kopiert
    → Log-Zeilen nach Signatur geclustert
  4. Timeline zusammenstellen
    Prägnante Timeline erstellen: Alert ausgelöst → Metrik-Breach → Top-3-Fehler-Log-Muster. Markdown für Slack.✓ Kopiert
    → Timeline bereit zum Einfügen

Ergebnis: Kohärente Incident-Timeline zusammengestellt, bevor der Call beginnt.

Fallstricke
  • Loki-Query zu breit → Token-Budget gesprengt — Immer service=-Label einschließen; Zeitfenster aggressiv begrenzen
  • Prometheus-Query mit zu feinem step — step=15s oder 30s für 1h-Fenster verwenden
Kombinieren mit: sentry

Erklären, was ein Grafana-Dashboard tatsächlich zeigt

👤 Neues Teammitglied beim Onboarding ⏱ ~15 min beginner

Wann einsetzen: Ein Dashboard wurde übernommen und soll ohne Klicken auf jedes Panel verstanden werden.

Ablauf
  1. Dashboard finden
    Grafana: Dashboards mit dem Titel "Checkout SLO" suchen.✓ Kopiert
    → Dashboard-UID zurückgegeben
  2. Panels inspizieren
    Das Dashboard abrufen. Für jedes Panel zusammenfassen: Titel, Datenquelle, ausgeführte Query, Schwellenwert (falls vorhanden).✓ Kopiert
    → Pro-Panel-Erklärung; Query-Strings enthalten

Ergebnis: Dokumentiertes Verständnis des Dashboards, bereit für das Onboarding-Wiki.

Fallstricke
  • Variablen seltsam substituiert — Darauf hinweisen, dass $service/$env-Interpolation zur Dashboard-Zeit stattfindet, nicht zur MCP-Zeit

Alert-Regeln auf Lärm prüfen

👤 SRE-Leads ⏱ ~30 min intermediate

Wann einsetzen: Quartals-Hygiene — Regeln finden, die ständig feuern oder nie feuern.

Ablauf
  1. Regeln ziehen
    Grafana: alle Alert-Regeln im Ordner "Production" auflisten.✓ Kopiert
    → Regelliste mit UID + Ausdruck
  2. Feuer-History abrufen
    Für jede die Alert-Instanzen der letzten 30 Tage zählen. Regeln mit >100 (laut) oder 0 (schlafend) markieren.✓ Kopiert
    → Pro-Regel-Zählungen + markierter Satz
  3. Empfehlen
    Für jede markierte Regel eine Korrektur vorschlagen: Schwellenwert verschärfen, for: 5m hinzufügen oder schlafende löschen.✓ Kopiert
    → Konkrete YAML-Änderungen pro Regel

Ergebnis: Konkreter Bereinigungsplan mit PR-fertigem YAML.

Fallstricke
  • Instanzen zählen ≠ einmalige Alerts zählen — Nach Labels gruppieren; distinct firing periods zählen
Kombinieren mit: github

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

mcp-grafana + sentry

Sentry-Fehler mit Metrik-/Log-Breaches korrelieren

Sentry: Fehler-Spike für OrderService abrufen. Grafana: Prometheus + Loki im gleichen Zeitfenster ziehen.✓ Kopiert
mcp-grafana + github

PR mit Alert-Regel-Bereinigungen öffnen

Grafana: Alert-Regeln prüfen. GitHub: PR öffnen, der die lauten Regeln durch verschärfte Schwellenwerte ersetzt.✓ Kopiert
mcp-grafana + filesystem

Incident-Timeline als Markdown-Postmortem speichern

Timeline aus Grafana erstellen, nach /pm/2026-05-incident.md speichern.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
list_datasources (keine) Erster Aufruf, verfügbare Quellen erkunden 1 API-Aufruf
query_prometheus datasource_uid, query, time? Sofortiger Metrik-Wert 1 Aufruf
query_prometheus_range datasource_uid, query, start, end, step Zeitreihen-Untersuchung 1 Aufruf
query_loki_logs datasource_uid, expr, start, end, limit? Logs ziehen 1 Aufruf
search_dashboards query: str Dashboard finden 1 Aufruf
get_dashboard uid: str Panels inspizieren 1 Aufruf
list_alert_rules folder? Audit / Discovery 1 Aufruf
list_alert_instances state? Was feuert gerade 1 Aufruf
list_oncall_schedules (keine) Wer hat On-Call 1 Aufruf

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Durch die Grafana-Instanz-Limits begrenzt; Cloud hat QPS-Caps auf Org-Ebene
Tokens pro Aufruf
300–8000 (Range-Queries können groß sein)
Kosten in €
Kostenloser Open Source; Grafana Cloud wird normal abgerechnet
Tipp
Bei Range-Queries immer step= übergeben; Loki limit=100 verwenden, außer wenn das Volumen bekannt ist

Sicherheit

Rechte, Secrets, Reichweite

Minimale Scopes: service-account mit Viewer oder Editor
Credential-Speicherung: Service-Account-Token in Env-Variable
Datenabfluss: Nur die eigene Grafana-URL
Niemals gewähren: Admin-Rolle, außer wenn Regeländerung benötigt wird

Fehlerbehebung

Häufige Fehler und Lösungen

401 Unauthorized

Token falsch oder Service-Account deaktiviert

Prüfen: curl -H "Authorization: Bearer $TOKEN" $URL/api/health
Prometheus-Query-Timeout

Zeitbereich oder step reduzieren

Loki "parse error"

LogQL benötigt Label-Filter links der Pipeline; z. B. {service="x"} |= "err"

Dashboard nicht gefunden

UID hat sich nach dem Import geändert; zuerst nach Titel suchen

Alternativen

Grafana MCP vs. andere

AlternativeWann stattdessenKompromiss
Direktes Prometheus MCPNur Prometheus, kein GrafanaKeine Dashboards, keine Alert-UI-Integration
Datadog MCPDatadog im EinsatzAnderer Observability-Stack
Loki MCP standaloneNur LogsGeringere Oberfläche

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen