Grafana MCP server: tools, limits and setup
Grafana's 119-tool official server reaches metrics, logs and dashboards, and its replies turn partial at documented limits.
Checked 1 September 2026 · from Grafana's documentation and public repositories
One of 91 guides to monitoring and developer tools. Each covers what an AI coding agent can get out of the tool through MCP, the protocol that lets the agent query the tool directly.
Summary
The Grafana MCP server is one of the oldest and most active official MCP servers. It is first-party and Apache 2.0, and reached version 2.0.0 on 1 October 2026. It carries 119 tools, 71 releases, 130 contributors and setup docs for eight agent clients.
Connecting is a one-line config in most clients. The problems are in what comes back.
Grafana Cloud caps a Loki query at 500 series, and the connector times out after 10 seconds. Log queries return 10 lines with no pagination. On Grafana Cloud, the Adaptive features are cost controls that keep only what has been queried before. Data nobody has asked for may already be gone.
Connect it, and first paste the instructions below into your agent so it says what it could have missed.
What is the Grafana MCP server?
Grafana's first-party server has 119 tools for dashboards, metrics, logs and traces. MCP is an open protocol that lets an AI coding agent call a tool's functions, such as running a PromQL query, without anyone writing code against the tool's API.
You run a small binary, or point at Grafana's hosted endpoint, and the agent gains a set of tools: run this PromQL query (PromQL is Prometheus's query language), search these logs, read that dashboard. The tools are grouped into categories you enable by name, and the agent picks tools on its own based on what you ask in English.
Grafana covers production observability broadly, and agent observability partially.
| Part of the work | What Grafana has here | Can an agent reach it |
|---|---|---|
| Code, tests & review | None | No code-review or test product |
| CI & release | None | No CI product |
| Production observability | Metrics, logs, dashboards, alerting, incidents, on-call, profiles | Yes. Core strength, and most of it is in the default tool set |
| Agent observability & evals | Agent Observability: LLM conversations, evals, test suites | Partial. Shipped in the connector July 2026, disabled by default, Grafana Cloud only |
| AI cost management | None | No AI cost product |
For an agent, Grafana answers questions about the systems your code runs on. It says almost nothing about your own agents, unless you are on Grafana Cloud and you turn the agent tools on. An agent connected here can investigate an incident end to end. It cannot tell you what your own agents cost or how their prompts changed.
What can an AI agent do with Grafana?
| Task | Tools | Works | Watch out for |
|---|---|---|---|
| What changed on this service in the last hour? | query_prometheus query_loki_logs list_incidents | Yes | The 10-second connector timeout |
| Read the queries behind an existing dashboard | search_dashboards get_dashboard_panel_queries | Yes | Nothing. This is the name-discovery step described below the table |
| Find recurring error patterns in logs | query_loki_patterns query_loki_stats | Yes | The automated Sift triage tools were removed in v2.0.0 (1 October 2026), so the agent builds this from Loki queries |
| p99 latency by endpoint, over 24 hours | query_prometheus_histogram | Yes | Resolution on Cloud Pro is one point per minute |
| Explore what is monitored at all | list_datasources list_prometheus_metric_names list_loki_label_names | Yes | On Cloud, Adaptive Metrics may have stripped unused labels |
| Who is on call, and open an incident | get_current_oncall_users list_alert_groups create_incident | Yes | create_incident is a write tool |
| Query traces | search_tempo_traces query_tempo_metrics get_tempo_trace | Yes | TraceQL metrics syntax differs from PromQL. The agent can call get_tempo_traceql_docs before writing a query |
Asking in English is not one call. Your agent takes the question, then runs schema discovery: list_prometheus_metric_names or get_dashboard_panel_queries, to find the real metric and label names. It writes PromQL from those names, then calls query_prometheus with it. Prefer the dashboard route, because panel queries are the queries your team already wrote. The agent copies your naming conventions instead of guessing them.
119 tools registered, 79 on by default across 22 categories (v2.0.0)
- Prometheus6
query_prometheusquery_prometheus_histogramlist_prometheus_metric_nameslist_prometheus_metric_metadatalist_prometheus_label_nameslist_prometheus_label_values- Loki6
query_loki_logsquery_loki_statsquery_loki_patternsanalyze_loki_labelslist_loki_label_nameslist_loki_label_values- Dashboards7
search_dashboardsget_dashboard_by_uidget_dashboard_summaryget_dashboard_panel_queriesget_dashboard_propertylist_dashboard_versionsupdate_dashboard- Tempo traces7
search_tempo_tracesquery_tempo_metricsget_tempo_tracediff_tempo_traceslist_tempo_attribute_nameslist_tempo_attribute_valuesget_tempo_traceql_docs- Incidents6
list_incidentsget_incidentcreate_incidentupdate_incidentadd_activity_to_incidentlist_incident_custom_fields- On-call8
get_current_oncall_userslist_oncall_schedulesget_oncall_shiftlist_oncall_teamslist_oncall_userslist_alert_groupsget_alert_groupupdate_alert_group- Profiling4
query_pyroscopelist_pyroscope_profile_typeslist_pyroscope_label_nameslist_pyroscope_label_values- Alerting6
alerting_rules_readalerting_rules_writealerting_manage_routingalerting_routing_writealerting_silences_readalerting_silences_write
Those are the categories an investigation actually touches. The rest cover datasource admin, annotations, snapshots, rendering and navigation. Write-capable tools in the default set include update_dashboard, create_incident, create_annotation and the three alerting write tools; read-only mode is covered below. The counts above come from the tool registrations in the v2.0.0 source, counted 6 October 2026. The same count on v1.1.0 matches the 105 tools its own tools/list returned. The README documents a subset.
What the tool definitions cost in context
A client that loads every tool definition at the start of a session spends this much context before the first question. Claude Code defers definitions by default through tool search, and loads a tool's definition when the agent needs it. The method below gives the version and date measured.
A context window is the amount of text a model can hold at once. A client that loads every tool definition upfront sends each tool's name, description and input schema to the model when the session starts. That list is charged whether or not a single tool is called.
Grafana does not publish this figure, and neither does any other vendor in this guide. The counts below were measured from the server's own tools/list response, which is the exact JSON a client receives.
The figures are a dated measurement of v1.1.0 from August 2026, when the default set was 65 tools and the full set 105. v2.0.0 registers more tools: 79 by default and 119 in all.
| Tool set | Tools | Tokens (GPT-5.6, GPT-5.5) | Tokens (GPT-4, GPT-3.5) | Tokens (Claude Haiku 4.5 to Opus 5) | Share of a 200,000-token window |
|---|---|---|---|---|---|
| Default toolset (v1.1.0) | 65 | 16,100 to 21,801 | 15,780 to 21,742 | 21,016 to 27,762 | 7.9% to 13.9% |
| Every category enabled (v1.1.0) | 105 | 30,623 to 39,399 | 30,145 to 39,296 | 39,167 to 52,293 | 15.1% to 26.1% |
Encodings: GPT-5.6, GPT-5.5 o200k_base; GPT-4, GPT-3.5 cl100k_base; Claude Haiku 4.5 to Opus 5 count_tokens. Counted 18 August 2026 from mcp-grafana v1.1.0's tools/list, run locally.
Registration is static, so no account was needed. Figures cover each tool's name, description and input schema. The two models in column one share the o200k_base encoding, so they get one count. The spread is formatting: compact JSON at the low end, indented at the high end, about 35% apart. Reasoning tokens are output, spent per request. The tool list is billed as input whenever the client loads it.
The Claude figures are measured rather than encoded. Anthropic publishes no local tokenizer, so the definitions were sent to the API's count_tokens endpoint and a no-tools baseline subtracted. The range covers two tokenizer generations rather than two serializations. Haiku 4.5 and Opus 4.6 sit at the low end, Opus 5 and Sonnet 5 at the high end. The gap between them is about a third.
Can Grafana watch your own AI agents?
Grafana Cloud added Agent Observability tools to the connector in July 2026. They are disabled by default and work only in Grafana Cloud; enable them by adding agento11y to --enabled-tools. Checked against the repository README, retrieved 13 August 2026.
Write operations in this group (eval rules, saved conversations, test suites) need the grafana-agento11y-app.eval:write permission, granted by the Agento11y Admin role.
| Signal | Covered | Notes |
|---|---|---|
| LLM conversation tracking | Yes | List and search conversations by model, provider, agent, status, error type and eval results over a time range |
| Eval scores on production traffic | Yes | Read the eval rules bound to production traffic and the inline guards that warn or deny. Search results carry eval summaries |
| Prompt version tracking | Yes | The agent catalog hashes each agent version, so a prompt edit mints a new one, and compares eval aggregates per version |
| Offline experiments | Yes | Versioned test suites with per-test-case reports, scores and judge explanations |
| Token and cost tracking per session | Partial | Catalog rows carry a token estimate, but no cost product sits behind it |
Grafana MCP server limits: where answers come back incomplete
Grafana documents each boundary below. A series cap returns HTTP 400. A timeout announces itself. The log-line cap, the Adaptive features and the client output limit are all silent. The agent answers confidently in every case.
The agent says: “The query failed.” It matched more series than Grafana Cloud allows.
Grafana Cloud caps a Loki query at 500 series. With 1,800 hosts reporting, a broad aggregation that returns one series per host produces 1,800 series and fails with an HTTP 400, rather than a timeout or a partial result. The series count grows with the number of hosts rather than with data volume, so adding hosts can cross the cap while the query itself never changes.
Self-hosted Loki is not bound by this published cap. Its own limits (5,000 entries per query by default) are set in local config.
Guard: Scope by namespace or service before aggregating, and treat a 400 on a broad query as too many series, not no data.
The agent says: “Here are the logs.” The response holds ten lines.
The connector returns 10 log lines per call by default and 100 at most, and there is no pagination (issue #761, closed 20 August 2026 by adding a compact output mode rather than paging). At the default, anything past line 10 needs the limit raised; past line 100, nothing is reachable in one session and the only route is narrowing the query.
Guard: Raise the limit to 100, narrow the query until the count fits, and have the agent state how many lines it actually saw.
The agent says: “The backend timed out.” The connector gave up first.
The MCP server's default timeout is 10 seconds, the shortest timeout in the path: the Grafana proxy allows 30 seconds, the Prometheus data source 60, and Mimir (Grafana's metrics backend) 2 minutes. The backend may have been about to answer. This is a connector flag, not a platform limit.
Guard: Raise --grafana-timeout before concluding the backend is slow.
The agent says: “That data doesn't exist.” A cost feature dropped it.
The Adaptive features are Grafana Cloud cost controls; self-hosted stacks do not have them. Adaptive Metrics aggregates away unused labels, once the recommendations are applied. These recommendations can also be set to apply automatically. Adaptive Logs keeps what was queried in the previous 15 days. Adaptive Traces keeps 5% or 25% of traces, depending on the chosen preset.
They share one rule: keep what has been queried before. An investigation asks precisely the questions nobody has asked before, so the rule works against it. On Cloud Pro, metric resolution is one point per minute. A 20-second window before an alert holds at most one sample.
Guard: On Grafana Cloud, require the agent to report whether Adaptive features are enabled and what resolution it received, and to treat label not found as possibly dropped rather than never collected. Self-hosted stacks can skip this check.
The agent's answer just stops. The client cut it off, not Grafana.
Claude Code hard-limits MCP tool output at 25,000 tokens by default and warns at 10,000. A query that passes every Grafana limit can still come back truncated because the client refused the payload.
Guard: Raise MAX_MCP_OUTPUT_TOKENS before blaming the backend.
How to configure Grafana MCP for agents
- 1
Decide on write access first
--disable-writeis a true server-side flag. Since v2.0.0, alerting has separate read and write tools, so read-only mode keeps alert rules, silences and routing readable. It removes dashboard edits, incident and annotation writes, snapshots and the raw-SQL query tools.--enable-write-toolsrestores single write tools by name. - 2
Trim the tool list
Use
--enabled-tools. On v2.0.0 the default enables 79 tools across 22 categories. Unless the client defers tool loading, each definition takes part of the context window before any data arrives. - 3
Choose local or hosted
Local runs the binary with a service account token. Hosted is
mcp.grafana.com/mcpwith OAuth, and it is billable. Grafana's pricing page states that connecting through the Cloud MCP server counts you as an active AI user for that billing period, even if your token usage is zero. The rate is $20 a month after three free seats.
Paste this into your agent’s instructions
This block makes the agent report its time range, and for Loki the number of series a query touched.
When you query Grafana, always report alongside your answer: - The time range you queried. On Grafana Cloud, logs allow 30 days plus 1 hour and metrics allow 32 days; self-hosted ranges are set locally. - For Loki queries: the number of series involved. A failure on a broad query usually means the 500-series cap, not missing data. - The number of log lines returned and the limit you set. The default is 10; the maximum is 100; there is no pagination. - The metric resolution you received. Cloud Pro returns one point per minute. - Whether Adaptive Metrics, Logs or Traces are enabled, if known. A missing label or trace may have been dropped by them. Never state that data does not exist. State that no data was returned under the constraints above. Write your answer in ASD-STE100 Simplified Technical English. Use short sentences with one idea in each.
Do you need the MCP server at all?
Not strictly. Prometheus and Loki have open HTTP APIs, and a coding agent can query them directly, skipping Grafana entirely. For self-hosted stacks, direct API access gives full control of ranges and limits, though the agent must construct every request itself.
What MCP adds is everything around the queries. Dashboard introspection reads your panels, which teaches the agent your conventions, and the raw datasource APIs do not. Traces, incidents and on-call arrive in the same conversation. Grafana's own tool descriptions tell the agent what each tool is for.
Use MCP for investigation work and dashboard context, and the datasource APIs for bulk or scripted pulls.
Grafana MCP server setup
All local setups need two things: the mcp-grafana binary on your PATH (or Docker), and a Grafana service account token. GRAFANA_API_KEY still works but is deprecated. Grafana 9.0 or later is required for full functionality.
Claude Code
Claude Code has three scopes: local (you, this project), project (shared through a checked-in .mcp.json) and user (you, everywhere). Add --scope user to take it across projects.
claude mcp add-json "grafana" '{"command":"mcp-grafana","args":[],
"env":{"GRAFANA_URL":"https://your-org.grafana.net",
"GRAFANA_SERVICE_ACCOUNT_TOKEN":"<your-token>"}}'Cursor
In ~/.cursor/mcp.json for all projects, or .cursor/mcp.json in one.
{"mcpServers":{"grafana":{"command":"mcp-grafana","args":[],
"env":{"GRAFANA_URL":"https://your-org.grafana.net",
"GRAFANA_SERVICE_ACCOUNT_TOKEN":"<your-token>"}}}}Codex CLI
Codex reads TOML, so the JSON blocks on this page will not transfer.
[mcp_servers.grafana]
command = "mcp-grafana"
env = { GRAFANA_URL = "https://your-org.grafana.net",
GRAFANA_SERVICE_ACCOUNT_TOKEN = "<your-token>" }The key is `mcp_servers`, with an underscore.
Hosted, no local binary
Point any client at https://mcp.grafana.com/mcp. Auth is OAuth 2.1; tokens last an hour and refresh for thirty days. The account needs the Assistant Cloud MCP User role, which Editor and above already have.
The transport is streamable HTTP only, and SSE is not supported here. The self-hosted binary is different: it also offers SSE and stdio, which is where the transport security issues below apply. Note the billing rule under configuration above: connecting counts as an active AI user.
Every other client
Each block below is the configuration for one client, with the file path and the key that client expects.
Claude Desktop
macOS ~/Library/Application Support/Claude/claude_desktop_config.json. Windows %APPDATA%\Claude\claude_desktop_config.json. There is no CLI. Edit through Settings, Developer, Edit Config.
Quit and restart fully for changes to load. Paths in args must be absolute. Logs at ~/Library/Logs/Claude/mcp.log.
{"mcpServers":{"grafana":{"command":"mcp-grafana","args":[],
"env":{"GRAFANA_URL":"https://your-org.grafana.net",
"GRAFANA_SERVICE_ACCOUNT_TOKEN":"glsa_..."}}}}Gemini CLI
~/.gemini/settings.json globally, or .gemini/settings.json per project. Key mcpServers. CLI: gemini mcp add.
{"mcpServers":{"grafana":{"command":"mcp-grafana","args":[],
"env":{"GRAFANA_URL":"https://your-org.grafana.net",
"GRAFANA_SERVICE_ACCOUNT_TOKEN":"glsa_..."}}}}VS Code Copilot
.vscode/mcp.json per workspace, or your user profile. CLI: code --add-mcp.
{"servers":{"grafana":{"command":"mcp-grafana","args":[],
"env":{"GRAFANA_URL":"https://your-org.grafana.net",
"GRAFANA_SERVICE_ACCOUNT_TOKEN":"glsa_..."}}}}`.vscode/mcp.json` uses the key `servers`. VS Code's portable files, .mcp.json at the project root and ~/.copilot/mcp-config.json, use mcpServers. VS Code recommends them for new servers.
Windsurf
~/.codeium/windsurf/mcp_config.json, which is the path Windsurf documents. Key mcpServers, the same JSON shape as Cursor, carrying the same service account token.
Zed
~/.config/zed/settings.json, carrying the same GRAFANA_URL and service account token as the blocks above.
The key is `context_servers`. Zed does not call them MCP servers in config, so searching its settings for mcp finds nothing.
Google Antigravity
~/.gemini/config/mcp_config.json globally, or .agents/mcp_config.json per project. Key mcpServers. There is no CLI. Use the /mcp overlay in the editor. Supports stdio, streamable HTTP, SSE and websocket.
Grafana does not document Antigravity, but the config is the standard shape and works.
{"mcpServers":{"grafana":{"command":"mcp-grafana","args":[],
"env":{"GRAFANA_URL":"https://your-org.grafana.net",
"GRAFANA_SERVICE_ACCOUNT_TOKEN":"glsa_..."}}}}Amp (Sourcegraph)
~/.config/amp/settings.json or .amp/settings.json, carrying the same command, URL and service account token. The amp mcp CLI covers approve, doctor and oauth.
The key is `amp.mcpServers`, namespaced. A bare mcpServers block is ignored.
Cline
~/.cline/mcp.json per the docs. The source also reads ~/.cline/data/settings/cline_mcp_settings.json. Key mcpServers, standard JSON shape with the service account token in env. Supports stdio, streamable HTTP and SSE.
Goose (Block)
~/.config/goose/config.yaml, carrying the same command and service account token.
YAML, and servers are called `extensions`. Goose does not use the MCP vocabulary in config at all. Add one interactively with goose configure, or per session with goose session --with-extension.
Kiro (AWS)
.kiro/settings/mcp.json per workspace, or ~/.kiro/settings/mcp.json globally. Key mcpServers, standard JSON shape with the service account token in env.
Warp
~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape with the service account token. Also addable through the /agent-add-mcp skill.
JetBrains Junie
.junie/mcp/mcp.json per project, or ~/.junie/mcp/mcp.json. Key mcpServers, with the service account token in env. Use /mcp in the CLI to manage.
Roo Code
.roo/mcp.json per project. The global file is mcp_settings.json, opened from the Roo Code MCP settings view with Edit Global MCP. Key mcpServers, with the service account token in env.
Continue
.continue/mcpServers/*.yaml, one file per server, carrying the command and the service account token.
YAML, and `mcpServers` is a list, not an object. Every JSON client keys servers by name. Continue takes an array, so a converted config will not parse.
Trae
.trae/mcp.json per project, or paste into the UI under Raw Config (JSON). Key mcpServers, standard shape with the service account token.
Devin
Devin has no config file to edit. Servers are added through a web form in the settings UI, and Devin's documentation states you do not need to write or paste JSON. The block below is the shape those fields describe, shown for reference. Either route carries the service account token.
Read-only access, permissions and security
Read-only
Run with
--disable-write, a true server-side flag. On v2.0.0 it keeps every read tool, including alert rules and silences.Scope the token
The service account's permissions are the agent's permissions. Grant viewer-level access unless the agent needs to write dashboards or open incidents. That advice covers self-hosted; on the hosted endpoint the account also needs the Assistant Cloud MCP User role, whatever its permission level.
Open issues worth knowing
Token rotation fails silently on stdio (#987), and stdio is the transport CLI agents usually use. Observability data can carry prompt injection (#680). Telemetry an agent reads can contain adversarial text. #1048 said the SSE and streamable-HTTP transports do not authenticate the client. It was closed on 25 August 2026 as intended behavior. The maintainer states that a server started with configured service-account credentials falls back to those.
Troubleshooting
- 400 on a broad query
- The cause is the 500-series cap. Scope by namespace or service and aggregate in steps.
- Everything times out at exactly 10 seconds
- The cause is the connector's own 10-second default. Raise
--grafana-timeout. The backend limits behind it are 30 seconds to 2 minutes. - 401 on connect
- The cause is an expired or under-scoped service-account token, or the wrong Grafana URL. On the hosted endpoint, check that the connecting user has the Assistant Cloud MCP User role.
- Tools are missing in the client
- Check
--enabled-tools. The v2.0.0 default is 22 categories, and anything trimmed from that list never reaches the agent. Read-only mode removes the write tools by design. The Sift tools and thesiftcategory were removed in v2.0.0. - Output arrives cut off
- Usually the client. Claude Code caps MCP output at 25,000 tokens by default; raise
MAX_MCP_OUTPUT_TOKENS.
Grafana MCP server: Reference
| Item | Value | Scope |
|---|---|---|
| Status | v2.0.0 on 1 October 2026 · context-cost figures measured on v1.1.0 · created December 2024 · 71 releases · 130 contributors | |
| Adoption | 3,525 stars · 460 forks · roughly 3.7M Docker pulls, as of 6 October 2026 | |
| Tools | 119 registered · 79 on by default across 22 categories · counted from the v2.0.0 source 6 October 2026 | |
| License | Apache 2.0 (connector) · AGPL 3.0 (Grafana, Loki) | |
| Distribution | Self-host binary or Docker (grafana/mcp-grafana on GitHub), or hosted at mcp.grafana.com | |
| Clients documented by Grafana | 8: Claude Code, Claude Desktop, Cursor, Codex, VS Code Copilot, Gemini CLI, Windsurf, Zed. This page covers 19 | |
| Traces | 7 Tempo tools in the connector's default set · Tempo's own MCP server has 9 documented tools, enabled in Tempo's configuration | |
| Result caps | Loki 500 series per query, where a broad query returns one series per host · 5,000 entries, where an entry is one log line · connector 10 lines default, 100 max, no pagination | Series cap is Cloud-published; the 5,000-entry figure is the OSS default, set in local config |
| Time ranges | Logs 30 days plus 1 hour · metrics 32 days · Tempo search 7 days | First two Cloud-published; Tempo search is the OSS default |
| Query rate limit | Not published for Loki, Mimir or Tempo query endpoints at any tier | Grafana Cloud usage-limits documentation |
| Maximum retention | No ceiling published. Default limits are 31 days for Loki logs and 30 days for Tempo blocks | Grafana Cloud usage-limits documentation |
What engineers report
The connector has 3,525 stars, 460 forks and roughly 3.7M Docker pulls as of 6 October 2026. Public discussion still covers the Grafana platform far more than the connector. One of the three quotes below is about the connector; the other two are about the platform it queries. In the platform comments, the core products are praised for stability and the surrounding pieces are criticized for churn. The collection agent alone has been renamed from Agent to Agent Flow to Alloy.
“The criticisms brought by Chris are valid, and it's good feedback. ... while I know for a fact there are hundreds to thousands of folks out there who are successfully running Loki ... it can be very rough around the edges.”
“Giving Amp/Claude Code the Grafana MCP + read-only kubectl has saved me days worth of debugging.”
“I've had a grafana + prometheus setup on my servers since like 2017. It worked then and works today.”
Should you connect an agent to Grafana?
Yes. Best for teams on Grafana's LGTM stack (Loki, Grafana, Tempo, Mimir) who will configure the connector deliberately: raised timeout, trimmed categories, and the instructions above pasted into the agent.
- Strongest fit
- Self-hosted Prometheus and Loki shops that want an agent investigating with the tools the team already uses, plus dashboard introspection.
- Main advantage
- A first-party, long-running connector: 119 tools, 71 releases, eight documented clients, and a true server-side read-only flag.
- Main weakness
- On Grafana Cloud, result caps and the Adaptive features silently shrink what the agent sees, and a query that spans every host fails outright at 500 series.
- Operational risk
- Version 2.0.0 removed the Sift tools and renamed the alerting tools, so scripts that call the old names break. On the hosted endpoint, merely connecting is a billable seat.
From Oodle
One platform for agent traces and infrastructure
Agent traces usually sit in a different product from the rest of your telemetry, so when a slow database makes an agent slow the symptom is in one tool and the cause is in another. Oodle keeps both in one query surface.
See agent observabilityFrequently asked questions
Can an agent query traces?
Yes. On v2.0.0 the default tempo category has 7 tools, including search_tempo_traces for TraceQL search and query_tempo_metrics for TraceQL metrics. Tempo also runs its own MCP server, which Tempo documents with 9 tools and enables by its own configuration flag.
How do I make it read-only?
Run with --disable-write. On v2.0.0 it removes only write tools. Alerting has separate read and write tools, so alert rules and silences stay readable.
Does Grafana rate limit agent queries?
Not that Grafana publishes. Grafana Cloud's usage-limits documentation gives no requests-per-second limit for the Loki, Mimir or Tempo query endpoints. The rate limits it does publish cover the access-policy API, Incident Management and Fleet Management, which are named Grafana Cloud products rather than general categories.
Does connecting cost money?
Locally, no. On the hosted endpoint, connecting counts you as an active AI user, $20 a month after three free seats, even at zero token usage.
What is the maximum retention?
Grafana publishes no maximum. Its usage-limits documentation does give default retention: 31 days for Loki logs and 30 days for Tempo blocks.