Grafana

MCP server for Grafana — manage dashboards, datasources, alerts, folders, and annotations over stdio

grafana-mcp

MCP server for Grafana — manage dashboards, datasources, alert rules, folders, and annotations over stdio.

Installation

npx -y @daanrongen/grafana-mcp

Tools (17 total)

DomainToolsCoverage
Dashboardslist_dashboards, get_dashboard, create_dashboard, update_dashboard, delete_dashboardFull dashboard lifecycle
Datasourceslist_datasources, get_datasource, create_datasource, delete_datasourceDatasource management
Alertslist_alert_rules, get_alert_rule, list_alert_instancesAlert rules and firing Alertmanager instances
Folderslist_folders, create_folder, delete_folderFolder organisation
Annotationslist_annotations, create_annotationDashboard and global annotations
Healthhealth_checkGrafana instance status

Setup

Environment variables

VariableRequiredDescription
GRAFANA_URLYesGrafana base URL (e.g. http://localhost:3000)
GRAFANA_API_KEYYesGrafana service account token or API key

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "grafana": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@daanrongen/grafana-mcp"],
      "env": {
        "GRAFANA_URL": "http://localhost:3000",
        "GRAFANA_API_KEY": "your-service-account-token"
      }
    }
  }
}

Or via the CLI:

claude mcp add grafana \
  -e GRAFANA_URL=http://localhost:3000 \
  -e GRAFANA_API_KEY=your-service-account-token \
  -- npx -y @daanrongen/grafana-mcp

Development

bun install
bun run dev        # run with --watch
bun test           # run test suite
bun run build      # bundle to dist/main.js
bun run inspect    # open MCP Inspector in browser

Architecture

src/
├── config.ts                  # Effect Config — GRAFANA_URL, GRAFANA_API_KEY
├── main.ts                    # Entry point — ManagedRuntime + StdioServerTransport
├── domain/
│   ├── GrafanaClient.ts       # Context.Tag service interface
│   ├── errors.ts              # GrafanaError, NotFoundError
│   └── models.ts              # Schema.Class models (Dashboard, Datasource, AlertRule, …)
├── infra/
│   ├── GrafanaClientLive.ts   # Layer using fetch against the Grafana HTTP API
│   └── GrafanaClientTest.ts   # In-memory Ref-based test adapter
└── mcp/
    ├── server.ts              # McpServer wired to ManagedRuntime
    ├── utils.ts               # formatSuccess, formatError
    └── tools/                 # dashboards.ts, datasources.ts, alerts.ts, folders.ts, annotations.ts, health.ts

Related Servers