MCP Grafana vs MCP Server

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.

MCP Grafana logoMCP GrafanaMonitoring · Local subprocess (stdio)Search dashboards, investigate incidents and query datasources in your Grafana instance68GreatAuth: api key requiredMCP Server logoMCP ServerMonitoring · Local subprocess (stdio)Uptime monitoring for websites, APIs, SSL certificates, domain expiry, ping and TCP/UDP ports. 15 tools to list, create, pause and delete monitors, pull incident timelines with error codes and checker locations, and read hourly or daily uptime and response-time series. Checks run from probes in several countries. Remote server at https://mcp.uptybots.com/mcp needs no API key - it speaks OAuth 2.1 and the client registers itself; the stdio package is npx -y uptybots-mcp-server.60GoodAuth: not declared

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.

Which MCP server should you choose?

MCP Grafana logoChoose MCP Grafana when

  • You need dedicated capabilities in the Monitoring domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: API key required.
  • You have the keys it needs: GRAFANA_URL, GRAFANA_SERVICE_ACCOUNT_TOKEN.
  • You want tools like add_activity_to_incident, alerting_manage_routing, alerting_manage_rules.
Explore MCP Grafana

MCP Server logoChoose MCP Server when

  • You need dedicated capabilities in the Monitoring domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like list_monitors, get_monitor, create_http_monitor.
Explore MCP Server

Feature & specification comparison

Rows where the two servers differ are marked.

SpecMCP Grafana logoMCP GrafanaMCP Server logoMCP Server
CategoryMonitoringMonitoring
Quality signal68/100 · Great60/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthAPI key requiredNot declared
PricingFreeNot declared
Required env varsGRAFANA_URLGRAFANA_SERVICE_ACCOUNT_TOKENNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars3,5801
Directory activity 6 views 0 installs 0 upvotes 1 views 0 installs 0 upvotes
Tools8115

Tools & capabilities

MCP Grafana tools 81

  • 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.
  • +69 more on the listing page

MCP Server tools 15

  • list_monitorsList the monitors on the account, newest first, 30 per page. Each entry carries the id needed by every other tool, plus name, url, type, current status, check frequency and the uptime percentage over the last 24 hours. Start here when the request names a monitor by name rather than by id, and when asked what is broken - filtering by status "down" answers that in one call. Returns an empty list rather than an error when nothing matches.
  • get_monitorRead one monitor in full: its configuration, current status, and the type-specific detail the list view omits - expected status codes for HTTP, port and protocol for PORT, certificate or registration expiry date for SSL and DOMAIN. Use it after list_monitors when the answer depends on how the check is configured, for instance whether a timeout is too tight or which port is actually being watched.
  • create_http_monitorWatch a web page or endpoint over HTTP/HTTPS and treat an unexpected status code, a timeout or a connection failure as downtime. This is the right type for anything a browser would open. Choose create_api_monitor instead when the response body matters as well as the status code. Checks run from probes in several countries. Call list_monitors first so you do not create a duplicate of an existing url.
  • create_api_monitorWatch a JSON or REST endpoint where the response itself matters, not only that the host answered. Use it for health endpoints, webhooks and any API whose failure would be invisible to a plain page check. For an ordinary web page, create_http_monitor is lighter and enough.
  • create_ping_monitorWatch a host with ICMP ping: it answers whether the machine is reachable at all, and reports round-trip time and packet loss. Use it for servers, routers and anything with no web service on top. It says nothing about whether a site or service on that host is working - a box can ping perfectly while its web server is down. Some hosting providers block ICMP, in which case the monitor will read as down.
  • create_port_monitorWatch one TCP or UDP port on a host and report it up only when the service behind it actually answers. This is the type for game servers, databases, mail and anything else that speaks its own protocol rather than HTTP - Minecraft, Rust, CS2, FiveM, Postgres, Redis, SMTP. The port must be given as part of the url. Set protocol to UDP for game servers; most of them do not answer on TCP at all.
  • create_ssl_monitorWatch a TLS certificate: whether it is valid, who issued it, and how many days remain before it expires. This is about the certificate, not about the site being reachable - pair it with create_http_monitor when you want both. Note that such a monitor carries two independent states, one for reachability and one for expiry, so a certificate can be days from expiring while the check still reads up.
  • create_domain_monitorWatch a domain registration and report how long is left before it lapses, read from WHOIS. This catches the failure no uptime check can see: everything works perfectly right up to the day the domain expires. Distinct from create_ssl_monitor, which watches the certificate rather than the registration; the two expire on different dates and both are worth watching.
  • pause_monitorStop checking a monitor without deleting it. History and configuration survive, and resume_monitor puts it back to work. Use this around planned maintenance so the downtime does not land in the uptime figures or fire alerts. A paused monitor reports neither up nor down, so it is easy to forget one is off.
  • resume_monitorStart checking a paused monitor again, with the configuration it had before. The first check runs immediately rather than after the usual interval, so the current state is known within moments. Safe to call on a monitor that is already running.
  • delete_monitorPermanently delete a monitor together with its entire check history, incidents and statistics. This cannot be undone and there is no trash to restore from. Confirm with the user before calling it, and prefer pause_monitor whenever the intent is only to stop the checking for a while.
  • get_incidentsRead the downtime history of one monitor: when each outage began, when it ended, how long it lasted and what the failure actually was - HTTP status, error text, and which probe saw it. This is the tool for "what happened" and "how often does this break". For the shape of response times around an outage, follow up with get_stats_hourly.
  • +3 more on the listing page

Ready-to-paste client configs

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.

MCP Grafana

mcpServers (Claude Desktop / Cursor)
{
  "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"
      }
    }
  }
}

MCP Server

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "uptybots-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "uptybots-mcp-server"
      ]
    }
  }
}

Frequently asked questions

MCP Grafana is categorized under Monitoring and uses a local stdio subprocess. MCP Server belongs to Monitoring and uses a local stdio subprocess. Pick MCP Grafana for monitoring work and MCP Server for monitoring.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

MCP Grafana is listed as free. Auth: api key required. MCP Server has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add grafana-mcp-grafana and uptybots-mcp-server as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, MCP Grafana has a quality signal of 68/100 (Great) with 6 views, 0 installs and 3,580 GitHub stars. MCP Server has 60/100 (Good) with 1 views, 0 installs and 1 GitHub stars.