Access Grafana Observability Data
Official Grafana MCP server - query dashboards, datasources, alerts, incidents, and OnCall across the Grafana ecosystem.
Why it matters
Gain comprehensive programmatic access to your Grafana instance, enabling interaction with dashboards, datasources, alerting, and incident management within your observability ecosystem.
Outcomes
What it gets done
Search, retrieve, create, and update Grafana dashboards and panels.
Query Prometheus and Loki datasources using PromQL and LogQL.
Manage Grafana alerting rules, contact points, and incidents.
Interact with Grafana OnCall schedules and user information.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-grafana | bash Capabilities
Tools your agent gets
Search for dashboards in Grafana
Get dashboard by UID
Execute PromQL queries against Prometheus
Query logs using LogQL against Loki
List alert rules from Grafana alerting
List incidents from Grafana incident management
List on-call schedules from Grafana OnCall
Overview
Grafana MCP
Grafana MCP server connects an AI assistant to a Grafana instance, covering dashboards, multi-backend querying, alerting, incidents, Sift investigations, and OnCall schedules. Use it for observability investigation and dashboard/alert management via Grafana 9.0+; many datasource-specific tool groups must be explicitly enabled.
What it does
Grafana MCP server gives an AI assistant access to a Grafana instance and its surrounding ecosystem. Core, always-on capabilities cover dashboards (search, get by UID, compact summaries, JSONPath property extraction, patch/update/create - with context-window-conscious options like get_dashboard_summary and get_dashboard_property to avoid pulling full dashboard JSON), datasource listing (Prometheus, Loki, ClickHouse, CloudWatch, Elasticsearch, OpenSearch, Snowflake, Athena), Prometheus/Loki querying (PromQL, LogQL, metadata, histogram percentiles, log patterns via Sift), incident management in Grafana Incident, Sift investigations, alerting (list/create/update/delete rules, routing, contact points across Grafana-managed and datasource-managed alerting), Grafana OnCall (schedules, shifts, alert groups), deeplink generation, annotations, and snapshots.
Many datasource-specific tool groups - InfluxDB, ClickHouse, CloudWatch, Graphite, Athena, Snowflake, Elasticsearch/OpenSearch, Quickwit, admin, run-panel-query, and query examples - are disabled by default and must be explicitly enabled via the --enabled-tools flag to keep the default tool surface manageable.
When to use - and when NOT to
Use this connector when you want an assistant to investigate observability data - querying metrics/logs across many backend types, managing dashboards, triaging alerts and incidents, or checking on-call schedules - directly from Grafana.
Do not use get_dashboard_by_uid for routine work since large dashboards can consume significant context window space; prefer get_dashboard_summary or get_dashboard_property instead. Also note Grafana 9.0+ is required for full functionality, and many datasource-specific tools (ClickHouse, Snowflake, CloudWatch, etc.) need to be explicitly enabled.
Inputs and outputs
Inputs vary by tool: dashboard UIDs and JSONPath expressions for dashboard tools, PromQL/LogQL/SQL query strings and time ranges for querying tools, rule/incident/schedule identifiers for alerting and OnCall tools. Outputs are structured Grafana API responses - dashboard JSON or summaries, query results, alert rule states, incident details, or generated deeplink URLs.
Capabilities
- Dashboards: search, get/summarize/patch/update/create, extract properties via JSONPath, get panel queries and datasource info
- Querying: Prometheus (PromQL, metadata, histogram percentiles), Loki (LogQL, metadata, patterns), plus opt-in InfluxDB, ClickHouse, CloudWatch, Graphite, Athena, Snowflake, Elasticsearch/OpenSearch, Quickwit
- Incidents & Sift: search/create/update incidents, list/get Sift investigations and analyses, find error patterns and slow requests
- Alerting: list/create/update/delete alert rules, manage routing (notification policies, contact points, time intervals)
- Grafana OnCall: schedules, shifts, current on-call users, teams, alert groups
- Admin (opt-in): teams, users, roles, permissions
- Navigation: generate accurate deeplinks to dashboards, panels, and Explore
- Annotations & Snapshots: query/create/update annotations; list/get/create/delete dashboard snapshots
How to install
Requires uv. Add to your MCP client config:
{
"mcpServers": {
"grafana": {
"command": "uvx",
"args": ["mcp-grafana"],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
For Grafana Cloud, set GRAFANA_URL to your instance URL (e.g. https://myinstance.grafana.net). Docker, binary, and Helm installation options are also available. Requires Grafana 9.0+ for full functionality.
Who it's for
SRE, DevOps, and observability teams who want an AI assistant to query metrics/logs, manage dashboards, and triage alerts and incidents across their Grafana stack.
Source README
Grafana MCP server
A [Model Context Protocol][mcp] (MCP) server for Grafana.
This provides access to your Grafana instance and the surrounding ecosystem.
Quick Start
Requires uv. Add the following to your MCP client configuration (e.g. Claude Desktop, Cursor):
{
"mcpServers": {
"grafana": {
"command": "uvx",
"args": ["mcp-grafana"],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
For Grafana Cloud, replace GRAFANA_URL with your instance URL (e.g. https://myinstance.grafana.net). See Usage for more installation options including Docker, binary, and Helm.
Requirements
- Grafana version 9.0 or later is required for full functionality. Some features, particularly datasource-related operations, may not work correctly with earlier versions due to missing API endpoints.
Features
The following features are currently available in MCP server. This list is for informational purposes only and does not represent a roadmap or commitment to future features.
Dashboards
- Search for dashboards: Find dashboards by title or other metadata
- Get dashboard by UID: Retrieve full dashboard details using its unique identifier. Warning: Large dashboards can consume significant context window space.
- Get dashboard summary: Get a compact overview of a dashboard including title, panel count, panel types, variables, and metadata without the full JSON to minimize context window usage
- Get dashboard property: Extract specific parts of a dashboard using JSONPath expressions (e.g.,
$.title,$.panels[*].title) to fetch only needed data and reduce context window consumption - Update or create a dashboard: Modify existing dashboards or create new ones. Warning: Requires full dashboard JSON which can consume large amounts of context window space.
- Patch dashboard: Apply specific changes to a dashboard without requiring the full JSON, significantly reducing context window usage for targeted modifications
- Get panel queries and datasource info: Get the title, query string, and datasource information (including UID and type, if available) from every panel in a dashboard
Run Panel Query
Note: Run panel query tools are disabled by default. To enable them, add
runpanelqueryto your--enabled-toolsflag.
- Run panel query: Execute a dashboard panel's query with custom time ranges and variable overrides.
Context Window Management
The dashboard tools now include several strategies to manage context window usage effectively (issue #101):
- Use
get_dashboard_summaryfor dashboard overview and planning modifications - Use
get_dashboard_propertywith JSONPath when you only need specific dashboard parts - Avoid
get_dashboard_by_uidunless you specifically need the complete dashboard JSON
Datasources
- List and fetch datasource information: View all configured datasources and retrieve detailed information about each.
- Supported datasource types: Prometheus, Loki, ClickHouse, CloudWatch, Elasticsearch, OpenSearch, Snowflake, Athena.
Query Examples
Note: Query examples tools are disabled by default. To enable them, add
examplesto your--enabled-toolsflag.
- Get query examples: Retrieve example queries for different datasource types to learn query syntax.
Prometheus Querying
- Query Prometheus: Execute PromQL queries (supports both instant and range metric queries) against Prometheus datasources.
- Query Prometheus metadata: Retrieve metric metadata, metric names, label names, and label values from Prometheus datasources.
- Query histogram percentiles: Calculate histogram percentile values (p50, p90, p95, p99) using histogram_quantile.
Loki Querying
- Query Loki logs and metrics: Run both log queries and metric queries using LogQL against Loki datasources.
- Query Loki metadata: Retrieve label names, label values, and stream statistics from Loki datasources.
- Query Loki patterns: Retrieve log patterns detected by Loki to identify common log structures and anomalies.
InfluxDB Querying
Note: InfluxDB tools are disabled by default. To enable them, add
influxdbto your--enabled-toolsflag.
- Query InfluxDB: Execute queries against InfluxDB datasources using either InfluxQL (v1.x) or Flux (v2.x). The dialect is inferred from the datasource configuration, or can be set explicitly via the
dialectparameter.
ClickHouse Querying
Note: ClickHouse tools are disabled by default. To enable them, add
clickhouseto your--enabled-toolsflag.
- List ClickHouse tables: List all tables in a ClickHouse database with row counts and sizes.
- Describe table schema: Get column names, types, and metadata for a ClickHouse table.
- Query ClickHouse: Execute SQL queries with Grafana macro and variable substitution support.
CloudWatch Querying
Note: CloudWatch tools are disabled by default. To enable them, add
cloudwatchto your--enabled-toolsflag.
- List CloudWatch namespaces: Discover available AWS CloudWatch namespaces.
- List CloudWatch metrics: List metrics available in a specific namespace.
- List CloudWatch dimensions: Get dimensions for filtering metric queries.
- Query CloudWatch: Execute CloudWatch metric queries with time range support.
Graphite Querying
Note: Graphite tools are disabled by default. To enable them, add
graphiteto your--enabled-toolsflag.
- Query Graphite: Execute Graphite render API queries against a Graphite datasource.
- List Graphite metrics: Browse and discover Graphite metric paths.
- List Graphite tags: List available Graphite tags and tag values.
- Query Graphite density: Query Graphite metric density for a given pattern.
Athena Querying
Note: Athena tools are disabled by default. To enable them, add
athenato your--enabled-toolsflag.
- List Athena catalogs: Discover available data catalogs (e.g. AwsDataCatalog, Iceberg connectors).
- List Athena databases: List databases in an Athena catalog.
- List Athena tables: List tables in an Athena database.
- Describe Athena table: Get column names for an Athena table.
- Query Athena: Execute SQL queries against Amazon Athena via Grafana with macro substitution, limit enforcement, and template variable support.
Snowflake Querying
Note: Snowflake tools are disabled by default. To enable them, add
snowflaketo your--enabled-toolsflag.
Queries go through Grafana's Snowflake datasource (Grafana Enterprise plugin grafana-snowflake-datasource), so authentication is handled by the datasource configuration in Grafana - credentials are never seen by the MCP server. This is the same model used for the ClickHouse tools.
- List Snowflake tables: Discover tables (with database, schema, kind, row count, and size) via
INFORMATION_SCHEMA.TABLES. Optional database/schema filters. - Describe table schema: Get column names, data types, nullability, defaults, and comments for a Snowflake table.
- Query Snowflake: Execute SQL queries with macro and variable substitution support. Useful for querying Snowflake's event tables (e.g.
SNOWFLAKE.TELEMETRY.EVENTS) for logs and traces, or any user table.- Supported macros:
$__timeFilter(column),$__timeFrom,$__timeTo,$__from,$__to(Unix ms),$__interval(seconds),$__interval_ms, and${varname}for template variable substitution.
- Supported macros:
Elasticsearch/OpenSearch Querying
Note: Elasticsearch/OpenSearch tools are disabled by default. To enable them, add
elasticsearchto your--enabled-toolsflag.
- Query Elasticsearch/OpenSearch: Execute search queries against Elasticsearch or OpenSearch datasources using either Lucene query syntax or Elasticsearch Query DSL. Supports filtering by time range and retrieving logs, metrics, or any indexed data. Returns documents with their index, ID, source fields, and optional relevance score.
Quickwit Querying
Note: Quickwit tools are disabled by default. To enable them, add
quickwitto your--enabled-toolsflag.
- Query Quickwit: Execute search queries against Quickwit datasources using Lucene query syntax or partial Elasticsearch-compatible Query DSL. Supports filtering by time range and retrieving logs or other indexed documents. Returns documents with their index, ID, source fields, and optional relevance score.
Agent Observability
Note: Agent Observability tools are disabled by default and work only in Grafana Cloud. To enable them, add
agento11yto your--enabled-toolsflag.
- List and search conversations: List recent LLM conversations or search them with a filter expression (model, provider, agent, status, error type, eval results, and more) over a time range. Search results include error counts, rating summaries, evaluation summaries, and trace IDs.
- Get conversation detail: Fetch a single conversation with all its generations, including prompts and outputs.
- Get generation detail and scores: Fetch a single generation by ID, and its evaluation scores (evaluator, score key, value, passed, explanation).
Incidents
- Search, create, and update incidents: Manage incidents in Grafana Incident, including searching, creating, and adding activities to incidents.
Sift Investigations
- List Sift investigations: Retrieve a list of Sift investigations, with support for a limit parameter.
- Get Sift investigation: Retrieve details of a specific Sift investigation by its UUID.
- Get Sift analyses: Retrieve a specific analysis from a Sift investigation.
- Find error patterns in logs: Detect elevated error patterns in Loki logs using Sift.
- Find slow requests: Detect slow requests using Sift (Tempo).
Alerting
- List and fetch alert rule information: View alert rules and their statuses (firing/normal/error/etc.) in Grafana. Supports both Grafana-managed rules and datasource-managed rules from Prometheus or Loki datasources.
- Create and update alert rules: Create new alert rules or modify existing ones.
- Delete alert rules: Remove alert rules by UID.
- Manage alerting routing: View notification policies, contact points, and time intervals. Supports both Grafana-managed contact points and receivers from external Alertmanager datasources (Prometheus Alertmanager, Mimir, Cortex).
Grafana OnCall
- List and manage schedules: View and manage on-call schedules in Grafana OnCall.
- Get shift details: Retrieve detailed information about specific on-call shifts.
- Get current on-call users: See which users are currently on call for a schedule.
- List teams and users: View all OnCall teams and users.
- List alert groups: View and filter alert groups from Grafana OnCall by various criteria including state, integration, labels, and time range.
- Get alert group details: Retrieve detailed information about a specific alert group by its ID.
Admin
Note: Admin tools are disabled by default. To enable them, include
adminin your--enabled-toolsflag.
- List teams: View all configured teams in Grafana.
- List Users: View all users in an organization in Grafana.
- List all roles: List all Grafana roles, with an optional filter for delegatable roles.
- Get role details: Get details for a specific Grafana role by UID.
- List assignments for a role: List all users, teams, and service accounts assigned to a role.
- List roles for users: List all roles assigned to one or more users.
- List roles for teams: List all roles assigned to one or more teams.
- List permissions for a resource: List all permissions defined for a specific resource (dashboard, datasource, folder, etc.).
- Describe a Grafana resource: List available permissions and assignment capabilities for a resource type.
Navigation
- Generate deeplinks: Create accurate deeplink URLs for Grafana resources instead of relying on LLM URL guessing.
- Dashboard links: Generate direct links to dashboards using their UID (e.g.,
http://localhost:3000/d/dashboard-uid) - Panel links: Create links to specific panels within dashboards with viewPanel parameter (e.g.,
http://localhost:3000/d/dashboard-uid?viewPanel=5) - Explore links: Generate links to Grafana Explore with pre-configured datasources (e.g.,
http://localhost:3000/explore?left={"datasource":"prometheus-uid"}) - Time range support: Add time range parameters to links (
from=now-1h&to=now) - Custom parameters: Include additional query parameters like dashboard variables or refresh intervals
- Dashboard links: Generate direct links to dashboards using their UID (e.g.,
Annotations
- Get Annotations: Query annotations with filters. Supports time range, dashboard UID, tags, and match mode.
- Create Annotation: Create a new annotation on a dashboard or panel.
- Create Graphite Annotation: Create annotations using Graphite format (
what,when,tags,data). - Update Annotation: Replace all fields of an existing annotation (full update).
- Patch Annotation: Update only specific fields of an annotation (partial update).
- Get Annotation Tags: List available annotation tags with optional filtering.
Snapshots
- List snapshots: List dashboard snapshots with optional query and limit filters.
- Get snapshot: Retrieve snapshot metadata and dashboard payload by snapshot key.
- Create snapshot: Create a dashboard snapshot from a full dashboard payload, with optional expiration and external snapshot options.
- Delete snapshot: Delete a snapshot by snapshot key.
Rendering
- Get panel or dashboard image: Render a Grafana dashboard panel or full dashboard as a PNG image. Returns the image as base64 encoded data for use in reports, alerts, or presentations. Supports customizing dimensions, time range, theme, scale, and dashboard variables. Also supports rendering not-yet-applied dashboards from a provisioning repository branch (e.g. a git-sync PR preview) via the optional
provisioningPreviewparameter.- Note: Requires the Grafana Image Renderer service to be installed and configured.
Provisioning
- List provisioning repositories: List provisioning repositories configured for this Grafana instance (e.g. git-sync sources), returning each repository's slug along with its source URL, branch, path, sync state, and health.
- Validate provisioning file: Dry-run-apply a file from a provisioning repository at a given branch or commit. Returns whether it would be accepted, the resource action (create/update), the target resource type, and any structured validation errors - the same admission surface Grafana's PR commenter uses.
The list of tools is configurable, so you can choose which tools you want to make available to the MCP client.
This is useful if you don't use certain functionality or if you don't want to take up too much of the context window.
To disable a category of tools, use the --disable-<category> flag when starting the server. For example, to disable
the OnCall tools, use --disable-oncall, or to disable navigation deeplink generation, use --disable-navigation.
RBAC Permissions
Each tool requires specific RBAC permissions to function properly. When creating a service account for the MCP server, ensure it has the necessary permissions based on which tools you plan to use. The permissions listed are the minimum required actions - you may also need appropriate scopes (e.g., datasources:*, dashboards:*, folders:*) depending on your use case.
Tip: If you're not familiar with Grafana RBAC or you want a quicker, simpler setup instead of configuring many granular scopes, you can assign a built-in role such as Editor to the service account. The Editor role grants broad read/write access that will allow most MCP server operations; it is less granular (and therefore less restrictive) than manually-applied scopes, so use it only when convenience is more important than strict least-privilege access.
Note: Grafana Incident and Sift tools use basic Grafana roles instead of fine-grained RBAC permissions:
- Viewer role: Required for read-only operations (list incidents, get investigations)
- Editor role: Required for write operations (create incidents, modify investigations)
For more information about Grafana RBAC, see the official documentation.
RBAC Scopes
Scopes define the specific resources that permissions apply to. Each action requires both the appropriate permission and scope combination.
Common Scope Patterns:
Broad access: Use
*wildcards for organization-wide accessdatasources:*- Access to all datasourcesdashboards:*- Access to all dashboardsfolders:*- Access to all foldersteams:*- Access to all teams
Limited access: Use specific UIDs or IDs to restrict access to individual resources
datasources:uid:prometheus-uid- Access only to a specific Prometheus datasourcedashboards:uid:abc123- Access only to dashboard with UIDabc123folders:uid:xyz789- Access only to folder with UIDxyz789teams:id:5- Access only to team with ID5global.users:id:123- Access only to user with ID123
Examples:
Full MCP server access: Grant broad permissions for all tools
datasources:* (datasources:read, datasources:query) dashboards:* (dashboards:read, dashboards:create, dashboards:write) folders:* (for dashboard creation and alert rules) teams:* (teams:read) global.users:* (users:read)Limited datasource access: Only query specific Prometheus and Loki instances
datasources:uid:prometheus-prod (datasources:query) datasources:uid:loki-prod (datasources:query)Dashboard-specific access: Read only specific dashboards
dashboards:uid:monitoring-dashboard (dashboards:read) dashboards:uid:alerts-dashboard (dashboards:read)
Tools
| Tool | Category | Description | Required RBAC Permissions | Required Scopes |
|---|---|---|---|---|
list_teams |
Admin | List all teams | teams:read |
teams:* or teams:id:1 |
list_users_by_org |
Admin | List all users in an organization | users:read |
global.users:* or global.users:id:123 |
list_all_roles |
Admin | List all Grafana roles | roles:read |
roles:* |
get_role_details |
Admin | Get details for a Grafana role | roles:read |
roles:uid:editor |
get_role_assignments |
Admin | List assignments for a role | roles:read |
roles:uid:editor |
list_user_roles |
Admin | List roles for users | roles:read |
global.users:id:123 |
list_team_roles |
Admin | List roles for teams | roles:read |
teams:id:7 |
get_resource_permissions |
Admin | List permissions for a resource | permissions:read |
dashboards:uid:abcd1234 |
get_resource_description |
Admin | Describe a Grafana resource type | permissions:read |
dashboards:* |
search_dashboards |
Search | Search for dashboards | dashboards:read |
dashboards:* or dashboards:uid:abc123 |
get_dashboard_by_uid |
Dashboard | Get a dashboard by uid | dashboards:read |
dashboards:uid:abc123 |
update_dashboard |
Dashboard | Update or create a new dashboard | dashboards:create, dashboards:write |
dashboards:*, folders:* or folders:uid:xyz789 |
get_dashboard_panel_queries |
Dashboard | Get panel title, queries, datasource UID and type from a dashboard | dashboards:read |
dashboards:uid:abc123 |
run_panel_query |
RunPanelQuery* | Execute one or more dashboard panel queries | dashboards:read, datasources:query |
dashboards:uid:*, datasources:uid:* |
get_dashboard_property |
Dashboard | Extract specific parts of a dashboard using JSONPath expressions | dashboards:read |
dashboards:uid:abc123 |
get_dashboard_summary |
Dashboard | Get a compact summary of a dashboard without full JSON | dashboards:read |
dashboards:uid:abc123 |
list_datasources |
Datasources | List datasources | datasources:read |
datasources:* |
get_datasource |
Datasources | Get a datasource by UID or name | datasources:read |
datasources:uid:prometheus-uid |
get_query_examples |
Examples* | Get example queries for a datasource type | datasources:read |
datasources:* |
query_prometheus |
Prometheus | Execute a query against a Prometheus datasource | datasources:query |
datasources:uid:prometheus-uid |
list_prometheus_metric_metadata |
Prometheus | List metric metadata | datasources:query |
datasources:uid:prometheus-uid |
list_prometheus_metric_names |
Prometheus | List available metric names | datasources:query |
datasources:uid:prometheus-uid |
list_prometheus_label_names |
Prometheus | List label names matching a selector | datasources:query |
datasources:uid:prometheus-uid |
list_prometheus_label_values |
Prometheus | List values for a specific label | datasources:query |
datasources:uid:prometheus-uid |
query_prometheus_histogram |
Prometheus | Calculate histogram percentile values | datasources:query |
datasources:uid:prometheus-uid |
list_incidents |
Incident | List incidents in Grafana Incident | Viewer role | N/A |
create_incident |
Incident | Create an incident in Grafana Incident | Editor role | N/A |
add_activity_to_incident |
Incident | Add an activity item to an incident in Grafana Incident | Editor role | N/A |
get_incident |
Incident | Get a single incident by ID | Viewer role | N/A |
query_loki_logs |
Loki | Query and retrieve logs using LogQL (either log or metric queries) | datasources:query |
datasources:uid:loki-uid |
list_loki_label_names |
Loki | List all available label names in logs | datasources:query |
datasources:uid:loki-uid |
list_loki_label_values |
Loki | List values for a specific log label | datasources:query |
datasources:uid:loki-uid |
query_loki_stats |
Loki | Get statistics about log streams | datasources:query |
datasources:uid:loki-uid |
query_loki_patterns |
Loki | Query detected log patterns to identify common structures | datasources:query |
datasources:uid:loki-uid |
analyze_loki_labels |
Loki | Audit a Loki label strategy (live or static) and optionally diagnose query performance | datasources:query |
datasources:uid:loki-uid |
suggest_loki_alloy_label_config |
Config | Generate an Alloy loki.process snippet enforcing approved labels |
N/A | N/A |
query_influxdb |
InfluxDB | Query InfluxDB using InfluxQL (v1) or Flux (v2) | datasources:query |
datasources:uid:influxdb-uid |
list_clickhouse_tables |
ClickHouse* | List tables in a ClickHouse database | datasources:query |
datasources:uid:* |
describe_clickhouse_table |
ClickHouse* | Get table schema with column types | datasources:query |
datasources:uid:* |
query_clickhouse |
ClickHouse* | Execute SQL queries with macro substitution | datasources:query |
datasources:uid:* |
list_cloudwatch_namespaces |
CloudWatch* | List available AWS CloudWatch namespaces | datasources:query |
datasources:uid:* |
list_cloudwatch_metrics |
CloudWatch* | List metrics in a namespace | datasources:query |
datasources:uid:* |
list_cloudwatch_dimensions |
CloudWatch* | List dimensions for a metric | datasources:query |
datasources:uid:* |
query_cloudwatch |
CloudWatch* | Execute CloudWatch metric queries | datasources:query |
datasources:uid:* |
list_athena_catalogs |
Athena* | List available Athena data catalogs | datasources:query |
datasources:uid:* |
list_athena_databases |
Athena* | List databases in an Athena catalog | datasources:query |
datasources:uid:* |
list_athena_tables |
Athena* | List tables in an Athena database | datasources:query |
datasources:uid:* |
describe_athena_table |
Athena* | Get column names for an Athena table | datasources:query |
datasources:uid:* |
query_athena |
Athena* | Execute SQL queries with macro substitution | datasources:query |
datasources:uid:* |
query_elasticsearch |
Elasticsearch/OpenSearch* | Query Elasticsearch or OpenSearch using Lucene syntax or Query DSL | datasources:query |
datasources:uid:datasource-uid |
query_quickwit |
Quickwit* | Query Quickwit using Lucene syntax or Query DSL | datasources:query |
datasources:uid:quickwit-uid |
list_snowflake_tables |
Snowflake* | List tables in a Snowflake database/schema via INFORMATION_SCHEMA | datasources:query |
datasources:uid:* |
describe_snowflake_table |
Snowflake* | Get table schema (column types, nullability, defaults, comments) | datasources:query |
datasources:uid:* |
query_snowflake |
Snowflake* | Execute SQL queries with macro/variable substitution | datasources:query |
datasources:uid:* |
alerting_manage_rules |
Alerting | Manage alert rules (list, get, versions, create, update, delete) | alert.rules:read + alert.rules:write for mutations |
folders:* or folders:uid:alerts-folder |
alerting_manage_routing |
Alerting | Manage notification policies, contact points, and time intervals | alert.notifications:read |
Global scope |
list_oncall_schedules |
OnCall | List schedules from Grafana OnCall | grafana-oncall-app.schedules:read |
Plugin-specific scopes |
get_oncall_shift |
OnCall | Get details for a specific OnCall shift | grafana-oncall-app.schedules:read |
Plugin-specific scopes |
get_current_oncall_users |
OnCall | Get users currently on-call for a specific schedule | grafana-oncall-app.schedules:read |
Plugin-specific scopes |
list_oncall_teams |
OnCall | List teams from Grafana OnCall | grafana-oncall-app.user-settings:read |
Plugin-specific scopes |
list_oncall_users |
OnCall | List users from Grafana OnCall | grafana-oncall-app.user-settings:read |
Plugin-specific scopes |
list_alert_groups |
OnCall | List alert groups from Grafana OnCall with filtering options | grafana-oncall-app.alert-groups:read |
Plugin-specific scopes |
get_alert_group |
OnCall | Get a specific alert group from Grafana OnCall by its ID | grafana-oncall-app.alert-groups:read |
Plugin-specific scopes |
get_sift_investigation |
Sift | Retrieve an existing Sift investigation by its UUID | Viewer role | N/A |
get_sift_analysis |
Sift | Retrieve a specific analysis from a Sift investigation | Viewer role | N/A |
list_sift_investigations |
Sift | Retrieve a list of Sift investigations with an optional limit | Viewer role | N/A |
find_error_pattern_logs |
Sift | Finds elevated error patterns in Loki logs. | Editor role | N/A |
find_slow_requests |
Sift | Finds slow requests from the relevant tempo datasources. | Editor role | N/A |
list_pyroscope_label_names |
Pyroscope | List label names matching a selector | datasources:query |
datasources:uid:pyroscope-uid |
list_pyroscope_label_values |
Pyroscope | List label values matching a selector for a label name | datasources:query |
datasources:uid:pyroscope-uid |
list_pyroscope_profile_types |
Pyroscope | List available profile types | datasources:query |
datasources:uid:pyroscope-uid |
query_pyroscope |
Pyroscope | Query profiles, metrics, or both from Pyroscope | datasources:query |
datasources:uid:pyroscope-uid |
get_assertions |
Asserts | Get assertion summary for a given entity | Plugin-specific permissions | Plugin-specific scopes |
agento11y_manage_conversations |
Agent Observability* | List, search, and fetch LLM conversations from Grafana Agent Observability | grafana-agento11y-app.conversations:read |
N/A |
agento11y_manage_generations |
Agent Observability* | Fetch LLM generation details and evaluation scores from Grafana Agent Observability | grafana-agento11y-app.data:read |
N/A |
generate_deeplink |
Navigation | Generate accurate deeplink URLs for Grafana resources | None (read-only URL generation) | N/A |
get_annotations |
Annotations | Fetch annotations with filters | annotations:read |
annotations:* or annotations:id:123 |
create_annotation |
Annotations | Create a new annotation (standard or Graphite format) | annotations:write |
annotations:* |
update_annotation |
Annotations | Update specific fields of an annotation (partial update) | annotations:write |
annotations:* |
get_annotation_tags |
Annotations | List annotation tags with optional filtering | annotations:read |
annotations:* |
list_snapshots |
Snapshot | List dashboard snapshots with optional query and limit filters | dashboards:read |
dashboards:* or dashboards:uid:abc123 |
get_snapshot |
Snapshot | Get snapshot metadata and dashboard payload by snapshot key | dashboards:read |
dashboards:* or dashboards:uid:abc123 |
create_snapshot |
Snapshot | Create a dashboard snapshot from a full dashboard payload | dashboards:write |
dashboards:* or dashboards:uid:abc123 |
delete_snapshot |
Snapshot | Delete a dashboard snapshot by snapshot key | dashboards:write |
dashboards:* or dashboards:uid:abc123 |
get_panel_image |
Rendering | Render a stored dashboard or panel - or a provisioning preview from a repository branch - as a PNG image | dashboards:read |
dashboards:uid:abc123 |
list_provisioning_repositories |
Provisioning | List provisioning repositories (e.g. git-sync sources) with their source URL, branch, sync state, and health | provisioning.repositories:read |
N/A |
validate_provisioning_file |
Provisioning | Dry-run-apply a file from a provisioning repository and report admission validation errors | provisioning.repositories:read |
N/A |
* Disabled by default. Add category to --enabled-tools to enable.
CLI Flags Reference
The mcp-grafana binary supports various command-line flags for configuration:
Transport Options:
-t, --transport: Transport type (stdio,sse, orstreamable-http) - default:stdio--address: The host and port for SSE/streamable-http server - default:localhost:8000--base-path: Base path for the SSE/streamable-http server--endpoint-path: Endpoint path for the streamable-http server - default:/mcp
HTTP Transport Security (SSE / streamable-http only):
Host/Origin validation is enforced on every route on the listener - /sse, /mcp, /healthz, and /metrics - so a DNS-rebinding browser cannot reach any of them. Stdio transport is unaffected.
--allowed-hosts: Comma-separated allowlist ofHostheader values. Defaults to loopback variants of--address(e.g.localhost:8000,127.0.0.1:8000,[::1]:8000). A value that parses to empty (unset,,,,, etc.) also falls back to the defaults so a typo cannot silently disable the check. Requests with aHostheader outside the allowlist are rejected with403. Pass*to disable the check - only safe when running behind a trusted reverse proxy that rewritesHost, or in an isolated network. K8shttpGetprobes and external/metricsscrapes will need either an explicit hostname in this list,*, or atcpSocketprobe / a separate metrics port (--metrics-address).--allowed-origins: Comma-separated allowlist ofOriginheader values. Empty by default - any request that carries anOriginheader is rejected (browsers always send one for cross-origin requests, and no browser should be calling this server directly). Set to an explicit list to permit browser-based clients, or*to disable the check.
Debug and Logging:
--debug: Enable debug mode for detailed HTTP request/response logging--log-level: Log level (debug,info,warn,error) - default:info
Grafana Client Options:
--grafana-timeout: Time limit for requests made by the Grafana client. Accepts Go duration strings (e.g.,10s,500ms) - default:10s--include-args-in-spans: Include tool call arguments in OpenTelemetry spans. Only enable in non-production environments or when arguments are known not to contain PII - default:false
Observability:
--metrics: Enable Prometheus metrics endpoint at/metrics--metrics-address: Separate address for metrics server (e.g.,:9090). If empty, metrics are served on the main server--slow-request-threshold: Log an event when any MCP request (tool invocation, list, resource read, etc.) takes longer than this duration. Accepts Go duration strings (e.g.,500ms,5s). Default0disables slow-request logging. See the Slow-request logging section.--slow-request-log-level: Log level for slow-request events (infoorwarn) - default:warn.
Session Management:
--session-idle-timeout-minutes: Session idle timeout in minutes. Sessions with no activity for this duration are automatically reaped - default:30. Set to0to disable session reaping. Only relevant for SSE and streamable-http transports.
Tool Configuration:
--enabled-tools: Comma-separated list of enabled categories - default: all categories exceptadmin,agento11y,athena,clickhouse,cloudwatch,elasticsearch,examples,graphite,quickwit,runpanelquery, andsnowflake. To enable disabled categories, add them to the list (e.g.,"search,datasource,...,snowflake")--max-loki-log-limit: Maximum number of log lines returned perquery_loki_logscall - default:100. Note: Set this at least 1 below Loki's server-sidemax_entries_limit_per_queryto allow truncation detection (the tool requestslimit+1internally to detect if more data exists).--disable-search: Disable search tools--disable-datasource: Disable datasource tools--disable-incident: Disable incident tools--disable-prometheus: Disable prometheus tools--disable-write: Disable write tools (create/update operations)--disable-loki: Disable loki tools--disable-elasticsearch: Disable elasticsearch and opensearch tools--disable-quickwit: Disable quickwit tools--disable-influxdb: Disable InfluxDB tools--disable-alerting: Disable alerting tools--disable-dashboard: Disable dashboard tools--disable-oncall: Disable oncall tools--disable-asserts: Disable asserts tools--disable-sift: Disable sift tools--disable-admin: Disable admin tools--disable-pyroscope: Disable pyroscope tools--disable-navigation: Disable navigation tools--disable-rendering: Disable rendering tools (panel/dashboard image export)--disable-snapshot: Disable snapshot tools--disable-cloudwatch: Disable CloudWatch tools--disable-examples: Disable query examples tools--disable-clickhouse: Disable ClickHouse tools--disable-snowflake: Disable Snowflake tools- `--disab...
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.