MCP server that integrates Grafana dashboards with AI analysis using Ollama. Provides tools to fetch panel data from Grafana and analyze time series metrics with local LLM models.
Single tool with partial schema and Portuguese description. Input schema present with types and descriptions (dashboard_uid: string, panel_id: integer), meeting baseline requirements. However, description is in Portuguese, limiting LLM comprehension in English-first environments. No output schema documented, LLMs cannot predict return structure. Tool name 'get_panel_data' follows verb_noun convention correctly. No error handling guidance, no parameter constraints (e.g., panel_id range), no idempotency hints. Risk classification (READ_ONLY) present but not integrated into description. Missing: pagination guidance, result limits, field documentation for complex nested response.
Obtém os dados de um painel diretamente do Grafana. O MCP consulta a configuração do dashboard para descobrir automaticamente o datasource e a query do painel e depois solicita os dados ao Grafana.
Output schema not documented. Tool returns complex nested dict with dashboard, panel, queries, time_range, data fields, but LLMs have no visibility into structure. Prevents downstream tool chaining and forces LLMs to guess field names.
Description in Portuguese ('Obtém os dados...'), non-English descriptions reduce LLM comprehension in English-first agent systems. Should be English or bilingual with English primary.
No error recovery guidance. Tool raises ValueError for missing panels, non-timeseries types, and missing queries, but descriptions do not explain these failure modes or suggest recovery steps (e.g., 'Call list_dashboards() to find valid UIDs').
No result limits or pagination. Tool fetches up to 1000 data points per query without documenting max response size. Large time ranges could return massive datasets, exhausting context windows.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Parameter descriptions lack format/constraint details. 'dashboard_uid' and 'panel_id' have basic descriptions but no guidance on valid formats, ranges, or how to discover valid values.