Read-only Grafana MCP server using the caller's auth.romaine.life service JWT.
Strong foundation with clear verb-based naming and comprehensive parameter schemas. All 7 tools have descriptions and typed input schemas. However, output schemas are undocumented (no return type specifications visible), and descriptions lack LLM-optimized guidance on when to use each tool vs. alternatives. Parameter descriptions are adequate but could be more prescriptive about formats and constraints. Error handling and recovery guidance are absent from tool definitions.
Get Grafana health and version status.
List Alertmanager alerts through Grafana's Alertmanager datasource proxy. `filters` accepts Alertmanager matcher strings such as `alertname=TankRunnerDown` or `namespace=~tank-operator.*`.
List Grafana datasources with uid, name, type, URL, and default/read-only flags. Use `datasource_type` for exact type filters such as `prometheus`, `alertmanager`, or `loki`. `name_contains` filters datasource names.
List Prometheus alerts from Grafana's Prometheus datasource proxy. `state` defaults to `firing`; pass `None` to include all Prometheus alert states.
Run a Loki range query through Grafana's Loki datasource proxy. `datasource_uid` defaults to the `loki` UID pinned in osms. `start` and `end` may be Unix nanoseconds or RFC3339 strings.
Output schemas undocumented. No return type specifications visible in tool definitions. LLMs cannot plan downstream tool calls or extract structured data without knowing response field names and types.
No error handling or recovery guidance in tool descriptions. Tools that call external APIs (Prometheus, Alertmanager, Loki) can fail, but descriptions do not explain what errors mean or how to recover.
Parameter format constraints not explicit in descriptions. 'time' accepts Unix timestamp or RFC3339 but description does not specify format. 'step' accepts Prometheus durations but examples are buried in docstring, not in parameter description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Run an instant PromQL query through Grafana's Prometheus datasource proxy. `datasource_uid` defaults to `prometheus`, matching the provisioned kube-prometheus-stack datasource. Pass `time` as a Unix timestamp or RFC3339 string when querying a specific instant.
Run a range PromQL query through Grafana's Prometheus datasource proxy. `start` and `end` may be Unix timestamps or RFC3339 strings. `step` accepts Prometheus durations such as `30s`, `1m`, or a seconds value.
Pagination not implemented. list_datasources, list_prometheus_alerts, list_alertmanager_alerts, and query_loki accept 'limit' but no offset/cursor or total_count. Large result sets will blow context window.
Descriptions lack differentiation between similar tools. query_prometheus vs query_prometheus_range both query Prometheus but descriptions do not clearly explain when to use instant vs range queries.