grafana-mcp
grafana-mcp
Expone una parte de la API de Grafana como un servidor MCP (Model Context Protocol), centrado en la consulta de registros en lenguaje natural. El objetivo principal: decir "muéstrame los registros de error del servicio api en los últimos 30 minutos" y obtener las líneas de registro reales, sin tener que gestionar LogQL, etiquetas o UID de fuentes de datos manualmente.
Las fuentes de datos de registro, las etiquetas de Loki y el mapeo de un nombre de servicio a su fuente de datos/etiqueta de alojamiento se almacenan en caché en el disco, por lo que las llamadas repetidas omiten escaneos de etiquetas redundantes.
Instalación y configuración
npx (no requiere instalación)
Añade lo siguiente a ~/.mcp.json.
{
"mcpServers": {
"grafana": {
"command": "npx",
"args": ["@seungje.jun/grafana-mcp"],
"env": {
"GRAFANA_URL": "https://grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxx"
}
}
}
}Construir desde el código fuente
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"
}
}
}
}Reinicia Claude Code para activar las herramientas MCP.
Autenticación
Se requiere una de las siguientes opciones. Se verifican en el orden que aparece a continuación: la primera que esté presente es la que se utiliza.
Variable | Cuándo usar |
| Grafana 9.1+ (recomendado) |
| Grafana Cloud |
| Claves de API heredadas (obsoletas en 10.x) |
| Respaldo de autenticación básica |
Todos los tokens de tipo bearer se envían como Authorization: Bearer <token>. Al servidor no le importa qué tipo de token sea, solo elige el que esté configurado.
Variables de entorno
Variable | Descripción |
| URL del servidor Grafana (modo de instancia única, requerido cuando |
| (opcional) Matriz JSON para el modo de instancias múltiples. Ejemplo: |
| (opcional) Se envía como encabezado |
| (opcional) |
| (opcional) Nivel de registro: |
| (opcional) Ruta del archivo de registro de auditoría. El valor predeterminado es |
| (opcional) Configúralo en |
| (opcional) Ruta del archivo de caché de registros. El valor predeterminado es |
| (opcional) TTL para la caché de la lista de fuentes de datos de registro. Predeterminado |
| (opcional) TTL para la caché de claves de etiquetas de Loki. Predeterminado |
| (opcional) TTL para la caché de valores de etiquetas de Loki. Predeterminado |
| (opcional) TTL para la caché de resolución |
Related MCP server: Log Analyzer MCP Server
Herramientas
Herramienta | Descripción |
| Verificación de diagnóstico: conectividad, versión, autenticación y pruebas de capacidad ( |
| Enumera todas las fuentes de datos configuradas |
| Busca paneles por consulta/etiqueta/tipo |
| Obtiene el JSON completo de un panel por uid |
| Extrae consultas de panel (LogQL/PromQL) de un panel, con |
| Enumera solo fuentes de datos de tipo registro (Loki, Elasticsearch, CloudWatch, OpenSearch, Splunk). Almacenado en caché |
| Enumera los nombres de servicio detectables desde las etiquetas de Loki: útil antes de llamar a |
| Consulta registros para un servicio/rango de tiempo/nivel. Detecta automáticamente la fuente de datos de registro y la etiqueta de servicio. Admite |
| Inspecciona lo que está actualmente en caché (fuentes de datos de registro, etiquetas, servicios resueltos) |
| Invalida la resolución de un servicio o borra todas las entradas para la instancia de Grafana |
| Exporta la caché de registros a un archivo JSON |
| Importa una caché de registros desde un archivo JSON (fusionar/reemplazar) |
Ejemplo de uso
Un flujo típico de lenguaje natural, orquestado por el cliente MCP:
Usuario: "Muéstrame los registros de error del servicio api en los últimos 30 minutos."
query_logsconservice: "api",level: "error",time_from: "now-30m"→ el servidor detecta automáticamente qué fuente de datos de Loki posee la etiquetaservice="api"y ejecuta LogQL.(Primera llamada) el mapeo de servicio → fuente de datos/etiqueta se guarda en la caché; las llamadas posteriores omiten el paso de detección.
Usuario: "Resume esos errores por patrón." → la misma llamada con
output: "summarize"devuelve recuentos agrupados por patrón.Usuario: "¿Qué otros servicios tenemos?" →
list_servicesdevuelve la lista completa de servicios.
Si el nombre del servicio tiene un error tipográfico, query_logs muestra coincidencias cercanas (p. ej., ¿Quisiste decir: checkout, checkout-api?).
Cómo funciona la detección automática
query_logs elige la fuente de datos y la etiqueta de destino por sí mismo:
Filtra todas las fuentes de datos hasta los tipos de registro (Loki/ES/CloudWatch/OpenSearch/Splunk).
Para cada fuente de datos de Loki, obtiene
/loki/api/v1/labelsy recorre los candidatos a etiquetas de servicio comunes (service,service_name,app,app_name,application,container,job) primero, luego cualquier etiqueta restante.Para cada etiqueta candidata, obtiene sus valores y verifica si el nombre del
servicesolicitado está en esa lista.Si coincide exactamente un par
(datasource, label), úsalo. Si coinciden varios, requieredatasource_uidpara desambiguar. Si ninguno coincide, devuelve sugerencias de nombres cercanos.El
(service → ds_uid, label)resuelto se almacena en caché;refresh: trueorefresh_log_cachefuerza la redetección.
La detección automática actualmente solo admite Loki. Para fuentes de datos de Elasticsearch / CloudWatch / Splunk, pasa datasource_uid y service_label explícitamente (y espera que los filtros específicos de LogQL no se apliquen).
Modos de salida
query_logs acepta output:
raw(predeterminado):<ISO timestamp> <log line>— bueno para lectura directa en una terminal.summarize: agrupa líneas por patrón normalizado (números →N, UUIDs →UUID) con recuentos y una muestra por patrón. Úsalo cuando las líneas sean ruidosas o demasiadas.json: objetos estructurados{ ts, line, labels }— para herramientas posteriores.
Caché
Caché de registros: persistida en
~/.grafana-mcp/log-cache.json. Clasificada por la URL base de Grafana para que las instancias múltiples no colisionen.Cada categoría tiene su propio TTL (fuentes de datos / etiquetas / valores de etiqueta / resolución de servicio) — consulta la tabla de variables de entorno anterior.
Una resolución de servicio en caché que falla más tarde (p. ej., la etiqueta fue renombrada) se invalida automáticamente para que la siguiente llamada vuelva a detectar.
Usa
get_log_cachepara inspeccionar,refresh_log_cachepara borrar, yexport_log_cache/import_log_cachepara compartir con compañeros de equipo.
Ubicación y restablecimiento de la caché
Caché | Ubicación | Restablecimiento |
Caché de registros |
| llama a |
El archivo de caché es un documento JSON simple: seguro para inspeccionar, editar o respaldar manualmente.
Seguridad y restricciones
Solo lectura: el servidor no expone ningún punto final que modifique el estado de Grafana. Sin CRUD de paneles/fuentes de datos, sin cambios de alertas.
Registros Stdio: todos los registros van a stderr, manteniendo limpio el canal stdio de MCP.
Omisión de TLS:
GRAFANA_TLS_SKIP_VERIFY=trueestableceNODE_TLS_REJECT_UNAUTHORIZED=0en todo el proceso. Úsalo solo para Grafana autofirmado en redes confiables.Sin registro de secretos: los tokens de autenticación nunca se escriben en los registros de auditoría.
Licencia
This server cannot be deployed
Maintenance
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
- AlicenseAqualityDmaintenanceA server that enables AI assistants to access and query Grafana dashboards, metrics, logs, and configurations through an MCP protocol interface.106MIT
- AlicenseNot gradedqualityDmaintenanceAn 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
- AlicenseNot gradedqualityCmaintenanceAn 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
- AlicenseAqualityCmaintenanceAn MCP server for querying Grafana Loki directly with a discovery-first workflow — labels, values, series, and LogQL queries without requiring Grafana.56MIT