Chronosphere

Obtén logs, métricas, trazas y eventos de la plataforma de observabilidad Chronosphere.

Documentación

Servidor MCP de Chronosphere

Servidor MCP para Chronosphere. Proporciona herramientas para obtener logs, métricas, trazas, eventos, así como entidades seleccionadas.

Este proyecto utiliza semver para las versiones de lanzamiento. Aún no hemos llegado a la versión 1.0, por lo que pueden ocurrir cambios importantes en versiones menores.

Configuración de MCP con hosts populares (claude desktop, cursor)

Servidor remoto

La forma más fácil de usar el servidor MCP es mediante nuestro servidor remoto alojado:

Autenticación

Puedes usar un token de API de Chronosphere o OAuth con el servidor MCP de Chronosphere. Para usar MCP con OAuth, el cliente MCP debe ser compatible con OAuth.

El soporte de OAuth es nuevo y no ha sido probado con todos los clientes. Si no funciona para ti, por favor reporta el problema al soporte de Chronosphere en Slack con la siguiente información:

  1. El cliente MCP que estás usando (por ejemplo, VS code, codex, cursor, etc.)
  2. Los pasos que seguiste para intentar la autenticación
  3. El error que estás viendo.

Configuración basada en encabezados

Algunos hosts de MCP te permiten adjuntar encabezados HTTP personalizados a las solicitudes enviadas al servidor MCP. El servidor MCP de Chronosphere admite los siguientes encabezados orientados al usuario.

Deshabilitar herramientas (X-Chrono-MCP-Disable-Tools)

Usa este encabezado para ocultar herramientas específicas de la lista de herramientas expuesta a tu cliente MCP.

  • Formato: lista separada por comas de nombres de herramientas MCP (la columna Nombre de la herramienta en la tabla de Herramientas disponibles)
  • Valor de ejemplo: query_logs_range,render_prometheus_range_query
  • Notas: se ignoran los espacios en blanco; los nombres de herramientas desconocidos se ignoran

Cursor/VSCode

{
    "mcpServers": {
        "chronosphere": {
            "url": "https://<org name>.chronosphere.io/api/mcp/mcp",
            "headers": {
                "Authorization": "Bearer <chronosphere api token>",
                "X-Chrono-MCP-Disable-Tools": "<optional list of tools to disable>"
            }
        }
    }
}

Esta configuración debería funcionar para Cursor y VSCode. Omite la sección headers para usar OAuth en lugar de un token de API de Chronosphere. Elimina X-Chrono-MCP-Disable-Tools para exponer todas las herramientas.

Más detalles para VSCode aquí y Cursor aquí

Claude code

Agregar el servidor MCP de chronosphere a claude code

claude mcp add -t http \
  -H "Authorization: Bearer ${CHRONOSPHERE_API_TOKEN}" \
  -H "X-Chrono-MCP-Disable-Tools: <list of tools to disable>" \
  chronosphere "https://${CHRONOSPHERE_ORG_NAME}.chronosphere.io/api/mcp/mcp"

Puedes omitir el encabezado de Authorization si estás usando OAuth. Una vez que estés en claude, escribe /mcp y selecciona el servidor para iniciar sesión y activar el flujo de OAuth. Elimina el encabezado X-Chrono-MCP-Disable-Tools para exponer todas las herramientas.

Más detalles aquí

Codex CLI

experimental_use_rmcp_client = true
[mcp_servers.chronosphere]
url = "https://<org_name>.chronosphere.io/api/mcp/mcp"
bearer_token = "<chronosphere api token>"

Para el inicio de sesión con OAuth, debes habilitar experimental_use_rmcp_client = true y luego ejecutar codex mcp login chronosphere

Más detalles aquí

Gemini CLI

CHRONOSPHERE_ORG_NAME=<your org>
CHRONOSPHERE_API_TOKEN=<your api token>
gemini mcp add chronosphere "https://${CHRONOSPHERE_ORG_NAME}.chronosphere.io/api/mcp/mcp" \
  -H "Authorization: Bearer ${CHRONOSPHERE_API_TOKEN}" \
  -H "X-Chrono-MCP-Disable-Tools: <list of tools to disable>"

# Drop the -H authorization header option if you want to use OAuth.

Consulta la documentación de MCP de Gemini para obtener más información.

Compilación desde el código fuente

Primero compila el binario

make chronomcp
{
  "mcpServers": {
    "chronosphere-mcp": {
      "command": "<PATH/TO/REPO>/bin/chronomcp",
      "args": [
        "-c",
        "<PATH/TO/REPO>/config.yaml"
      ],
      "env": {
        "CHRONOSPHERE_ORG_NAME": "<your org here>",
        "CHRONOSPHERE_API_TOKEN": "<your api token here>"
      }
    }
  }
}

Desarrollo

Ejecutar el servidor

Autenticación en Chronosphere

Este servidor MCP utiliza los mismos métodos de autenticación que chronoctl. De forma predeterminada, el Makefile espera que el token de API esté almacenado en .chronosphere_api_token.

Ejecutar el servidor mcp

make run-chronomcp CHRONOSPHERE_ORG_NAME=<your org here> CHRONOSPHERE_API_TOKEN=<your api token here>

Depuración de herramientas MCP

El proyecto MCP proporciona un inspector útil para llamar directamente a las APIs de las herramientas. Para usarlo:

  1. Inicia el servidor MCP con transporte HTTP transmisible make run-chronomcp CONFIG_FILE=./config.http.yaml CHRONOSPHERE_ORG_NAME=<your org here>
  2. Ejecuta npx @modelcontextprotocol/inspector node build/index.js.
  3. Abre http://localhost:6274/#resources, completa http://0.0.0.0:8081/mcp en la URL, con el tipo de transporte Streamable HTTP.

Herramientas disponibles

GrupoNombre de la herramientaDescripción
configapiget_classic_dashboardObtener recurso de classic-dashboards
configapiget_dashboardObtener recurso de dashboards
configapiget_drop_ruleObtener recurso de drop-rules
configapiget_mapping_ruleObtener recurso de mapping-rules
configapiget_monitorObtener recurso de monitors
configapiget_notification_policyObtener recurso de notification-policies
configapiget_recording_ruleObtener recurso de recording-rules
configapiget_rollup_ruleObtener recurso de rollup-rules
configapiget_sloObtener recurso de slos
configapilist_classic_dashboardsListar recursos de classic-dashboards
configapilist_dashboardsListar recursos de dashboards
configapilist_drop_rulesListar recursos de drop-rules
configapilist_mapping_rulesListar recursos de mapping-rules
configapilist_monitorsListar recursos de monitors
configapilist_notification_policiesListar recursos de notification-policies
configapilist_recording_rulesListar recursos de recording-rules
configapilist_rollup_rulesListar recursos de rollup-rules
configapilist_slosListar recursos de slos
eventsget_events_metadataListar propiedades que puedes consultar en eventos
eventslist_eventsListar eventos de una consulta determinada
eventslist_events_label_valuesListar valores para un nombre de etiqueta determinado
logsget_logObtener un mensaje de log completo por su ID. El ID es el identificador único del log.
logsget_log_histogramObtener histograma de logs de una consulta determinada
logslist_log_field_namesListar nombres de campos de logs
logslist_log_field_valuesListar valores de campos de logs
logsquery_logs_rangeEjecutar una consulta de rango para logs. Este endpoint devuelve logs como timeSeries o gridData. Puede devolver una gran cantidad de datos, así que ten cuidado al poner el resultado de esta dirección en contexto. U...
metricslist_prometheus_label_namesDevuelve la lista de nombres de etiquetas (claves) disponibles en métricas que coinciden con los selectores dados. Usa esta herramienta cuando necesites descubrir qué etiquetas están disponibles en métricas o servicios específicos. Ejempl...
metricslist_prometheus_label_valuesDevuelve la lista de valores para un nombre de etiqueta específico, opcionalmente filtrado por selectores. Usa esta herramienta cuando conozcas el nombre de la etiqueta y quieras descubrir qué valores tiene en tus métricas. Comú...
metricslist_prometheus_seriesDevuelve la serie temporal completa (conjuntos completos de etiquetas con todos los pares clave-valor) que coinciden con los selectores dados. Cada resultado muestra la combinación exacta de etiquetas para una serie temporal activa. Usa esta herram...
metricslist_prometheus_series_metadata
metricsquery_prometheus_instantEvalúa una consulta instantánea de Prometheus en un solo punto en el tiempo
metricsquery_prometheus_rangeEjecuta una consulta PromQL de Prometheus en un rango de tiempo especificado y devuelve puntos de datos de series temporales como JSON. Admite sintaxis PromQL estándar más funciones personalizadas de Chronosphere: - cardinality_estimat...
metricsrender_prometheus_range_queryEvalúa una consulta de expresión de Prometheus en un rango de tiempo y la renderiza como una imagen PNG.
metric_usagelist_metric_usages_by_label_nameLista estadísticas de uso de métricas agrupadas por nombre de etiqueta. Usa esto para encontrar etiquetas no utilizadas o de alta cardinalidad que podrían eliminarse.
metric_usagelist_metric_usages_by_metric_nameLista estadísticas de uso de métricas agrupadas por nombre de métrica. Usa esto para encontrar métricas no utilizadas o subutilizadas que podrían eliminarse para reducir costos.
metric_usagelist_rule_evaluationsLista problemas de evaluación de reglas para monitores y reglas de grabación. Usa esto para identificar monitores o reglas de grabación que están fallando o tienen problemas.
monitorslist_monitor_statusesLista el estado actual de los monitores en Chronosphere. Devuelve estados de monitores con estados de alerta y detalles opcionales de señal y serie.
traceslist_tracesListar trazas de una consulta determinada

Nota: Para regenerar esta tabla después de actualizaciones de herramientas, ejecuta: make tools-gen && go run scripts/generate-tools-table.go

Lanzamientos

Usamos goreleaser para gestionar los lanzamientos.

Necesitarás un token de github y colocarlo en un archivo .github_release_token. El token necesita al menos los siguientes permisos

  • content: write
  • issues: write

Para crear un nuevo lanzamiento, primero crea una etiqueta:

git tag vX.Y.Z
git push origin vX.Y.Z

Luego ejecuta el siguiente comando para realizar una prueba en seco del lanzamiento:

```sh
make release-dry-run
# verify the release looks good, then run:
make release