Skip to main content
Glama
ninanung
by ninanung

grafana-mcp

npm version license node

Stellt einen Teil der Grafana-API als MCP-Server (Model Context Protocol) bereit, mit Fokus auf die Abfrage von Logs in natürlicher Sprache. Das Hauptziel: Sagen Sie „Zeige mir Fehler-Logs vom api-Service der letzten 30 Minuten“ und erhalten Sie die tatsächlichen Log-Zeilen zurück — ohne LogQL, Labels oder Datenquellen-UIDs manuell verwalten zu müssen.

Log-Datenquellen, Loki-Labels und die Zuordnung von einem Servicenamen zu seiner hostenden Datenquelle/seinem Label werden auf der Festplatte zwischengespeichert, sodass wiederholte Aufrufe redundante Label-Scans überspringen.

한국어 문서 / Korean README

Installation & Einrichtung

npx (keine Installation erforderlich)

Fügen Sie Folgendes zu ~/.mcp.json hinzu.

{
  "mcpServers": {
    "grafana": {
      "command": "npx",
      "args": ["@seungje.jun/grafana-mcp"],
      "env": {
        "GRAFANA_URL": "https://grafana.example.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxx"
      }
    }
  }
}

Aus Quellcode bauen

git clone https://github.com/ninanung/grafana-mcp.git
cd grafana-mcp
npm install
npm run build
{
  "mcpServers": {
    "grafana": {
      "command": "node",
      "args": ["/path/to/grafana-mcp/dist/cli.js"],
      "env": {
        "GRAFANA_URL": "https://grafana.example.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxx"
      }
    }
  }
}

Starten Sie Claude Code neu, um die MCP-Tools zu aktivieren.

Authentifizierung

Eines der folgenden ist erforderlich. Sie werden in der unten stehenden Reihenfolge geprüft — das erste vorhandene gewinnt.

Variable

Wann zu verwenden

GRAFANA_SERVICE_ACCOUNT_TOKEN

Grafana 9.1+ (empfohlen)

GRAFANA_CLOUD_ACCESS_POLICY_TOKEN

Grafana Cloud

GRAFANA_API_KEY

Legacy API-Schlüssel (veraltet ab 10.x)

GRAFANA_USERNAME + GRAFANA_PASSWORD

Basic Auth Fallback

Alle Bearer-Token werden als Authorization: Bearer <token> gesendet. Dem Server ist es egal, um welche Art von Token es sich handelt — er wählt nur dasjenige aus, das gesetzt ist.

Umgebungsvariablen

Variable

Beschreibung

GRAFANA_URL

Grafana-Server-URL (Einzelinstanz-Modus, erforderlich, wenn GRAFANA_INSTANCES nicht gesetzt ist)

GRAFANA_INSTANCES

(optional) JSON-Array für den Multi-Instanz-Modus. Beispiel: [{"name":"prod","url":"...","service_account_token":"..."},{"name":"dev","url":"...","api_key":"..."}]. Wenn gesetzt, übergeben Sie instance: "prod" bei jedem Tool-Aufruf, um das Ziel auszuwählen. Fällt auf den ersten Eintrag zurück, falls weggelassen.

GRAFANA_ORG_ID

(optional) Wird als X-Grafana-Org-Id-Header gesendet. Für Multi-Org-Setups.

GRAFANA_TLS_SKIP_VERIFY

(optional) true / 1 zum Überspringen der TLS-Verifizierung (selbstsigniertes Grafana).

GRAFANA_MCP_LOG

(optional) Log-Level: debug, info (Standard), warn, error, silent. Logs gehen an stderr, um den MCP-stdio-Kanal nicht zu korrumpieren.

GRAFANA_MCP_AUDIT_LOG

(optional) Pfad zur Audit-Log-Datei. Standard ist ~/.grafana-mcp/audit.log. Auf off setzen, um es zu deaktivieren. Jede Zeile ist ein JSON-Datensatz mit Tool-Name, Argumenten, Dauer, Status.

GRAFANA_MCP_CACHE

(optional) Auf off setzen, um den Log-Cache auf der Festplatte zu deaktivieren.

GRAFANA_MCP_CACHE_PATH

(optional) Pfad zur Log-Cache-Datei. Standard ist ~/.grafana-mcp/log-cache.json.

GRAFANA_MCP_CACHE_TTL_DATASOURCES_MS

(optional) TTL für den Log-Datenquellen-Listen-Cache. Standard 86400000 (24h).

GRAFANA_MCP_CACHE_TTL_LABELS_MS

(optional) TTL für den Loki-Label-Key-Cache. Standard 86400000 (24h).

GRAFANA_MCP_CACHE_TTL_LABEL_VALUES_MS

(optional) TTL für den Loki-Label-Value-Cache. Standard 3600000 (1h).

GRAFANA_MCP_CACHE_TTL_SERVICE_MS

(optional) TTL für den {service → (ds_uid, label)}-Auflösungs-Cache. Standard 3600000 (1h).

Related MCP server: Log Analyzer MCP Server

Tools

Tool

Beschreibung

self_test

Diagnoseprüfung — Konnektivität, Version, Authentifizierung und Fähigkeitstests (list_datasources, proxy_uid, ds_query) mit Hinweisen, welche Argumente erforderlich sind

list_datasources

Alle konfigurierten Datenquellen auflisten

search_dashboards

Dashboards nach Abfrage/Tag/Typ durchsuchen

get_dashboard

Vollständiges JSON eines Dashboards per UID abrufen

extract_dashboard_queries

Panel-Abfragen (LogQL/PromQL) aus einem Dashboard extrahieren, mit datasource_uid. Verwenden, um Argumente für query_logs.raw_logql aus einer Dashboard-URL zu entdecken

list_log_datasources

Nur Log-Datenquellen auflisten (Loki, Elasticsearch, CloudWatch, OpenSearch, Splunk). Zwischengespeichert

list_services

Servicenamen auflisten, die aus Loki-Labels erkennbar sind — nützlich vor dem Aufruf von query_logs

query_logs

Logs für einen Service/Zeitbereich/Level abfragen. Erkennt automatisch die Log-Datenquelle und das Service-Label. Unterstützt raw_logql für Multi-Label/fortgeschrittene Selektoren. Fällt auf /api/ds/query zurück, wenn uid-proxy nicht verfügbar ist (Grafana <9.0). Ausgabemodus: raw / summarize / json

get_log_cache

Überprüfen, was aktuell zwischengespeichert ist (Log-Datenquellen, Labels, aufgelöste Services)

refresh_log_cache

Die Auflösung eines Services ungültig machen oder alle Einträge für die Grafana-Instanz löschen

export_log_cache

Log-Cache in eine JSON-Datei exportieren

import_log_cache

Log-Cache aus einer JSON-Datei importieren (zusammenführen/ersetzen)

Anwendungsbeispiel

Ein typischer Ablauf in natürlicher Sprache, orchestriert durch den MCP-Client:

  1. Benutzer: „Zeige mir Fehler-Logs vom api-Service der letzten 30 Minuten.“

  2. query_logs mit service: "api", level: "error", time_from: "now-30m" → der Server erkennt automatisch, welche Loki-Datenquelle das service="api"-Label besitzt und führt LogQL aus.

  3. (Erster Aufruf) die Service → Datenquelle/Label-Zuordnung wird im Cache gespeichert; nachfolgende Aufrufe überspringen den Erkennungsschritt.

  4. Benutzer: „Fasse diese Fehler nach Mustern zusammen.“ → derselbe Aufruf mit output: "summarize" gibt nach Mustern gruppierte Zählungen zurück.

  5. Benutzer: „Welche anderen Services haben wir?“ → list_services gibt die vollständige Serviceliste zurück.

Wenn der Servicename einen Tippfehler enthält, zeigt query_logs ähnliche Übereinstimmungen an (z. B. Meinten Sie: checkout, checkout-api?).

Funktionsweise der automatischen Erkennung

query_logs wählt die Zieldatenquelle und das Label selbstständig aus:

  1. Filtern aller Datenquellen auf Log-Typen (Loki/ES/CloudWatch/OpenSearch/Splunk).

  2. Für jede Loki-Datenquelle /loki/api/v1/labels abrufen und zuerst gängige Service-Label-Kandidaten (service, service_name, app, app_name, application, container, job) durchlaufen, dann alle verbleibenden Labels.

  3. Für jedes Kandidaten-Label dessen Werte abrufen und prüfen, ob der angeforderte service-Name in dieser Liste enthalten ist.

  4. Wenn genau ein (datasource, label)-Paar übereinstimmt, dieses verwenden. Wenn mehrere übereinstimmen, datasource_uid zur Disambiguierung anfordern. Wenn keine übereinstimmen, Vorschläge für ähnliche Namen zurückgeben.

  5. Die aufgelöste (service → ds_uid, label)-Zuordnung wird zwischengespeichert; refresh: true oder refresh_log_cache erzwingt eine erneute Erkennung.

Die automatische Erkennung unterstützt derzeit nur Loki. Für Elasticsearch / CloudWatch / Splunk-Datenquellen übergeben Sie datasource_uid und service_label explizit (und erwarten Sie nicht, dass LogQL-spezifische Filter angewendet werden).

Ausgabemodi

query_logs akzeptiert output:

  • raw (Standard): <ISO-Zeitstempel> <Log-Zeile> — gut zum direkten Lesen in einem Terminal.

  • summarize: gruppiert Zeilen nach normalisiertem Muster (Zahlen → N, UUIDs → UUID) mit Zählungen und einem Beispiel pro Muster. Verwenden, wenn Zeilen verrauscht oder zu zahlreich sind.

  • json: strukturierte Objekte { ts, line, labels } — für nachgelagerte Tools.

Cache

  • Log-Cache: persistent gespeichert unter ~/.grafana-mcp/log-cache.json. Mit der Grafana-Basis-URL als Schlüssel, damit mehrere Instanzen nicht kollidieren.

  • Jede Kategorie hat ihre eigene TTL (Datenquellen / Labels / Label-Werte / Service-Auflösung) — siehe die Tabelle der Umgebungsvariablen oben.

  • Eine zwischengespeicherte Service-Auflösung, die später fehlschlägt (z. B. Label wurde umbenannt), wird automatisch ungültig gemacht, sodass der nächste Aufruf eine erneute Erkennung durchführt.

  • Verwenden Sie get_log_cache zum Überprüfen, refresh_log_cache zum Löschen und export_log_cache / import_log_cache zum Teilen mit Teamkollegen.

Cache-Speicherort & Zurücksetzen

Cache

Speicherort

Zurücksetzen

Log-Cache

~/.grafana-mcp/log-cache.json

refresh_log_cache all=true aufrufen oder die Datei löschen

Die Cache-Datei ist ein einfaches JSON-Dokument — sicher zu überprüfen, zu bearbeiten oder manuell zu sichern.

Sicherheit & Einschränkungen

  • Schreibgeschützt: der Server stellt keinen Endpunkt bereit, der den Grafana-Zustand verändert. Kein Dashboard/Datenquellen-CRUD, keine Änderungen an Alarmen.

  • Stdio-Logs: alle Logs gehen an stderr, wodurch der MCP-stdio-Kanal sauber bleibt.

  • TLS-Überspringung: GRAFANA_TLS_SKIP_VERIFY=true setzt NODE_TLS_REJECT_UNAUTHORIZED=0 prozessweit. Nur für selbstsigniertes Grafana in vertrauenswürdigen Netzwerken verwenden.

  • Keine Protokollierung von Geheimnissen: Authentifizierungs-Token werden niemals in Audit-Logs geschrieben.

Lizenz

MIT

Related MCP Connectors

  • An MCP server giving access to Grafana dashboards, data and more.

  • The Grafbase MCP server sits in front of a GraphQL API and exposes an MCP protocol-compliant interface that allows AI agents and LLMs to explore and query GraphQL APIs using natural language. It provides tools to search schemas, introspect types and fields, and execute GraphQL queries while minimizing context bloat by returning only relevant schema subsets, with built-in support for authentication, authorization, and configurable access control.

  • The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.

  • The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A server that enables AI assistants to access and query Grafana dashboards, metrics, logs, and configurations through an MCP protocol interface.
    10
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for intelligent log analysis providing semantic search, error pattern clustering, and smart error detection. It enables users to process, vectorize, and query local logs to efficiently identify issues and generate AI-powered summaries.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables querying logs and metrics from Graylog, Prometheus, and InfluxDB 2.x. It provides tools for executing Lucene log searches, PromQL queries, and Flux queries directly within MCP-compatible clients.
    MIT