# mcp-grafana [Health: Active]

**Category:** 🗄️ Databases  
**Repository:** https://github.com/dockndevai/mcp-grafana  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/mcp-grafana

## Description
Search & edit Grafana dashboards, query datasources (PromQL/LogQL/SQL), inspect alerts.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "mcp-grafana": {
    "command": "npx",
    "args": ["-y","@dockndevai/mcp-grafana"]
  }
}
```

## Documentation & README

# mcp-grafana

[![npm](https://img.shields.io/npm/v/@dockndevai/mcp-grafana)](https://www.npmjs.com/package/@dockndevai/mcp-grafana)
[![CI](https://github.com/dockndevai/mcp-grafana/actions/workflows/ci.yml/badge.svg)](https://github.com/dockndevai/mcp-grafana/actions/workflows/ci.yml)
[![licence](https://img.shields.io/badge/licence-MIT-blue)](LICENSE)

A **safe-by-default** [Model Context Protocol](https://modelcontextprotocol.io) server for **Grafana**. It lets an agent explore and operate Grafana — search dashboards, read the dashboard JSON model, list and **query datasources** (Prometheus / Loki / SQL), inspect alert rules and annotations, and (in higher modes) create/update dashboards and folders, write annotations, and delete.

Part of the [dockndevai MCP server suite](https://dockndevai.github.io/) — one governance model across all of them.

![mcp-grafana — safe by default: read-only exposes 11 tools; raising the access mode unlocks writes and (gated) deletes](https://raw.githubusercontent.com/dockndevai/mcp-grafana/HEAD/docs/demo.gif)

## What it gives an agent

The server starts **read-only** (see [Safe by default](#safe-by-default)); higher-capability tools are only registered when you raise the mode.

| Tool | For | Needs mode |
|---|---|---|
| `get_health` | check the instance is up, version | read-only |
| `search` | find dashboards & folders by name/tag (get UIDs) | read-only |
| `list_dashboards` / `list_folders` | enumerate dashboards / folders | read-only |
| `get_dashboard` | the full dashboard JSON model + meta | read-only |
| `list_datasources` / `get_datasource` | datasources (secrets redacted) | read-only |
| `query_datasource` | run PromQL / LogQL / SQL via the unified query API | read-only |
| `list_alert_rules` | Grafana-managed alert rules | read-only |
| `list_annotations` | events overlaid on graphs | read-only |
| `create_or_update_dashboard` | upsert a dashboard (versioned, reversible) | read-write |
| `create_folder` | create a folder | read-write |
| `create_annotation` | mark a deploy/incident on graphs | read-write |
| `delete_dashboard` / `delete_folder` / `delete_annotation` | delete (irreversible) | admin + `GRAFANA_ALLOW_DELETE` |

## Install

```bash
npx -y @dockndevai/mcp-grafana
```

You need a Grafana **service account token** (Administration → Service accounts → *Add service account* → *Add token*). Give it the **least role** that works — **Viewer** for read-only use, **Editor** to create/update, **Admin** only if you must delete.

## Configure

```json
{
  "mcpServers": {
    "grafana": {
      "command": "npx",
      "args": ["-y", "@dockndevai/mcp-grafana"],
      "env": {
        "GRAFANA_URL": "http://localhost:3000",
        "GRAFANA_TOKEN": "glsa_...",
        "GRAFANA_MODE": "read-only"
      }
    }
  }
}
```

See [docs/CLIENTS.md](https://github.com/dockndevai/mcp-grafana/blob/HEAD/docs/CLIENTS.md) for Claude Code / Cursor / Codex / VS Code / Windsurf snippets, and [.env.example](https://github.com/dockndevai/mcp-grafana/blob/HEAD/.env.example) for every supported variable.

## Safe by default

The access model is enforced by [`src/security.ts`](https://github.com/dockndevai/mcp-grafana/blob/HEAD/src/security.ts) — defence in depth on top of the service-account token's own role:

- **`GRAFANA_MODE`** — `read-only` (default) → `read-write` → `admin`. A tool is registered only if the mode allows its capability. Read-only exposes the 11 read tools; edits need `read-write`; deletes need `admin`.
- **`GRAFANA_ALLOW_DELETE`** — deletes are irreversible, so on top of `admin` mode they also require this flag.
- **`GRAFANA_FOLDER_ALLOWLIST` / `GRAFANA_PROTECTED_FOLDERS`** — confine which folders can be written to; mark folders (e.g. `production`) that may be read but never modified or deleted.
- **`GRAFANA_DATASOURCE_ALLOWLIST`** — restrict which datasources `query_datasource` may hit.
- **`GRAFANA_DRY_RUN`** — validate and log writes without executing them.
- **`GRAFANA_AUDIT_LOG`** — a JSON audit line per guarded operation, on stderr (default on).
- **Interactive confirmation** — when the client supports MCP elicitation, deleting a dashboard/folder/annotation prompts the **human** to approve before it runs; clients that can't elicit fall back to the `GRAFANA_ALLOW_DELETE` gate.
- **Secrets are never returned** — datasource `secureJsonData`, passwords and tokens are stripped from every response.

![Interactive confirmation — the agent asks to delete a dashboard; the server pauses and asks the human via MCP elicitation. Declining leaves the dashboard untouched; approving proceeds.](https://raw.githubusercontent.com/dockndevai/mcp-grafana/HEAD/docs/confirm-demo.gif)

See [SECURITY.md](https://github.com/dockndevai/mcp-grafana/blob/HEAD/SECURITY.md).

## Working with dashboards & queries

Conventions for the dashboard JSON model, panel/target shapes, PromQL/LogQL/SQL query patterns, folder organisation and safe editing live in the bundled skill: [`.claude/skills/grafana-dashboards-and-queries/SKILL.md`](https://github.com/dockndevai/mcp-grafana/blob/HEAD/.claude/skills/grafana-dashboards-and-queries/SKILL.md). Agents that load it can build and edit dashboards to a consistent standard without being re-taught each time.

## Developing

```bash
npm install
npm run build
GRAFANA_URL=http://localhost:3000 GRAFANA_TOKEN=glsa_… node dist/index.js
# introspect without a live Grafana:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | GRAFANA_TOKEN=x node dist/index.js
```

## Licence

MIT

