Loki MCP

Depura e investiga problemas de aplicaciones usando IA y Grafana Loki

Documentación

Servidor Loki MCP

CI Release codecov Go Report Card License: MIT Stars MCP

loki-mcp-server MCP server

Consulta registros de Grafana Loki directamente desde agentes de IA usando el Protocolo de Contexto de Modelo (MCP).

Construido en Go. Permite análisis de registros impulsado por IA usando LogQL.

Soporta integración con:

  • Claude Desktop
  • Frameworks de agentes de IA
  • Herramientas de automatización
  • Flujos de trabajo de DevOps

Motivación

El grafana/loki-mcp oficial expone una única herramienta loki_query, lo que significa que el LLM ya debe conocer nombres y valores de etiquetas válidos antes de poder construir una consulta. Este proyecto adopta un enfoque diferente al proporcionar 5 herramientas granulares — labels, label_values y series permiten que el LLM descubra primero qué está disponible en Loki, y luego construya llamadas precisas de query_range o query. El resultado es una recuperación de registros más precisa con menos idas y vueltas desperdiciadas.

Además, este servidor aplica validación estricta de entrada (límites máximos, validación de dirección, comprobaciones de formato de nombres de etiquetas, autenticación mutuamente excluyente) para detectar errores tempranamente en lugar de reenviar solicitudes incorrectas a Loki.

Características

  • query_range — Ejecuta consultas de rango LogQL para obtener registros en un intervalo de tiempo
  • query — Ejecuta consultas instantáneas LogQL para evaluación en un punto en el tiempo
  • labels — Lista todos los nombres de etiquetas disponibles
  • label_values — Lista valores para una etiqueta específica
  • series — Encuentra series de flujos de registros activos que coincidan con un selector

Instalación

Homebrew

brew install incu6us/tap/loki-mcp-server

Instalación con Go

go install github.com/incu6us/loki-mcp-server/cmd/loki-mcp-server@latest

O compilar desde el código fuente:

git clone https://github.com/incu6us/loki-mcp-server.git
cd loki-mcp
go build -o loki-mcp-server ./cmd/loki-mcp-server

Configuración

El servidor se configura completamente mediante variables de entorno, inyectadas por el cliente MCP.

VariableRequeridaPredeterminadoDescripción
LOKI_URLsí—URL base de la instancia de Loki
LOKI_USERNAMEno—Nombre de usuario de autenticación básica
LOKI_PASSWORDno—Contraseña de autenticación básica
LOKI_BEARER_TOKENno—Autenticación con token Bearer
LOKI_TLS_SKIP_VERIFYnofalseOmitir verificación de certificado TLS
LOKI_TENANT_IDno—Cabecera X-Scope-OrgID para despliegues multiinquilino
LOKI_HTTP_TIMEOUTno30sTiempo de espera de solicitudes HTTP (duración Go, p. ej. 10s, 1m)
MCP_HTTP_ADDRno—Dirección de escucha para el transporte HTTP transmisible, p. ej. :8080. Sin definir significa stdio

Nota: La autenticación básica (LOKI_USERNAME/LOKI_PASSWORD) y el token Bearer (LOKI_BEARER_TOKEN) son mutuamente excluyentes.

Transportes

Por defecto, el servidor habla MCP sobre stdio, que es lo que esperan Claude Code, Claude Desktop y la mayoría de los clientes locales.

Establezca MCP_HTTP_ADDR para servir el transporte HTTP transmisible en su lugar, para ejecutar el servidor como un endpoint remoto detrás de un proxy o puerta de enlace:

LOKI_URL=http://loki:3100 MCP_HTTP_ADDR=:8080 loki-mcp-server
# MCP endpoint: http://localhost:8080/mcp

El modo HTTP no tiene estado, por lo que puede ejecutarse detrás de un balanceador de carga con varias réplicas. No lleva autenticación propia — colóquelo detrás de TLS y un proxy autenticador antes de exponerlo, y recuerde que quien alcance el endpoint puede leer cada línea de registro que las credenciales configuradas de LOKI_URL puedan ver.

Uso con Claude Code

Añada a su configuración MCP de Claude Code (~/.claude.json):

{
  "mcpServers": {
    "loki-mcp-server": {
      "type": "stdio",
      "command": "/path/to/loki-mcp-server",
      "args": [],
      "env": {
        "LOKI_URL": "http://loki:3100",
        "LOKI_USERNAME": "admin",
        "LOKI_PASSWORD": "secret"
      }
    }
  }
}

Uso con Claude Desktop

Añada a su configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS):

{
  "mcpServers": {
    "loki-mcp-server": {
      "type": "stdio",
      "command": "/path/to/loki-mcp-server",
      "args": [],
      "env": {
        "LOKI_URL": "http://loki:3100",
        "LOKI_USERNAME": "admin",
        "LOKI_PASSWORD": "secret"
      }
    }
  }
}

Herramientas

query_range

Ejecuta una consulta de rango LogQL contra Loki para obtener registros en un intervalo de tiempo.

ParámetroTipoRequeridoPredeterminadoDescripción
querystringsí—Expresión de consulta LogQL
startstringnohace 1 horaInicio del intervalo de tiempo (RFC3339 o Unix nano)
endstringnoahoraFin del intervalo de tiempo
limitnumberno100Máximo de entradas (máx. 5000)
directionstringnobackwardforward o backward

query

Ejecuta una consulta instantánea LogQL para evaluación en un punto en el tiempo.

ParámetroTipoRequeridoPredeterminadoDescripción
querystringsí—Expresión de consulta LogQL
limitnumberno100Máximo de entradas (máx. 5000)
timestringnoahoraMarca de tiempo de evaluación
directionstringnobackwardforward o backward

labels

Lista todos los nombres de etiquetas disponibles en Loki.

ParámetroTipoRequeridoPredeterminadoDescripción
startstringnohace 6 horasInicio del intervalo de tiempo
endstringnoahoraFin del intervalo de tiempo

label_values

Lista valores para una etiqueta específica.

ParámetroTipoRequeridoPredeterminadoDescripción
labelstringsí—Nombre de la etiqueta
startstringnohace 6 horasInicio del intervalo de tiempo
endstringnoahoraFin del intervalo de tiempo

series

Encuentra series de flujos de registros activos que coincidan con un selector.

ParámetroTipoRequeridoPredeterminadoDescripción
matchstringsí—Selector de flujo (p. ej. {app="nginx"})
startstringnohace 6 horasInicio del intervalo de tiempo
endstringnoahoraFin del intervalo de tiempo

Pila de Desarrollo Local

Se incluye una configuración de Docker Compose en deploy/ para levantar un entorno Loki completo para pruebas:

  • Loki — almacenamiento de registros en http://localhost:3100
  • Grafana — interfaz de usuario en http://localhost:3000 (admin anónimo, Loki preconfigurado como fuente de datos)
  • Promtail — recopila registros de contenedores y los envía a Loki
  • Generador de registros — emite registros JSON estructurados con aplicaciones aleatorias (nginx, api, gateway, auth, payments), niveles y mensajes
# Start the stack
docker compose -f deploy/docker-compose.yml up -d

# Use loki-mcp-server against local Loki
LOKI_URL=http://localhost:3100 loki-mcp-server

# Stop the stack
docker compose -f deploy/docker-compose.yml down

Desarrollo

# Run tests
go test ./...

# Build
go build -o loki-mcp-server ./cmd/loki-mcp-server

# Vet
go vet ./...

⭐ Si este proyecto le resulta útil, por favor dé una estrella al repositorio.