A side-by-side look at the MCP Grafana and MCP Server MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose MCP Grafana for monitoring work as a local process; choose MCP Server for monitoring as a local process. You can also run both side by side in one mcpServers block.
GRAFANA_URL, GRAFANA_SERVICE_ACCOUNT_TOKEN.add_activity_to_incident, alerting_manage_routing, alerting_manage_rules.MACKEREL_APIKEY.list_alerts, get_alert, get_alert_logs.Rows where the two servers differ are marked.
| Spec | M MCP Server | |
|---|---|---|
| Category | Monitoring | Monitoring |
| Quality signal | 68/100 · Great | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | API key required | API key required |
| Pricing | Free | BYOK (pay the provider) |
| Required env vars | GRAFANA_URLGRAFANA_SERVICE_ACCOUNT_TOKEN | MACKEREL_APIKEY |
| Verified owner | Community listing | Community listing |
| GitHub stars | 3,550 | 7 |
| Directory activity | 5 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 81 | 16 |
| Full listing | View MCP Grafana | View MCP Server |
add_activity_to_incidentAdd a note (userNote activity) to an existing incident's timeline using its ID. The note body can include URLs which will be attached as context. Use this to add context to an incident.alerting_manage_routingManage Grafana alerting routing configuration, including notification policies, contact points and time intervals.
Notification policies define how alerts are grouped, routed, and which contact points receive them.
Time intervals define active/mute periods for alert notifications.
When to use:
- Understanding how alerts are routed to contact points/receivers
- Debugging why an alert went to a specific receiver
- Checking grouping, timing, or mute interval settings
When NOT to use:
- Checking alert rule configuration or state (use alerting_manage_rules)alerting_manage_rulesManage Grafana alert rules with full CRUD capabilities and filtering.
When to use:
- Understanding why an alert is or isn't firing
- Auditing alert rule configuration (queries, conditions, labels, notification settings)
- Finding alert rules by state, folder, group, or name
- Creating, updating, or deleting alert rules
- Comparing rule versions to see what changed
When NOT to use:
- Checking how alerts are routed to receivers (use alerting_manage_routing)alerting_manage_silencesManage Grafana alerting silences. A silence temporarily suppresses notifications for alerts whose labels match a set of matchers, without changing the alert rules themselves.
Operations:
- 'list': list existing silences. Optionally filter by rule_uid (matches the __alert_rule_uid__ label) or by matchers.
- 'get': retrieve a single silence by silence_id.
- 'create': create a new silence. Requires matchers, starts_at, ends_at (RFC3339) and comment.
- 'update': modify an existing silence by silence_id. Requires matchers, starts_at, ends_at and comment. The id is only kept when the posted matchers and starts_at match the stored ones, so pass back the starts_at returned by 'get'; otherwise Alertmanager expires the old silence and returns a new id.
- 'delete': expire/remove a silence by silence_id.
When to use:
- Muting noisy or expected alerts during maintenance windows
- Inspecting or cleaning up existing silences
When NOT to use:
- Changing alert rule configuration or state (use alerting_manage_rules)
- Changing how alerts are routed to receivers (use alerting_manage_routing)analyze_loki_labelsAudits a Loki label strategy and optionally diagnoses query performance. Returns per-label verdicts, missing base labels, normalisation issues, and a recommended set. Pass datasourceUid for live cardinality or labels for static scoring; both may be combined.check_datasources_healthCheck datasource health. Filter by type or UIDs; omit both to check all.create_annotationCreate a new annotation on a dashboard or panel. Set format to 'graphite' and provide 'what' for Graphite-format annotations.create_datasourceCreate a datasource. If type is ambiguous, call search_plugin_information first; install the plugin if needed. IMPORTANT: always call this tool twice. First call: provide only the type — the tool returns a field schema. After receiving the schema, you MUST ask the user for every required field value explicitly; do not infer or use defaults without user confirmation. Second call: provide the type, the display name in the top-level name argument, schemaReviewed=true, and the fields map populated with values confirmed by the user. Never handle credentials — remind the user to rotate any detected. Returns UID, health check, and a config page link. create_folderCreate a Grafana folder. Provide a title and optional UID. Returns the created folder.create_incidentCreate a new Grafana incident. Requires title, severity, and room prefix. Allows setting status, labels and custom fields. This tool should be used judiciously and sparingly, and only after confirmation from the user, as it may notify or alarm lots of people.create_snapshotCreate a Grafana snapshot from a full dashboard payload. Supports optional expiration and external snapshot fields.delete_annotationPermanently delete an annotation by ID. The annotation cannot be recovered afterwards.list_alertsRetrieve alerts.get_alertRetrieve a specific alert.get_alert_logsRetrieve logs for a specific alert.list_dashboardsRetrieve dashboards.get_dashboardRetrieve a specific dashboard.update_dashboardUpdate a specific dashboard.list_hostsRetrieve hosts.get_host_metricsRetrieve metrics data for a specific host.list_servicesRetrieve services.get_service_metricsRetrieve metrics data for a specific service.list_monitorsRetrieve monitor configurations.get_monitorRetrieve a specific monitor configuration.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"grafana-mcp-grafana": {
"command": "uvx",
"args": [
"mcp-grafana"
],
"env": {
"GRAFANA_URL": "YOUR_GRAFANA_URL_HERE",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "YOUR_GRAFANA_SERVICE_ACCOUNT_TOKEN_HERE"
}
}
}
}
{
"mcpServers": {
"mcp-server-180": {
"command": "npx",
"args": [
"-y",
"@mackerel/mcp-server"
],
"env": {
"MACKEREL_APIKEY": "YOUR_MACKEREL_APIKEY_HERE"
}
}
}
}