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

仅限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-requestshoneycomb://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_time 和 end_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