Model Context Protocol server for Honeycomb observability platform
The Honeycomb MCP server has a solid foundation with 14 well-named tools following verb_noun conventions (list_*, get_*, run_query, analyze_columns). All tools have descriptions and basic input schemas with typed parameters. However, there are significant gaps: parameter descriptions are minimal or absent in several tools, output schemas are not documented, error handling lacks recovery guidance, and the server does not implement modern MCP patterns like tool annotations or structured error categories. The codebase shows thoughtful error handling infrastructure (handleToolError, HoneycombError class) but this is not reflected in tool-level descriptions or recovery hints. Descriptions are generally adequate (50-200 chars baseline) but many parameters lack context about expected formats, ranges, or constraints. No tool documents what it returns, making it difficult for LLMs to plan downstream calls.
Analyze specific columns in a dataset to understand their values and distributions
Get details of a specific board in Honeycomb
Get details of a specific SLO in Honeycomb
Generate a deep link to view a trace in Honeycomb
Get details of a specific trigger in Honeycomb
Get OpenTelemetry instrumentation guidance optimized for Honeycomb
List boards (dashboards) available in a Honeycomb environment
Output schemas not documented. Tools like run_query, list_boards, and analyze_columns lack documented return types. LLMs cannot infer what fields are in the response, making downstream tool composition and field extraction fragile.
run_query accepts a 'query' parameter as type 'object' with only minimal description. No schema defines the structure of the query object (e.g. required fields, nested structure, valid filter operators, aggregation syntax). This leaves LLMs guessing at the correct format.
Parameter descriptions are minimal. Most parameters have 1-2 word descriptions (e.g. 'The Honeycomb environment name', 'The dataset name') that lack context about format, range, valid values, or dependencies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 55 | - | v1 |
List columns available in a dataset
List datasets available in a Honeycomb environment
List markers (annotations) available in a Honeycomb environment
List notification recipients configured in a Honeycomb environment
List Service Level Objectives (SLOs) in a Honeycomb environment
List alert triggers configured in a Honeycomb environment
Execute a query against a dataset in Honeycomb
No pagination documented for list_* tools. list_datasets, list_columns, list_boards, list_markers, list_slos, list_triggers, and list_recipients do not advertise limit/offset/page parameters or total count in response. Large result sets may exceed context windows.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only (correct classification), but this is not signaled in the tool definition. Modern MCP expects these annotations for proper agent safety and idempotency reasoning.
Error handling infrastructure exists (handleToolError, HoneycombError class) but tool-level descriptions do not reference recovery paths. No tool description states 'If the environment is not found, call list_environments() first' or similar guidance. Errors are logged but LLM recovery is not guided.
analyze_columns accepts 'columns' as an array of strings but the description does not specify the format: are these column display names or internal IDs? Does the tool accept human-friendly names or require exact IDs from list_columns?