模型上下文协议服务器

Honeycomb MCP是一个用于与Honeycomb可观测性数据交互的服务器,支持LLM直接分析和查询多环境数据集。

  • by honeycombio
  • TypeScript
  • 本地部署
  • 43 星标
  • 更新于
在 GitHub 查看 honeycombio/honeycomb-mcp

使用说明

蜂窝MCP

⚠️ 已弃用:此自托管MCP服务器已弃用。请迁移到托管的蜂窝模型上下文协议(MCP)解决方案,网址为 蜂窝MCP文档.

A. 模型上下文协议 用于与Honeycomb可观测性数据交互的服务器。此服务器使Claude等LLM能够跨多个环境直接分析和查询您的Honeycomb数据集。

需求

  • Node.js 18+
  • 具有完全权限的蜂窝API密钥:
    • 查询访问以进行分析
    • SLO和触发器的读取权限
    • 数据集操作的环境级访问

蜂窝MCP实际上是蜂窝的一个完整的替代接口,因此您需要API的广泛权限。

仅限蜂窝企业

目前,这仅适用于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"
        }
      }
    }
}

重要提示: 这些环境变量 必须 赌注设定在 env MCP配置块。

欧盟配置

欧盟客户还必须设定 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

客户端兼容性

蜂窝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:提供OpenTetry仪器指南

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

Claude查询示例

问克劳德这样的问题:

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

优化工具响应

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

  • 列出数据集:仅返回名称、slug和描述
  • 获取列:返回简化的列信息,重点是名称、类型和描述
  • 运行查询:
    • 包括实际结果和必要的元数据
    • 添加自动计算的摘要统计信息
    • 仅包括热图查询的系列数据
    • 省略详细的元数据、链接和执行细节
  • 分析列:
    • 返回顶部值、计数和关键统计信息
    • 在适当的时候自动计算数字指标
  • SLO信息:简化为关键状态指标和绩效指标
  • 触发信息:重点关注触发状态、条件和通知目标

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

查询规范 run_query

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

  • 计算:要执行的操作数组

    • 支持的操作:COUNT、CONCURRENCY、COUNT_DISTINCT、HEATMAP、SUM、AVG、MAX、MIN、P001、P01、P05、P10、P25、P50、P75、P90、P95、P99、RATE_AVG、RATE_SUM、RATE_MAX
    • 像COUNT和CONCURRENCY这样的操作不需要列
    • 例子: {"op": "HEATMAP", "column": "duration_ms"}
  • 过滤器:过滤条件数组

    • 支持的运算符:=!=,>,>=,<,<=,以开头,不以开头,存在,不存在,包含,不包含,in,not in
    • 例子: {"column": "error", "op": "=", "value": true}
  • 滤波器组合:“AND”或“or”(默认为“AND”)

  • 故障:按以下方式对结果进行分组的列数组

    • 例子: ["service.name", "http.status_code"]
  • 订单:指定如何对结果排序的数组

    • 必须引用细分或计算中的列
    • HEATMAP操作不能在订单中使用
    • 例子: {"op": "COUNT", "order": "descending"}
  • 时间范围:以秒为单位的相对时间范围(例如,最后一小时为3600)

    • 可以与start_time或end_time组合使用,但不能同时使用
  • 开始时间 和 结束时间:绝对时间范围的UNIX时间戳

  • 有:根据计算值筛选结果

    • 例子: {"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"}
  ]
}

DB呼叫分布(上周)

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

许可证

麻省理工学院