Model Context Protocol server for Grafana Pyroscope
Server defines 6 tools with complete Zod schemas and descriptions. Naming follows verb_noun pattern (pyroscope_*). Descriptions are present but generic (10-80 chars, below 194-char baseline). Parameters have types and basic descriptions, but lack actionable constraints, examples, and error recovery guidance. Output is text-wrapped rather than structured. No tool annotations (readOnlyHint, etc.). Error handling is minimal, raw HTTP errors returned without recovery hints.
Execute any Pyroscope Connect query endpoint with a raw JSON request body.
List available label names via Connect API.
List label values for a given label name via Connect API.
List available profile types via Connect API.
Query the legacy /pyroscope/render endpoint for flamegraph and timeline data.
Return profile series for given matchers via Connect API.
Descriptions too short and generic. 'List available label names via Connect API' (45 chars) lacks WHEN to use, WHAT it returns, and dependencies. Baseline is 194 chars; LLMs need context for tool selection.
No tool annotations. All tools are read-only but lack readOnlyHint. Agents cannot distinguish safe tools from destructive ones without explicit hints.
Parameter descriptions lack actionable constraints. 'matchers' described as 'Optional label selectors' without format/syntax guidance. 'endpoint' in pyroscope_connect_query has no description at all (null).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Output is unstructured text (formatResponsePreview wraps JSON as string). LLMs cannot parse or chain results. Should return structured objects with typed fields.
Error handling returns raw HTTP errors ('Pyroscope request failed (status statusText): raw'). No recovery guidance, categorization, or actionable next steps for LLM.