蜂巢-MCP服务器

@honeycombio/honeycomb-mcp
0 Stars 394 次浏览 honeycombio 更新于 2026-08-23

用于与 Honeycomb 可观察性数据交互的服务器。此服务器使 Claude 等大型语言模型能够直接分析和查询您的 Honeycomb 数据集。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Honeycomb MCP

一个用于与Honeycomb可观测性数据交互的Model Context Protocol服务器。该服务器使像Claude这样的大语言模型能够直接分析和查询您在多个环境中的Honeycomb数据集。

Honeycomb MCP Logo

仅限Honeycomb Enterprise

目前,此功能仅对Honeycomb Enterprise客户开放。

工作原理

当前,这是一个必须在您自己的计算机上运行的单个服务器进程。它没有进行身份验证。所有信息通过您的客户端和服务器之间的标准输入输出(STDIO)传输。

安装

pnpm install
pnpm run build

构建产物将存放在/build文件夹中。

配置

要使用这个MCP服务器,您需要通过环境变量在MCP配置中提供Honeycomb API密钥。

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

对于多环境设置:

{
    "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"
        }
      }
    }
}

重要: 这些环境变量必须在您的MCP配置的env块中设置。

EU配置

EU客户还需要设置HONEYCOMB_API_ENDPOINT配置,因为MCP默认指向非EU实例。

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

缓存配置

MCP服务器为所有非查询的Honeycomb API调用实现了缓存,以提高性能并减少API使用。可以通过这些环境变量来配置缓存:

# 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

客户端兼容性

Honeycomb MCP已经测试了以下客户端:

它也可能与其他客户端兼容。

功能

  • 跨多个环境查询Honeycomb数据集
  • 执行带有支持的分析查询:
    • 多种计算类型(COUNT、AVG、P95等)
    • 分解和过滤器
    • 基于时间的分析
  • 监控SLO及其状态(仅限企业版)
  • 分析列和数据模式
  • 查看和分析触发器
  • 访问数据集元数据和架构信息
  • 对所有非查询API调用采用基于TTL的缓存优化性能

资源

使用如下格式的URI访问Honeycomb数据集:
honeycomb://{environment}/{dataset}

例如:

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

资源响应包括:

  • 数据集名称
  • 列信息(名称、类型、描述)
  • 架构详情

工具

  • list_datasets: 列出环境中的所有数据集

    { "environment": "production" }
    
  • get_columns: 获取数据集的列信息

    {
      "environment": "production",
      "dataset": "api-requests"
    }
    
  • run_query: 使用丰富的选项运行分析查询

    {
      "environment": "production",
      "dataset": "api-requests",
      "calculations": [
        { "op": "COUNT" },
        { "op": "P95", "column": "duration_ms" }
      ],
      "breakdowns": ["service.name"],
      "time_range": 3600
    }
    
  • analyze_columns: 通过运行统计查询并返回计算指标来分析数据集中的特定列。

  • list_slos: 列出数据集的所有SLO

    {
      "environment": "production",
      "dataset": "api-requests"
    }
    
  • get_slo: 获取详细的SLO信息

    {
      "environment": "production",
      "dataset": "api-requests",
      "sloId": "abc123"
    }
    
  • list_triggers: 列出数据集的所有触发器

    {
      "environment": "production",
      "dataset": "api-requests"
    }
    
  • get_trigger: 获取详细的触发器信息

    {
      "environment": "production",
      "dataset": "api-requests",
      "triggerId": "xyz789"
    }
    
  • get_trace_link: 生成指向Honeycomb UI中特定跟踪的深度链接

  • get_instrumentation_help: 提供OpenTelemetry工具化指导

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

示例查询与Claude

可以向Claude询问如下问题:

  • "生产环境中有哪些可用的数据集?"
  • "显示过去一小时内API服务的P95延迟。"
  • "按服务名称细分的错误率是多少?"
  • "是否有接近超出预算的SLO?"
  • "显示暂存环境中所有活动的触发器。"
  • "生产环境中的API数据集中有哪些列?"

优化的工具响应

所有工具响应都经过优化,以减少上下文窗口使用量,同时保留关键信息:

  • 列出数据集:仅返回名称、slug和描述
  • 获取列:返回简化的列信息,重点是名称、类型和描述
  • 运行查询
    • 包含实际结果和必要的元数据
    • 添加自动计算的汇总统计信息
    • 仅包含热图查询的系列数据
    • 省略冗长的元数据、链接和执行详情
  • 分析列
    • 返回顶级值、计数和关键统计信息
    • 在适当的情况下自动计算数值指标
  • SLO信息:简化为关键状态指示器和性能指标
  • 触发器信息:专注于触发器状态、条件和通知目标

这种优化确保了响应简洁但完整,使LLM能够在上下文限制内处理更多数据。

run_query 的查询规范

run_query 工具支持全面的查询规范:

  • calculations: 要执行的操作数组

    • 支持的操作: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
    • 一些操作如 COUNT 和 CONCURRENCY 不需要指定列
    • 示例:{"op": "HEATMAP", "column": "duration_ms"}
  • filters: 过滤条件数组

    • 支持的操作符:=, !=, >, >=, <, <=, starts-with, does-not-start-with, exists, does-not-exist, contains, does-not-contain, in, not-in
    • 示例:{"column": "error", "op": "=", "value": true}
  • filter_combination: "AND" 或 "OR"(默认是 "AND")

  • breakdowns: 用于分组结果的列数组

    • 示例:["service.name", "http.status_code"]
  • orders: 指定如何对结果进行排序的数组

    • 必须引用来自 breakdowns 或 calculations 的列
    • HEATMAP 操作不能用于 orders
    • 示例:{"op": "COUNT", "order": "descending"}
  • time_range: 相对时间范围(以秒为单位,例如 3600 表示过去一小时)

    • 可以与 start_time 或 end_time 结合使用,但不能同时使用两者
  • start_timeend_time: 绝对时间范围的 UNIX 时间戳

  • having: 基于计算值过滤结果

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

查询示例

这里有一些实际的查询示例:

查找慢速 API 调用

{
  "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"}
  ]
}

数据库调用分布(上周)

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

按异常和调用者统计异常数量

{
  "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"}
  ]
}

开发

pnpm install
pnpm run build

要求

  • Node.js 16+
  • Honeycomb API 密钥具有适当的权限:
    • 分析的查询访问权限
    • SLOs 和触发器的读取访问权限
    • 数据集操作的环境级访问权限

许可证

MIT

相关 MCP 服务