Honeycomb MCP

Interactúa con datos de observabilidad de Honeycomb, incluyendo conjuntos de datos, SLOs y disparadores.

Documentación

Honeycomb MCP

⚠️ OBSOLETO: Este servidor MCP autoalojado está obsoleto. Migre a la solución alojada de Honeycomb Model Context Protocol (MCP) en Documentación de Honeycomb MCP.

Un servidor Model Context Protocol para interactuar con datos de observabilidad de Honeycomb. Este servidor permite que LLMs como Claude analicen y consulten directamente sus conjuntos de datos de Honeycomb en múltiples entornos.

Honeycomb MCP Logo

Requisitos

  • Node.js 18+
  • Clave de API de Honeycomb con permisos completos:
    • Acceso de consulta para análisis
    • Acceso de lectura para SLOs y Triggers
    • Acceso a nivel de entorno para operaciones de conjuntos de datos

Honeycomb MCP es efectivamente una interfaz alternativa completa a Honeycomb, por lo que necesita permisos amplios para la API.

Solo para Honeycomb Enterprise

Actualmente, esto solo está disponible para clientes de Honeycomb Enterprise.

Cómo funciona

Hoy, este es un proceso de servidor único que debe ejecutar en su propia computadora. No está autenticado. Toda la información utiliza STDIO entre su cliente y el servidor.

Instalación

pnpm install
pnpm run build

El artefacto de compilación va a la carpeta /build.

Configuración

Para usar este servidor MCP, debe proporcionar claves de API de Honeycomb mediante variables de entorno en su configuración de MCP.

{
    "mcpServers": {
      "honeycomb": {
        "command": "node",
        "args": [
          "/fully/qualified/path/to/honeycomb-mcp/build/index.mjs"
        ],
        "env": {
          "HONEYCOMB_API_KEY": "your_api_key"
        }
      }
    }
}

Para múltiples entornos:

{
    "mcpServers": {
      "honeycomb": {
        "command": "node",
        "args": [
          "/fully/qualified/path/to/honeycomb-mcp/build/index.mjs"
        ],
        "env": {
          "HONEYCOMB_ENV_PROD_API_KEY": "your_prod_api_key",
          "HONEYCOMB_ENV_STAGING_API_KEY": "your_staging_api_key"
        }
      }
    }
}

Importante: Estas variables de entorno deben establecerse en el bloque env de su configuración de MCP.

Configuración de la UE

Los clientes de la UE también deben establecer una configuración HONEYCOMB_API_ENDPOINT, ya que el MCP usa por defecto la instancia no perteneciente a la UE.

# Optional custom API endpoint (defaults to https://api.honeycomb.io)
HONEYCOMB_API_ENDPOINT=https://api.eu1.honeycomb.io/

Configuración de caché

El servidor MCP implementa caché para todas las llamadas a la API de Honeycomb que no son de consulta para mejorar el rendimiento y reducir el uso de la API. El caché se puede configurar usando estas variables de entorno:

# Enable/disable caching (default: true)
HONEYCOMB_CACHE_ENABLED=true

# Default TTL in seconds (default: 300)
HONEYCOMB_CACHE_DEFAULT_TTL=300

# Resource-specific TTL values in seconds (defaults shown)
HONEYCOMB_CACHE_DATASET_TTL=900    # 15 minutes
HONEYCOMB_CACHE_COLUMN_TTL=900     # 15 minutes
HONEYCOMB_CACHE_BOARD_TTL=900      # 15 minutes
HONEYCOMB_CACHE_SLO_TTL=900        # 15 minutes
HONEYCOMB_CACHE_TRIGGER_TTL=900    # 15 minutes
HONEYCOMB_CACHE_MARKER_TTL=900     # 15 minutes
HONEYCOMB_CACHE_RECIPIENT_TTL=900  # 15 minutes
HONEYCOMB_CACHE_AUTH_TTL=3600      # 1 hour

# Maximum cache size (items per resource type)
HONEYCOMB_CACHE_MAX_SIZE=1000

Compatibilidad de clientes

Honeycomb MCP ha sido probado con los siguientes clientes:

Es probable que funcione con otros clientes.

Características

  • Consultar conjuntos de datos de Honeycomb en múltiples entornos
  • Ejecutar consultas analíticas con soporte para:
    • Múltiples tipos de cálculo (COUNT, AVG, P95, etc.)
    • Desgloses y filtros
    • Análisis basado en tiempo
  • Monitorear SLOs y su estado (solo Enterprise)
  • Analizar columnas y patrones de datos
  • Ver y analizar Triggers
  • Acceder a metadatos de conjuntos de datos e información de esquema
  • Rendimiento optimizado con caché basada en TTL para todas las llamadas a la API que no son de consulta

Recursos

Acceda a los conjuntos de datos de Honeycomb usando URIs en el formato:

honeycomb://{environment}/{dataset}

Por ejemplo:

  • honeycomb://production/api-requests
  • honeycomb://staging/backend-services

La respuesta del recurso incluye:

  • Nombre del conjunto de datos
  • Información de columna (nombre, tipo, descripción)
  • Detalles del esquema

Herramientas

  • list_datasets: Listar todos los conjuntos de datos en un entorno

    { "environment": "production" }
    
  • get_columns: Obtener información de columna para un conjunto de datos

    {
      "environment": "production",
      "dataset": "api-requests"
    }
    
  • run_query: Ejecutar consultas analíticas con opciones enriquecidas

    {
      "environment": "production",
      "dataset": "api-requests",
      "calculations": [
        { "op": "COUNT" },
        { "op": "P95", "column": "duration_ms" }
      ],
      "breakdowns": ["service.name"],
      "time_range": 3600
    }
    
  • analyze_columns: Analiza columnas específicas en un conjunto de datos ejecutando consultas estadísticas y devolviendo métricas calculadas.

  • list_slos: Listar todos los SLOs para un conjunto de datos

    {
      "environment": "production",
      "dataset": "api-requests"
    }
    
  • get_slo: Obtener información detallada del SLO

    {
      "environment": "production",
      "dataset": "api-requests",
      "sloId": "abc123"
    }
    
  • list_triggers: Listar todos los triggers para un conjunto de datos

    {
      "environment": "production",
      "dataset": "api-requests"
    }
    
  • get_trigger: Obtener información detallada del trigger

    {
      "environment": "production",
      "dataset": "api-requests",
      "triggerId": "xyz789"
    }
    
  • get_trace_link: Generar un enlace profundo a un trace específico en la interfaz de Honeycomb

  • get_instrumentation_help: Proporciona orientación sobre instrumentación de OpenTelemetry

    {
      "language": "python",
      "filepath": "app/services/payment_processor.py"
    }
    

Ejemplos de consultas con Claude

Pregúntele a Claude cosas como:

  • "¿Qué conjuntos de datos están disponibles en el entorno de producción?"
  • "Muéstrame la latencia P95 para el servicio API en la última hora"
  • "¿Cuál es la tasa de error desglosada por nombre de servicio?"
  • "¿Hay algún SLO cerca de incumplir su presupuesto?"
  • "Muéstrame todos los triggers activos en el entorno de staging"
  • "¿Qué columnas están disponibles en el conjunto de datos de API de producción?"

Respuestas optimizadas de herramientas

Todas las respuestas de herramientas están optimizadas para reducir el uso de la ventana de contexto mientras se mantiene la información esencial:

  • Listar conjuntos de datos: Devuelve solo nombre, slug y descripción
  • Obtener columnas: Devuelve información de columna simplificada centrada en nombre, tipo y descripción
  • Ejecutar consulta:
    • Incluye resultados reales y metadatos necesarios
    • Agrega estadísticas resumidas calculadas automáticamente
    • Solo incluye datos de series para consultas de mapa de calor
    • Omite metadatos verbosos, enlaces y detalles de ejecución
  • Analizar columna:
    • Devuelve valores principales, conteos y estadísticas clave
    • Calcula automáticamente métricas numéricas cuando corresponde
  • Información de SLO: Simplificada a indicadores de estado clave y métricas de rendimiento
  • Información de trigger: Centrada en el estado del trigger, condiciones y destinos de notificación

Esta optimización asegura que las respuestas sean concisas pero completas, permitiendo que los LLMs procesen más datos dentro de las limitaciones de contexto.

Especificación de consulta para run_query

La herramienta run_query admite una especificación de consulta completa:

  • calculations: Matriz de operaciones a realizar

    • Operaciones admitidas: COUNT, CONCURRENCY, COUNT_DISTINCT, HEATMAP, SUM, AVG, MAX, MIN, P001, P01, P05, P10, P25, P50, P75, P90, P95, P99, P999, RATE_AVG, RATE_SUM, RATE_MAX
    • Algunas operaciones como COUNT y CONCURRENCY no requieren una columna
    • Ejemplo: {"op": "HEATMAP", "column": "duration_ms"}
  • filters: Matriz de condiciones de filtro

    • Operadores admitidos: =, !=, >, >=, <, <=, starts-with, does-not-start-with, exists, does-not-exist, contains, does-not-contain, in, not-in
    • Ejemplo: {"column": "error", "op": "=", "value": true}
  • filter_combination: "AND" o "OR" (el valor predeterminado es "AND")

  • breakdowns: Matriz de columnas para agrupar resultados

    • Ejemplo: ["service.name", "http.status_code"]
  • orders: Matriz que especifica cómo ordenar los resultados

    • Debe hacer referencia a columnas de desgloses o cálculos
    • La operación HEATMAP no se puede usar en orders
    • Ejemplo: {"op": "COUNT", "order": "descending"}
  • time_range: Rango de tiempo relativo en segundos (por ejemplo, 3600 para la última hora)

    • Se puede combinar con start_time o end_time, pero no con ambos
  • start_time y end_time: Marcas de tiempo UNIX para rangos de tiempo absolutos

  • having: Filtrar resultados según valores de cálculo

    • Ejemplo: {"calculate_op": "COUNT", "op": ">", "value": 100}

Ejemplos de consultas

Aquí hay algunos ejemplos de consultas del mundo real:

Encontrar llamadas API lentas

{
  "environment": "production",
  "dataset": "api-requests",
  "calculations": [
    {"column": "duration_ms", "op": "HEATMAP"},
    {"column": "duration_ms", "op": "MAX"}
  ],
  "filters": [
    {"column": "trace.parent_id", "op": "does-not-exist"}
  ],
  "breakdowns": ["http.target", "name"],
  "orders": [
    {"column": "duration_ms", "op": "MAX", "order": "descending"}
  ]
}

Distribución de llamadas a la base de datos (última semana)

{
  "environment": "production",
  "dataset": "api-requests",
  "calculations": [
    {"column": "duration_ms", "op": "HEATMAP"}
  ],
  "filters": [
    {"column": "db.statement", "op": "exists"}
  ],
  "breakdowns": ["db.statement"],
  "time_range": 604800
}

Conteo de excepciones por excepción y llamador

{
  "environment": "production",
  "dataset": "api-requests",
  "calculations": [
    {"op": "COUNT"}
  ],
  "filters": [
    {"column": "exception.message", "op": "exists"},
    {"column": "parent_name", "op": "exists"}
  ],
  "breakdowns": ["exception.message", "parent_name"],
  "orders": [
    {"op": "COUNT", "order": "descending"}
  ]
}

Desarrollo

pnpm install
pnpm run build

Licencia

MIT