⚠️ 已弃用: 此自托管的MCP服务器已被弃用。请迁移到托管的Honeycomb模型上下文协议(MCP)解决方案,请参阅Honeycomb MCP文档。
一个用于与Honeycomb可观测性数据交互的模型上下文协议服务器。此服务器使像Claude这样的大型语言模型可以直接分析和查询您的Honeycomb数据集,跨越多个环境。

Honeycomb MCP实际上是一个完整的替代接口到Honeycomb,因此您需要广泛的API权限。
目前,这仅适用于Honeycomb企业客户。
目前,这是一个单一的服务器进程您必须在自己的计算机上运行。它没有经过身份验证。所有信息使用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块中设置。
欧盟地区的客户还必须设置HONEYCOMB_API_ENDPOINT配置,因为MCP默认指向非欧盟实例。
# 可选的自定义API端点(默认为https://api.honeycomb.io)
HONEYCOMB_API_ENDPOINT=https://api.eu1.honeycomb.io/
MCP服务器实现了缓存,以提高性能并减少对非查询Honeycomb API调用的使用。可以通过这些环境变量来配置缓存:
# 启用/禁用缓存(默认:true)
HONEYCOMB_CACHE_ENABLED=true
# 默认TTL秒数(默认:300)
HONEYCOMB_CACHE_DEFAULT_TTL=300
# 资源特定的TTL值(默认显示)
HONEYCOMB_CACHE_DATASET_TTL=900 # 15分钟
HONEYCOMB_CACHE_COLUMN_TTL=900 # 15分钟
HONEYCOMB_CACHE_BOARD_TTL=900 # 15分钟
HONEYCOMB_CACHE_SLO_TTL=900 # 15分钟
HONEYCOMB_CACHE_TRIGGER_TTL=900 # 15分钟
HONEYCOMB_CACHE_MARKER_TTL=900 # 15分钟
HONEYCOMB_CACHE_RECIPIENT_TTL=900 # 15分钟
HONEYCOMB_CACHE_AUTH_TTL=3600 # 1小时
# 最大缓存大小(每种资源类型项数)
HONEYCOMB_CACHE_MAX_SIZE=1000
Honeycomb MCP已经过以下客户端测试:
很可能与其他客户端兼容。
使用URI格式访问Honeycomb数据集:
honeycomb://{环境}/{数据集}
例如:
honeycomb://生产/api-请求honeycomb://预发布/后端服务资源响应包括:
list_datasets: 列出环境中所有数据集
{ "环境": "生产" }
get_columns: 获取数据集的列信息
{
"环境": "生产",
"数据集": "api-请求"
}
run_query: 执行具有丰富选项的分析查询
{
"环境": "生产",
"数据集": "api-请求",
"计算": [
{ "op": "COUNT" },
{ "op": "P95", "列": "持续时间_ms" }
],
"细分": ["服务名"],
"时间范围": 3600
}
analyze_columns: 分析数据集中特定列,执行统计查询并返回计算指标。
list_slos: 列出数据集的所有SLO
{
"环境": "生产",
"数据集": "api-请求"
}
get_slo: 获取详细的SLO信息
{
"环境": "生产",
"数据集": "api-请求",
"sloId": "abc123"
}
list_triggers: 列出数据集的所有触发器
{
"环境": "生产",
"数据集": "api-请求"
}
get_trigger: 获取详细的触发器信息
{
"环境": "生产",
"数据集": "api-请求",
"triggerId": "xyz789"
}
get_trace_link: 生成指向Honeycomb UI中特定跟踪的深度链接
get_instrumentation_help: 提供OpenTelemetry仪器指导
{
"语言": "python",
"文件路径": "app/services/payment_processor.py"
}
询问Claude如下问题:
所有工具响应都经过优化,以减少上下文窗口的使用同时保持必要信息:
这种优化确保了响应简洁但完整,允许大型语言模型在上下文限制内处理更多数据。
run_query工具的查询规范run_query工具支持全面的查询规范:
计算:要执行的操作数组
{"op": "HEATMAP", "列": "持续时间_ms"}过滤器:过滤条件数组
{"列": "错误", "op": "=", "值": true}过滤组合:"AND"或"OR"(默认为"AND")
细分:分组结果的列数组
["服务名", "http.status_code"]排序:指定如何排序结果的数组
{"op": "COUNT", "order": "descending"}时间范围:相对时间范围(秒),例如3600表示过去一小时
start_time 和 end_time:绝对时间范围的UNIX时间戳
having:根据计算值过滤结果
{"calculate_op": "COUNT", "op": ">", "值": 100}这里是一些现实世界的示例查询:
{
"环境": "生产",
"数据集": "api-请求",
"计算": [
{"列": "持续时间_ms", "op": "HEATMAP"},
{"列": "持续时间_ms", "op": "MAX"}
],
"过滤器": [
{"列": "trace.parent_id", "op": "does-not-exist"}
],
"细分": ["http.target", "名称"],
"排序": [
{"列": "持续时间_ms", "op": "MAX", "order": "descending"}
]
}
{
"环境": "生产",
"数据集": "api-请求",
"计算": [
{"列": "持续时间_ms", "op": "HEATMAP"}
],
"过滤器": [
{"列": "db.statement", "op": "exists"}
],
"细分": ["db.statement"],
"时间范围": 604800
}
{
"环境": "生产",
"数据集": "api-请求",
"计算": [
{"op": "COUNT"}
],
"过滤器": [
{"列": "exception.message", "op": "exists"},
{"列": "parent_name", "op": "exists"}
],
"细分": ["exception.message", "parent_name"],
"排序": [
{"op": "COUNT", "order": "descending"}
]
}
pnpm install
pnpm run build
MIT