Grafana MCP Server
Grafana dashboards and metadata management for your AI model context.
Data last scanned today · Reviewed yesterday
Overview
This server facilitates communication with Grafana instances, allowing AI models to search for dashboards, retrieve summary metadata, or extract specific data points using JSONPath expressions. It supports retrieving full dashboard JSON as well as targeted patching to manage your monitoring visuals efficiently. Installation requires a Grafana service account token, with support for both local instances and Grafana Cloud environments. It is built in Go and compatible with Grafana 9.0 or later, providing a structured way to interact with panel queries and datasource information through MCP clients.
Our verdict
With a security score of 35/100, this tool carries a high risk level and should be handled with caution in production environments. The primary security concern is the total lack of an authentication method, meaning any user with access to your configuration can interact with the server. Additionally, the tool provides full write access to your Grafana instance with no read-only mode to prevent accidental modifications. Given it is community-maintained rather than official vendor software, it is best suited for local development or sandbox environments where data integrity is not a priority.
- Zero direct dependencies reduces supply chain attack surface
- Active development with commits made within the last day
- Comprehensive documentation provided in the repository
- Broad community support evidenced by over 3,200 GitHub stars
- High security risk due to lack of authentication
- No read-only mode restricts risk mitigation for write operations
- Community-maintained software carries no official vendor guarantees
Tools
| Tool | Description | Risk |
|---|---|---|
| list_teams | List all teams | low |
| list_users_by_org | List all users in an organization | low |
| list_all_roles | List all Grafana roles | low |
| get_role_details | Get details for a Grafana role | low |
| get_role_assignments | List assignments for a role | low |
| list_user_roles | List roles for users | low |
| list_team_roles | List roles for teams | low |
| get_resource_permissions | List permissions for a resource | low |
| get_resource_description | Describe a Grafana resource type | low |
| search_dashboards | Search for dashboards | low |
| get_dashboard_by_uid | Get a dashboard by uid | low |
| update_dashboard | Update or create a new dashboard | medium |
| get_dashboard_panel_queries | Get panel title, queries, datasource UID and type from a dashboard | low |
| run_panel_query | Execute one or more dashboard panel queries | low |
| get_dashboard_property | Extract specific parts of a dashboard using JSONPath expressions | low |
| get_dashboard_summary | Get a compact summary of a dashboard without full JSON | low |
| list_datasources | List datasources | low |
| get_datasource | Get a datasource by UID or name | low |
| get_query_examples | Get example queries for a datasource type | low |
| query_prometheus | Execute a query against a Prometheus datasource | low |
| list_prometheus_metric_metadata | List metric metadata | low |
| list_prometheus_metric_names | List available metric names | low |
| list_prometheus_label_names | List label names matching a selector | low |
| list_prometheus_label_values | List values for a specific label | low |
| query_prometheus_histogram | Calculate histogram percentile values | low |
| list_incidents | List incidents in Grafana Incident | low |
| create_incident | Create an incident in Grafana Incident | medium |
| add_activity_to_incident | Add an activity item to an incident in Grafana Incident | medium |
| get_incident | Get a single incident by ID | low |
| query_loki_logs | Query and retrieve logs using LogQL (either log or metric queries) | low |
| list_loki_label_names | List all available label names in logs | low |
| list_loki_label_values | List values for a specific log label | low |
| query_loki_stats | Get statistics about log streams | low |
| query_loki_patterns | Query detected log patterns to identify common structures | low |
| analyze_loki_labels | Audit a Loki label strategy (live or static) and optionally diagnose query performance | low |
| suggest_loki_alloy_label_config | Generate an Alloy `loki.process` snippet enforcing approved labels | low |
| query_influxdb | Query InfluxDB using InfluxQL (v1) or Flux (v2) | low |
| list_clickhouse_tables | List tables in a ClickHouse database | low |
| describe_clickhouse_table | Get table schema with column types | low |
| query_clickhouse | Execute SQL queries with macro substitution | low |
| list_cloudwatch_namespaces | List available AWS CloudWatch namespaces | low |
| list_cloudwatch_metrics | List metrics in a namespace | low |
| list_cloudwatch_dimensions | List dimensions for a metric | low |
| query_cloudwatch | Execute CloudWatch metric queries | low |
| list_athena_catalogs | List available Athena data catalogs | low |
| list_athena_databases | List databases in an Athena catalog | low |
| list_athena_tables | List tables in an Athena database | low |
| describe_athena_table | Get column names for an Athena table | low |
| query_athena | Execute SQL queries with macro substitution | medium |
| query_elasticsearch | Query Elasticsearch or OpenSearch using Lucene syntax or Query DSL | low |
| query_quickwit | Query Quickwit using Lucene syntax or Query DSL | low |
| list_snowflake_tables | List tables in a Snowflake database/schema via INFORMATION_SCHEMA | low |
| describe_snowflake_table | Get table schema (column types, nullability, defaults, comments) | low |
| query_snowflake | Execute SQL queries with macro/variable substitution | medium |
| alerting_manage_rules | Manage alert rules (list, get, versions, create, update, delete) | medium |
| alerting_manage_routing | Manage notification policies, contact points, and time intervals | medium |
| list_oncall_schedules | List schedules from Grafana OnCall | low |
| get_oncall_shift | Get details for a specific OnCall shift | low |
| get_current_oncall_users | Get users currently on-call for a specific schedule | low |
| list_oncall_teams | List teams from Grafana OnCall | low |
| list_oncall_users | List users from Grafana OnCall | low |
| list_alert_groups | List alert groups from Grafana OnCall with filtering options | low |
| get_alert_group | Get a specific alert group from Grafana OnCall by its ID | low |
| get_sift_investigation | Retrieve an existing Sift investigation by its UUID | low |
| get_sift_analysis | Retrieve a specific analysis from a Sift investigation | low |
| list_sift_investigations | Retrieve a list of Sift investigations with an optional limit | low |
| find_error_pattern_logs | Finds elevated error patterns in Loki logs. | low |
| find_slow_requests | Finds slow requests from the relevant tempo datasources. | low |
| list_pyroscope_label_names | List label names matching a selector | low |
| list_pyroscope_label_values | List label values matching a selector for a label name | low |
| list_pyroscope_profile_types | List available profile types | low |
| query_pyroscope | Query profiles, metrics, or both from Pyroscope | low |
| get_assertions | Get assertion summary for a given entity | low |
| generate_deeplink | Generate accurate deeplink URLs for Grafana resources | low |
| get_annotations | Fetch annotations with filters | low |
| create_annotation | Create a new annotation (standard or Graphite format) | medium |
| update_annotation | Update specific fields of an annotation (partial update) | medium |
| get_annotation_tags | List annotation tags with optional filtering | low |
| list_snapshots | List dashboard snapshots with optional query and limit filters | low |
| get_snapshot | Get snapshot metadata and dashboard payload by snapshot key | low |
| create_snapshot | Create a dashboard snapshot from a full dashboard payload | medium |
| delete_snapshot | Delete a dashboard snapshot by snapshot key | high |
| get_panel_image | Render a stored dashboard or panel — or a provisioning preview from a repository branch — as a PNG image | low |
| list_provisioning_repositories | List provisioning repositories (e.g. git-sync sources) with their source URL, branch, sync state, and health | low |
| validate_provisioning_file | Dry-run-apply a file from a provisioning repository and report admission validation errors | low |
| create_folder | Creates a folder in Grafana. | medium |
Compatibility
| Client | Local | Docker | Remote | Read-only |
|---|---|---|---|---|
| ChatGPT | ||||
| Claude Desktop | ||||
| Cursor | ||||
| VS Code | ||||
| Windsurf |
Alternatives
Badge
Maintain this server? Add the live badge to your README.