Last9

oficial

Integra sin problemas el contexto de producción en tiempo real (logs, métricas y trazas) a tu entorno local para corregir código más rápido de forma automática.

¿Qué puedes hacer con Last9 MCP?

  • Investigar el estado del servicio — Solicite un resumen clasificado de la flota con conteos de solicitudes, rendimiento y tasas de error mediante get_service_summary.

  • Extraer registros de servicio sin procesar — Recupere líneas de registro filtradas por severidad o contenido del cuerpo para un servicio específico usando get_service_logs.

  • Trazar el rendimiento de la base de datos — Descubra bases de datos, consultas lentas y patrones de consulta con get_databases y herramientas relacionadas.

  • Ejecutar consultas PromQL — Ejecute consultas de rango o instantáneas sobre cualquier métrica usando prometheus_range_query o prometheus_instant_query.

  • Correlacionar cambios con incidentes — Obtenga eventos de implementación y cambios de configuración para entender qué alteró el comportamiento de producción mediante get_change_events.

  • Gestionar paneles personalizados — Liste, cree, actualice o valide paneles programáticamente con list_dashboards y create_dashboard.

Documentación

Servidor MCP de Last9

last9 mcp demo

Tu agente de IA no sabe qué está fallando en producción. Esto lo soluciona.

Servidor MCP de Last9 conecta Claude, Cursor, Windsurf y cualquier otro asistente de IA compatible con MCP directamente a tus datos de observabilidad en producción: logs, métricas, trazas, excepciones, consultas de base de datos, alertas y despliegues. El agente deja de adivinar y empieza a leer la señal real.


Comienza en 30 segundos (Alojado)

Sin binario que instalar. Sin tokens que gestionar. Una URL, OAuth en tu navegador, listo.

Encuentra el slug de tu organización en tu URL de Last9: app.last9.io/<org_slug>/...

Claude Code

claude mcp add --transport http last9 https://app.last9.io/api/v4/organizations/<org_slug>/mcp

Escribe /mcp, selecciona last9, autentícate. Eso es todo.

Cursor

Configuración > MCP > Añadir nuevo servidor MCP:

{
  "mcpServers": {
    "last9": {
      "type": "http",
      "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Haz clic en Conectar, completa OAuth.

VS Code

Requiere v1.99+. Abre la Paleta de Comandos → MCP: Añadir servidor, pega la URL, autentícate.

O directamente en settings.json:

{
  "mcp": {
    "servers": {
      "last9": {
        "type": "http",
        "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
      }
    }
  }
}

Windsurf

Configuración > Cascade > Abrir MCP Marketplace > icono de engranaje (mcp_config.json):

{
  "mcpServers": {
    "last9": {
      "serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Claude Web/Desktop

Configuración > Conectores > Añadir conector personalizado. Nómbralo last9, pega la URL, autentícate.

Requiere acceso de administrador a tu organización de Claude.


Autoalojado (STDIO)

Úsalo cuando tu cliente MCP no admita transporte HTTP, o cuando necesites el servidor ejecutándose localmente.

Instalación

Homebrew:

brew install last9/tap/last9-mcp

NPM:

npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest

Lanzamientos binarios (Windows / manual):

Descarga desde Lanzamientos de GitHub:

PlataformaArchivo
Windows (x64)last9-mcp-server_Windows_x86_64.zip
Windows (ARM64)last9-mcp-server_Windows_arm64.zip
Linux (x64)last9-mcp-server_Linux_x86_64.tar.gz
Linux (ARM64)last9-mcp-server_Linux_arm64.tar.gz
macOS (x64)last9-mcp-server_Darwin_x86_64.tar.gz
macOS (ARM64)last9-mcp-server_Darwin_arm64.tar.gz

Obtener un token de actualización

Solo los administradores pueden crear tokens.

  1. Ve a Acceso a la API
  2. Haz clic en Generar token con permisos de escritura
  3. Cópialo

Configuración del cliente

Homebrew:

{
  "mcpServers": {
    "last9": {
      "command": "/opt/homebrew/bin/last9-mcp",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

NPM:

{
  "mcpServers": {
    "last9": {
      "command": "npx",
      "args": ["-y", "@last9/mcp-server@latest"],
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

Dónde pegar esto:

ClienteUbicación
Claude Web/DesktopConfiguración > Desarrollador > Editar configuración (claude_desktop_config.json)
CursorConfiguración > Configuración de Cursor > MCP > Añadir nuevo servidor MCP global
WindsurfConfiguración > Cascade > MCP Marketplace > icono de engranaje (mcp_config.json)
VS CodeEnvuelve en { "mcp": { "servers": { ... } } } en settings.json — detalles
Configuración STDIO de VS Code
{
  "mcp": {
    "servers": {
      "last9": {
        "type": "stdio",
        "command": "/opt/homebrew/bin/last9-mcp",
        "env": {
          "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
        }
      }
    }
  }
}

Para NPM: usa "command": "npx" y añade "args": ["-y", "@last9/mcp-server@latest"].

Windows

Después de descargar desde Lanzamientos de GitHub, extrae y apunta a la ruta completa:

{
  "mcpServers": {
    "last9": {
      "command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

La ruta de NPM es más fácil en Windows: sin gestión de rutas.

Variables de entorno

VariablePredeterminadoDescripción
LAST9_REFRESH_TOKEN(obligatorio)Token de actualización desde Acceso a la API
LAST9_DATASOURCEpredeterminado de la orgNombre del datasource/clúster: útil cuando tienes varios clústeres de Levitate
LAST9_API_HOSTapp.last9.ioAnula el host de la API
LAST9_TOOLSETStodas las herramientasConjuntos de herramientas separados por comas para exponer (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all). Alias: LAST9_MCP_TOOLSETS
LAST9_MAX_GET_LOGS_ENTRIES5000Máximo de entradas para solicitudes fragmentadas de get_logs
LAST9_USE_LOG_SEARCH_APIfalseEstablece true para responder get_logs y get_service_logs con una sola llamada de búsqueda del lado del servidor en lugar de fragmentación del lado del cliente
LAST9_DEBUG_CHUNKINGfalseEstablece true para registrar los detalles de planificación de fragmentos para get_logs, get_service_logs, get_traces
LAST9_DISABLE_TELEMETRYtrueEstablece false para habilitar el rastreo OTel interno
OTEL_SDK_DISABLED—Variable de entorno OTel estándar. Anula LAST9_DISABLE_TELEMETRY
OTEL_EXPORTER_OTLP_ENDPOINT—Endpoint del colector OTLP (solo cuando la telemetría está habilitada)
OTEL_EXPORTER_OTLP_HEADERS—Cabeceras de autenticación OTLP (solo cuando la telemetría está habilitada)

Qué puede hacer

Salud del servicio

  • get_service_summary — Filas clasificadas de (service, env) de la flota: request_count del intervalo, throughput_rpm, recuentos de HTTP 4xx/5xx y recuentos de errores gRPC
  • get_service_environments — Entornos disponibles para tus servicios. Ejecuta esto primero: otras herramientas de APM necesitan env de aquí
  • get_service_performance_details — Desglose completo: throughput, tasa de error, p50/p90/p95/avg/max, apdex, disponibilidad
  • get_service_operations_summary — Operaciones agrupadas por endpoints HTTP, llamadas a BD, mensajería, clientes HTTP
  • get_service_dependency_graph — Mapa de dependencias con throughput, latencia y tasas de error para upstream/downstream/infra
  • get_apm_service_deviations — Compara una ventana actual contra una línea base de duración igual: regresiones/mejoras, reconciliación de Apdex y un resultado terminal (flota o servicio único)
  • get_exceptions — Excepciones del lado del servidor con filtros de servicio y span

Observabilidad de bases de datos

Cuatro herramientas que van directamente al rendimiento de tu base de datos, derivadas de spans de trazas de OpenTelemetry y, donde no hay trazas, de métricas de infraestructura como CloudWatch. No se necesita instrumentación adicional si ya usas OTel.

  • get_databases — Descubre todas las bases de datos en tu infraestructura: tipo de BD, host, throughput (consultas/min), latencia p95, tasa de error, número de servicios dependientes. También descubre bases de datos desde métricas de infraestructura como CloudWatch, sin necesidad de instrumentación de trazas: esas filas llevan un valor de actividad en lugar de métricas de trazas
  • get_database_slow_queries — Las ejecuciones de consultas más lentas reales, ordenadas por duración, con IDs de traza para profundizar en trazas completas
  • get_database_queries — Patrones y agregados de consultas: con qué frecuencia se ejecuta una consulta, duración promedio/p95, tasa de error
  • get_database_server_metrics — Métricas del lado del servidor del propio host de BD (CPU, conexiones, tasas de acierto de buffer: depende de tu sistema de BD)

Admite PostgreSQL, MySQL, MongoDB, Redis, Aerospike y cualquier otra cosa que OTel trace con un atributo db_system — además de bases de datos descubiertas desde métricas de infraestructura como CloudWatch, cuyas filas llevan un valor de actividad en lugar de métricas de trazas.

Prometheus / PromQL

  • prometheus_range_query — Consultas de rango PromQL sobre cualquier métrica
  • prometheus_instant_query — Consultas instantáneas; usa funciones de rollup como avg_over_time, sum_over_time
  • prometheus_label_values — Valores de etiqueta para una serie dada
  • prometheus_labels — Todas las etiquetas disponibles para una serie

Apúntalos a un datasource/clúster diferente del predeterminado configurando LAST9_DATASOURCE.

Logs

  • get_logs — Consultas completas de logs de pipeline JSON (agregaciones, filtros, extracción de campos)
  • get_service_logs — Líneas de log sin procesar para un servicio, filtrables por severidad y contenido del cuerpo
  • get_log_attributes — Catálogo global de atributos en el esquema de logs para una ventana de tiempo
  • get_log_attributes_for_pipeline — Campos de log realmente presentes para un pipeline en curso (descubrimiento con alcance), cada uno con su filter_field exacto
  • get_drop_rules — Reglas de descarte de logs desde Plano de control de Last9
  • add_drop_rule — Crea una nueva regla de descarte para reducir el volumen de logs en el origen

Trazas

  • get_traces — Consultas de trazas de pipeline JSON para búsquedas amplias y agregaciones
  • get_service_traces — Trazas por ID de traza exacto o nombre de servicio. Úsalo cuando tengas un ID de traza: es más rápido
  • get_trace_attributes — Catálogo global de atributos en el esquema de trazas
  • get_trace_attributes_for_pipeline — Atributos realmente presentes para un pipeline en curso (descubrimiento con alcance), cada uno con su filter_field exacto
  • get_trace_attribute_values — Valores distintos para un atributo de traza, opcionalmente con alcance a un pipeline
  • get_trace_attribute_deviations — Clasifica valores de atributos que difieren entre dos cohortes de spans acotadas (lento vs rápido, error vs no error, o dos ventanas de tiempo). Correlación, no causa
  • get_trace_waterfall — Una traza exacta como cascada padre/hijo con tiempo propio de unión de intervalos, spans más lentos y advertencias de grafo

Eventos de cambio y alertas

  • get_change_events — Despliegues, cambios de configuración, reversiones. Correlaciona incidentes con lo que cambió
  • get_alert_groups — Grupos de alertas de Compass configurados con metadatos, etiquetas, equipo, nivel y recuentos de reglas — incluidos grupos con cero reglas y grupos que no están disparando
  • get_alert_config — Configuraciones de reglas de alerta: buscables por nombre, severidad, tipo, etiquetas
  • get_alerts — Alertas disparándose actualmente dentro de una ventana de tiempo
  • get_alert_rule_state — Estado histórico de disparo (1/0) por regla de alerta en un rango de tiempo, agrupado por rule_id. Filtrable por grupo de alertas, nombre de regla, filtros de etiqueta y estado.
  • get_notification_channels — Canales de notificación configurados (Slack, PagerDuty, correo electrónico, etc.)

Paneles personalizados

  • list_dashboards — Todos los paneles personalizados en tu organización: IDs, nombres y metadatos
  • get_dashboard — Definición completa del panel por ID, incluidos paneles y consultas
  • validate_dashboard — Lint de solo lectura + ejecución + clasificación para un ID de panel guardado o un dashboard_definition en línea sobre una ventana de ≤24 h. Nunca crea ni actualiza paneles
  • create_dashboard — Crea un panel personalizado completamente nuevo una vez (paneles, consultas, metadatos). Después de que se devuelva el ID, refina con update_dashboard.
  • update_dashboard — Refina un panel existente por ID (reemplazo completo; los paneles de sistema de solo lectura devuelven un error)
  • delete_dashboard — Elimina un panel personalizado por ID
  • list_dashboard_snapshots — Instantáneas congeladas en un punto en el tiempo para un panel (solo metadatos)
  • get_dashboard_snapshot — Instantánea congelada completa incluidos los datos de los paneles para RCA / vistas compartibles
  • delete_dashboard_snapshot — Elimina una instantánea congelada por ID

Perfilado continuo

Requiere perfilado continuo habilitado para la organización. Descubre servicios primero con get_profile_services, luego extrae un flamegraph o funciones clasificadas.

  • get_profile_services — Servicios que tienen datos de perfilado en la ventana (índice antes de consultar)
  • get_flamegraph — Árbol flamegraph anidado para un servicio (cpu predeterminado; también alloc, wall)
  • get_top_functions — Clasificación de auto-muestras de las funciones más activas para un servicio
  • get_profile_summary — Triage breve en lenguaje natural del perfil para un servicio

Paneles de Grafana

Herramientas de solo lectura contra la instancia de Grafana de la organización (a través del proxy de Grafana de Last9). Los campos de credenciales nunca se devuelven al modelo. Habilita con LAST9_TOOLSETS=grafana (o deja los conjuntos de herramientas sin configurar para todas las herramientas).

  • grafana_search_dashboards — Busca paneles por subcadena en el título (paginado; truncated: true cuando se alcanza el límite)
  • grafana_get_dashboard — Resumen del panel por uid (paneles, variables, objetivos PromQL); full_json=true para el JSON crudo de Grafana
  • grafana_list_folders — Árbol de carpetas
  • grafana_list_folder_dashboards — Paneles en una carpeta (paginado)
  • grafana_list_datasources — Inventario de fuentes de datos sin credenciales

Resolución difusa de nombres

  • did_you_mean — Cuando el agente no está seguro sobre un nombre de entidad, esto devuelve las coincidencias más cercanas de tu catálogo (servicios, entornos, hosts, bases de datos, despliegues/namespaces de K8s, trabajos). Hasta 3 sugerencias con puntuaciones de similitud. El servidor llama a esto automáticamente antes de la mayoría de las herramientas cuando una búsqueda de nombre devuelve vacío.

Perfil de servicio

  • get_service_profile — Cómo se ve realmente la telemetría de un servicio, antes de consultarlo: qué señales existen, lenguaje y runtime, entornos de despliegue, la forma de sus logs, y una corrección de ingesta recomendada cuando corresponde. Permite al agente omitir herramientas de trazas cuando un servicio no tiene trazas, y analizar la severidad desde el cuerpo del log cuando SeverityText está vacío en lugar de filtrar por ello y no encontrar nada.

Cómo funciona

Enlaces profundos en cada respuesta. Cada herramienta devuelve un campo deep_link — una URL directa al panel de Last9 para esa consulta exacta y rango de tiempo. El agente puede darte el enlace; haces clic; estás allí.

Conjuntos de herramientas. Por defecto, el servidor expone todas las herramientas. Los hosts de automatización que solo necesitan investigación (logs/trazas/métricas/perfiles) pueden configurar LAST9_TOOLSETS=investigate (o pasar --toolsets=investigate) para que tools/list se mantenga pequeño sin deshabilitar masivamente desde el cliente. Paquetes con nombre: logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all. Los nombres desconocidos fallan rápidamente. El paquete metrics solo no incluye list_datasources ni did_you_mean — usa investigate (o combina conjuntos de herramientas) cuando necesites esos ayudantes de descubrimiento.

Recursos de referencia de herramientas. Los manuales largos de logjson/tracejson/service-logs/metrics son recursos MCP (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics, last9://reference/investigation), no texto de descripción de herramientas siempre activo. Las reglas críticas de consulta permanecen en la descripción de la herramienta para que los agentes que nunca llaman a resources/read aún reciban orientación correcta de construcción. Descubre campos específicos de la organización con get_log_attributes / get_log_attributes_for_pipeline (y los equivalentes de trazas)—no se inyectan en las descripciones.

Resultados grandes fragmentados. get_logs y get_traces manejan grandes conjuntos de resultados mediante fragmentación en lugar de truncamiento. El límite predeterminado es 5000 entradas para logs; configurable mediante LAST9_MAX_GET_LOGS_ENTRIES.


Desarrollo

Modo HTTP, pruebas con curl, compilación desde el código fuente

Ejecutar en modo HTTP

export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server

El servidor se inicia en http://localhost:8080/mcp.

Probar con curl

El manejador HTTP Streamable se ejecuta en modo sin estado, por lo que cualquier solicitud se atiende de forma independiente. Un handshake initialize y un encabezado Mcp-Session-Id son opcionales — los clientes que los envían aún funcionan (el encabezado se acepta e ignora), y los clientes también pueden saltar directamente a tools/list / tools/call. Cada herramienta es una consulta independiente de solicitud/respuesta; el servidor no emite notificaciones de servidor→cliente, por lo que GET /mcp (el flujo SSE) devuelve 405.

# List tools — a session handshake is optional in stateless mode
curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'

# Call a tool
curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "get_service_logs",
        "arguments": {
          "service_name": "your-service-name",
          "lookback_minutes": 30,
          "limit": 10
        }
      }
    }'

Compilar desde el código fuente

git clone https://github.com/last9/last9-mcp-server.git
cd last9-mcp-server
go build -o last9-mcp-server
LAST9_HTTP=true ./last9-mcp-server

LAST9_HTTP=true es para desarrollo local. Para uso real, el endpoint HTTP alojado es más fácil.


Referencia de herramientas

Todos los parámetros, estándares de entrada de tiempo y detalles

Entrada de tiempo

  • Los tiempos absolutos (start_time_iso/end_time_iso, o time_iso) tienen prioridad sobre lookback_minutes.
  • Para ventanas relativas: usa lookback_minutes.
  • Para ventanas absolutas: usa RFC3339/ISO8601 — 2026-02-09T15:04:05Z.
  • El YYYY-MM-DD HH:MM:SS heredado se acepta solo por compatibilidad.

get_exceptions

  • limit (entero, opcional): Máximo de excepciones. Predeterminado: 20.
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • start_time_iso / end_time_iso (cadena, opcional): Rango de tiempo absoluto.
  • service_name (cadena, opcional): Filtrar por servicio.
  • span_name (cadena, opcional): Filtrar por nombre de span.
  • env (cadena, opcional): Filtrar por entorno.

get_service_summary

  • start_time_iso / end_time_iso (cadena, opcional)
  • env (cadena, opcional): Regex PromQL. Predeterminado a .*. La coincidencia exacta necesita anclas (p. ej. ^prod$).
  • sort_by (cadena, opcional): request_count (predeterminado), throughput_rpm, http_4xx_count, http_5xx_count o grpc_error_count.
  • limit (entero, opcional): Máximo de filas clasificadas. Omitir o 0 significa 10; valores superiores a 100 se limitan a 100.

get_service_environments

  • start_time_iso / end_time_iso (cadena, opcional)

Todas las demás herramientas APM requieren un valor env. Usa "" si esto devuelve vacío.

get_service_performance_details

  • service_name (cadena, obligatorio)
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • start_time_iso / end_time_iso (cadena, opcional)
  • env (cadena, opcional): Predeterminado a prod.

get_service_operations_summary

  • service_name (cadena, obligatorio)
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • start_time_iso / end_time_iso (cadena, opcional)
  • env (cadena, opcional): Predeterminado a prod.

get_service_dependency_graph

  • service_name (cadena, opcional)
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • start_time_iso / end_time_iso (cadena, opcional)
  • env (cadena, opcional): Predeterminado a prod.

get_apm_service_deviations

  • service_name (cadena, opcional): Omitir para alcance de flota; proporcionar para un servicio y sus correlaciones de operaciones.
  • lookback_minutes (entero, opcional): Ventana actual. Predeterminado: 60.
  • start_time_iso / end_time_iso (cadena, opcional): Ventana actual explícita.
  • baseline_start_time_iso / baseline_end_time_iso (cadena, opcional): Línea base explícita. Predeterminado a la ventana inmediatamente anterior de igual duración.
  • datasource (cadena, opcional): Restringir la comparación a una fuente de datos.
  • env (cadena, opcional): Predeterminado a prod.
  • max_services / max_operations (entero, opcional): Predeterminado 10, máximo 10 cada uno.

get_databases

  • env (cadena, opcional): Filtrar por entorno. Acepta una expresión regular. Predeterminado: todos.
  • lookback_minutes (entero, opcional): Predeterminado: 60. La ventana no puede exceder 7 días.
  • start_time_iso / end_time_iso (cadena, opcional)

get_database_slow_queries

  • db_system (cadena, opcional): p. ej. postgresql, mysql, mongodb, redis.
  • host (cadena, opcional): Host de base de datos (net_peer_name).
  • service_name (cadena, opcional): Nombre del servicio que llama.
  • env (cadena, opcional)
  • min_duration_ms (flotante, opcional): Duración mínima de consulta en ms.
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • start_time_iso / end_time_iso (cadena, opcional)
  • limit (entero, opcional): Predeterminado: 20.

get_database_queries

  • db_system (cadena, opcional)
  • host (cadena, opcional)
  • service_name (cadena, opcional)
  • env (cadena, opcional)
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • start_time_iso / end_time_iso (cadena, opcional)
  • limit (entero, opcional): Predeterminado: 20.

get_database_server_metrics

  • db_system (cadena, obligatorio): p. ej. postgresql, mysql, mongodb, redis, aerospike.
  • host (cadena, opcional)
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • start_time_iso / end_time_iso (cadena, opcional)

prometheus_range_query

  • query (cadena, obligatorio): La consulta PromQL.
  • start_time_iso / end_time_iso (cadena, opcional): Predeterminado a los últimos 60 min.
  • lookback_minutes (flotante, opcional): Predeterminado: 60.

prometheus_instant_query

  • query (cadena, obligatorio)
  • time_iso (cadena, opcional): Predeterminado a ahora.
  • lookback_minutes (flotante, opcional)

prometheus_label_values

  • match_query (cadena, opcional): Filtro PromQL.
  • label (cadena, obligatorio): Nombre de la etiqueta.
  • start_time_iso / end_time_iso (cadena, opcional)

prometheus_labels

  • match_query (cadena, opcional): Filtro PromQL.
  • start_time_iso / end_time_iso (cadena, opcional)

get_logs

  • logjson_query (array, obligatorio): Consulta de pipeline JSON.
  • lookback_minutes (entero, opcional): Predeterminado: 5.
  • start_time_iso / end_time_iso (cadena, opcional)
  • limit (entero, opcional): Predeterminado del servidor: 5000.
  • index (cadena, opcional): physical_index:<name> o rehydration_index:<block_name>.

Para inventario de servicios basado en logs, consulta physical_index_service_count primero:

sum by (name, service_name, env) (physical_index_service_count{destination="logs"})

Usa service_name como ServiceName, env como el entorno cuando esté presente, y name como el nombre del índice físico. Si name="default", omite index; para un índice físico no predeterminado seleccionado por el usuario, pasa index: "physical_index:<name>". Si el backend rechaza el filtrado explícito de índice físico, reintenta sin index e informa que el filtrado explícito de índice físico no está disponible para ese backend.

get_service_logs

  • service_name (cadena, obligatorio)
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • limit (entero, opcional): Predeterminado: 20.
  • env (cadena, opcional)
  • severity_filters (array, opcional): p. ej. ["error", "warn"]. Lógica OR.
  • body_filters (array, opcional): p. ej. ["timeout", "failed"]. Lógica OR.
  • start_time_iso / end_time_iso (cadena, opcional)
  • index (cadena, opcional)

Múltiples tipos de filtro se combinan con AND. Cada array usa OR internamente. Usa get_logs para conteos agregados amplios primero; usa get_service_logs solo después de reducir a un servicio/entorno/índice y un conjunto de muestra pequeño.

get_log_attributes

  • lookback_minutes (entero, opcional): Predeterminado: 15.
  • start_time_iso / end_time_iso (cadena, opcional)
  • region (cadena, opcional)
  • index (cadena, opcional)

get_log_attributes_for_pipeline

  • pipeline (array, obligatorio): Etapas de filtro previas para limitar el descubrimiento, p. ej. [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (entero, opcional): Predeterminado: 15.
  • start_time_iso / end_time_iso (cadena, opcional)
  • region (cadena, opcional)
  • index (cadena, opcional)

get_drop_rules

Sin parámetros. Lista reglas de descarte mediante GET /otel_settings/drop?region=....

add_drop_rule

  • name (cadena, obligatorio)
  • filters (array, obligatorio): Cada filtro: key, value, operator (equals/not_equals), conjunction (and).
  • Las claves de filtro deben usar attributes["key_name"] o resource.attributes["key_name"] (requerido por la API de Last9).
  • Crea la regla mediante POST /otel_settings/drop?region=...&cluster_id=....

get_traces

Usa para búsquedas amplias y agregaciones. Para búsqueda exacta de ID de traza, usa get_service_traces.

  • tracejson_query (array, obligatorio)
  • start_time_iso / end_time_iso (cadena, opcional)
  • lookback_minutes (entero, opcional): Predeterminado: 60.
  • limit (entero, opcional): Predeterminado: 5000.

get_service_traces

Exactamente uno de trace_id o service_name es obligatorio.

  • trace_id (string, opcional): Retroceso predeterminado: 72 horas.
  • service_name (string, opcional): Retroceso predeterminado: 60 min.
  • lookback_minutes (integer, opcional)
  • start_time_iso / end_time_iso (string, opcional)
  • limit (integer, opcional): Predeterminado: 10.
  • env (string, opcional)

get_trace_attributes

  • lookback_minutes (integer, opcional): Predeterminado: 15.
  • start_time_iso / end_time_iso (string, opcional)
  • region (string, opcional)

get_trace_attributes_for_pipeline

  • pipeline (array, obligatorio): Etapas de filtro previas para delimitar el descubrimiento, p. ej. [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (integer, opcional): Predeterminado: 15.
  • start_time_iso / end_time_iso (string, opcional)
  • region (string, opcional)

get_trace_attribute_values

  • tag_name (string, obligatorio): Nombre del atributo de get_trace_attributes (p. ej. resource_department o attributes['http.method']).
  • pipeline (array, opcional): Etapas de filtro previas para delimitar los valores; omitir para valores globales.
  • lookback_minutes (integer, opcional): Predeterminado: 15.
  • start_time_iso / end_time_iso (string, opcional): Límites históricos RFC3339; tienen prioridad sobre lookback_minutes.
  • region (string, opcional)

get_trace_attribute_deviations

  • comparison_mode (string, obligatorio): latency, errors o time.
  • service_name (string, obligatorio)
  • environment (string, obligatorio): Valor exacto de deployment.environment.
  • operation (string, opcional)
  • filters (array, opcional): Condiciones de filtro JSON de trazas.
  • candidate_attributes (array, opcional): Máximo 8; omitir para descubrimiento acotado.
  • latency_threshold_ms (number, opcional): Obligatorio para el modo latency; rechazado para otros modos.
  • start_time_iso / end_time_iso (string, opcional)
  • lookback_minutes (integer, opcional): Predeterminado: 15. Máximo: 15.
  • baseline_start_time_iso / baseline_end_time_iso (string, opcional): Obligatorio para el modo time; no superpuestos y de duración igual a la ventana objetivo.
  • minimum_cohort_size (integer, opcional): Predeterminado: 100. Mínimo: 20.
  • minimum_value_support (integer, opcional): Predeterminado: 20. Mínimo: 10.
  • limit (integer, opcional): Predeterminado: 10. Máximo: 10.

Requiere que la capacidad del backend complementario esté habilitada.

get_trace_waterfall

  • trace_id (string, obligatorio)
  • environment (string, opcional)
  • start_time_iso / end_time_iso (string, opcional)
  • lookback_minutes (integer, opcional): Predeterminado: 4320 (72 horas).
  • selected_span_id (string, opcional): Devuelve atributos, eventos y enlaces solo para ese tramo.
  • max_spans (integer, opcional): Predeterminado: 500. Máximo: 1000.

Devuelve un envoltorio investigation-evidence/v1; la cascada está bajo data.

get_change_events

  • start_time_iso / end_time_iso (string, opcional)
  • lookback_minutes (integer, opcional): Predeterminado: 60.
  • service_name (string, opcional)
  • env (string, opcional)
  • event_name (string, opcional): Llame sin esto primero para obtener available_event_names.

get_alert_groups

Inventario configurado de grupos de alertas de Compass para auditorías de tablero de cambios / cobertura de etiquetas. Incluye grupos con cero reglas y grupos que no están disparando. No devuelve PromQL.

  • alert_group_name / alert_group_type / data_source_name (string, opcional): Coincidencia de subcadena sin distinción de mayúsculas.
  • team / tier (string, opcional): Coincidencia exacta sin distinción de mayúsculas en metadatos configurados.
  • label_key + label_value (string, opcional): Deben establecerse juntos. Coincidencia exacta sin distinción de mayúsculas en un par metadata.labels — tanto clave como valor.

Devuelve JSON compacto {"count":N,"groups":[...]} con id, name, type, entity_class, team, tier, metadata.labels y recuentos de reglas. team / labels vacíos significa no establecido.

get_alert_config

  • search_term (string, opcional): Búsqueda de texto libre en nombre, grupo, fuente de datos, etiquetas.
  • rule_name (string, opcional)
  • severity (string, opcional)
  • rule_type (string, opcional): static o anomaly.
  • alert_group_name / alert_group_type / data_source_name (string, opcional)
  • tags (array, opcional): Todos deben coincidir (lógica Y).

get_alerts

  • time_iso (string, opcional): Hora de evaluación en RFC3339.
  • window (integer, opcional): Retroceso en segundos. Predeterminado: 900. Rango: 60–86400.
  • lookback_minutes (integer, opcional): Rango: 1–1440.

get_alert_rule_state

  • start_time (integer, obligatorio): Inicio del rango en época Unix (inclusive).
  • end_time (integer, obligatorio): Fin del rango en época Unix (inclusive).
  • step (integer, obligatorio): Resolución en segundos entre muestras. El número de muestras ((end_time - start_time) / step + 1) está limitado a 100.
  • alert_group_id (string, opcional): Filtrar por ID de grupo de alertas.
  • rule_name (string, opcional): Filtro de expresión regular en el nombre de la regla.
  • alert_group_name (string, opcional): Filtro de expresión regular en el nombre del grupo de alertas.
  • label_filters (string, opcional): Filtros de etiquetas key=value separados por comas.
  • state (string, opcional): Filtrar por estado (p. ej. firing).

Devuelve un mapa JSON de rule_id -> [{timestamp, is_firing}]. Una marca de tiempo en la que una regla está ausente de la respuesta ascendente se informa como is_firing=0 — esto significa "no observado como disparando", no un estado normal confirmado.

get_notification_channels

Sin parámetros. Devuelve todos los canales de notificación configurados (Slack, PagerDuty, correo electrónico, webhooks, etc.).

did_you_mean

  • query (string, obligatorio): El nombre a buscar — parcial, mal escrito o abreviado.
  • type (string, opcional): Restringir al tipo de entidad: service, environment, host, database, k8s_deployment, k8s_namespace, job.

Devuelve hasta 3 coincidencias más cercanas con puntuaciones de similitud. Úselo antes de cualquier llamada a herramienta donde el nombre de la entidad sea incierto. Si una llamada anterior devolvió resultados vacíos, intente esto antes de reintentar.

get_service_profile

  • service_name (string, obligatorio): Servicio para derivar un perfil de telemetría.
  • datasource (string, opcional): Nombre de la fuente de datos. Omitir para la predeterminada.

Devuelve un breve informe de investigación seguido del perfil completo como JSON sin procesar: presencia de señales (logs/traces/metrics como present, absent o unknown), lenguaje y tiempo de ejecución, entornos de implementación, signal_shape de registros (log_format, severity_set, level_field) y una corrección de ingesta recomendada cuando corresponde. Derivado aguas arriba y almacenado en caché con un TTL de ~15 minutos.

Llámalo antes de cualquier investigación a nivel de servicio para que la selección de herramientas coincida con la telemetría real del servicio — omita las herramientas de trazas cuando traces sea absent, y cuando severity_set sea none o partial analice la gravedad desde level_field en el cuerpo del registro en lugar de usar severity_filters. metrics siempre es unknown y dependencies no está poblado en v1. Cuando logs y traces sean ambos absent, confirme el nombre con did_you_mean antes de concluir que el servicio no está monitoreado.

list_dashboards

Sin parámetros. Devuelve todos los paneles personalizados en la organización como una matriz JSON con id, name y metadatos.

get_dashboard

  • id (string, obligatorio): UUID del panel.
  • region (string, opcional): Región para la población de consultas de paneles. Se establece por defecto en la región de la fuente de datos configurada.

validate_dashboard

Solo lectura. Nunca crea ni actualiza paneles. Acepta exactamente uno de dashboard_id o dashboard_definition.

  • dashboard_id (string, opcional): UUID del panel guardado a validar.
  • dashboard_definition (object, opcional): Cuerpo del panel en línea no guardado (prueba real en seco).
  • start_time_iso / end_time_iso (string, opcional): Ventana de validación (RFC3339). Debe ser ≤ 24 h.
  • region (string, opcional): Región para la ejecución de consultas de paneles.

Devuelve dashboard_validation/v1: clasificación de lint + ejecución por panel (data / no_data / invalid / error). Los resultados vacíos del día 1 se clasifican como valid_no_data sin sondas de diagnóstico.

create_dashboard

Solo nuevo. Después de que esta llamada devuelva dashboard.id, refine con update_dashboard — no cree de nuevo para agregar, recortar o corregir paneles.

  • dashboard (object, obligatorio): Definición del panel con name y panels[]. Cada panel requiere name, version, layout (x, y, w, h), visualization.type y queries[].
  • metadata (object, opcional): Metadatos del panel — campos _category y _type (p. ej. {"_category":"custom","_type":"metrics"}).

update_dashboard

Prefiera esto después de crear. Reemplazo completo por ID (mismo cuerpo que crear).

  • id (string, obligatorio): UUID del panel a actualizar.
  • dashboard (object, obligatorio): Cuerpo completo de reemplazo del panel (misma forma que crear).
  • metadata (object, opcional): Metadatos de reemplazo. Los paneles del sistema de solo lectura devuelven un error 403.

delete_dashboard

  • id (string, obligatorio): UUID del panel a eliminar. Los paneles del sistema de solo lectura no se pueden eliminar.

list_dashboard_snapshots

  • dashboard_id (string, obligatorio): UUID del panel cuyas instantáneas se listarán.

Devuelve solo metadatos (id, name, expires_at, etc.). Use get_dashboard_snapshot para datos de panel congelados.

get_dashboard_snapshot

  • id (string, obligatorio): UUID de la instantánea.

Devuelve la instantánea congelada completa, incluidos dashboard_definition, panel_data, time_range y variables.

delete_dashboard_snapshot

  • id (string, obligatorio): UUID de la instantánea a eliminar.

get_profile_services

  • lookback_minutes / start_time_iso / end_time_iso (opcional): Ventana; prefiera retroceso o límites ISO explícitos (predeterminado 60 m).
  • region (string, opcional): Anulación de región.

Devuelve los servicios que tienen datos de perfilado en la ventana. Llame a esto antes de get_flamegraph / get_top_functions / get_profile_summary.

get_flamegraph

  • service (string, obligatorio): Nombre del servicio de get_profile_services.
  • profile_type (string, opcional): cpu (predeterminado), alloc o wall. Fije un tipo al comparar ventanas.
  • env / cluster / namespace / runtime (string, opcional): Filtros de alcance.
  • limit (number, opcional): Máximo de filas de pila agregadas (predeterminado 1000, máximo 10000).
  • lookback_minutes / start_time_iso / end_time_iso / region (opcional).

Devuelve un árbol de gráfico de llama anidado (name / value / self / children). truncated: true significa que se alcanzó el límite de filas de la API.

get_top_functions

Mismos filtros que get_flamegraph. Devuelve la clasificación de auto-muestreo de las funciones más activas. Puede truncarse; verifique truncated.

get_profile_summary

Mismos filtros que get_flamegraph. Devuelve un breve triaje en lenguaje natural del perfil para el servicio.

grafana_search_dashboards

  • query (string, opcional): Subcadena del título. Vacío lista ampliamente (sujeto al límite de 5,000 filas).

Devuelve {"dashboards":[…], "truncated":bool} con uid, title, uri, url, type, tags. Use uid con grafana_get_dashboard.

grafana_get_dashboard

  • uid (string, obligatorio): UID del panel de Grafana.
  • full_json (boolean, opcional): Cuando es verdadero, devuelve el JSON sin procesar de Grafana en lugar del resumen filtrado. Resumen predeterminado: versión, etiquetas, variables de plantilla y el tipo/fuente de datos/posición en cuadrícula/objetivos promQL de cada panel. Los tipos de panel de plugin desconocidos aparecen en unsupportedPanelTypes.

grafana_list_folders

Sin parámetros. Devuelve el árbol de carpetas.

grafana_list_folder_dashboards

  • folder_uid (cadena, obligatorio): UID de la carpeta de Grafana.

Devuelve {"dashboards":[…], "truncated":bool} para los paneles en esa carpeta (paginado hasta 5,000).

grafana_list_datasources

Sin parámetros. Devuelve una proyección segura de las fuentes de datos (sin campos de credenciales).


Pruebas

Consulta TESTING.md para la configuración e instrucciones de las pruebas de integración.


MseeP.ai Security Assessment Badge