蜂窝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-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:提供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"}
- 过滤器:过滤条件数组
- 支持的运算符:=!=,>,>=,\", "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许可证
麻省理工学院
