C

Grafana MCP Server

Official Grafana Labs MCP server providing 90 tools covering dashboards, Prometheus, Loki, alerting, incidents, on-call, annotations, plugins, RBAC, and many datasource-specific query tools (CloudWatch, ClickHouse, Snowflake, Athena, Elasticsearch, InfluxDB, Graphite, Pyroscope).

Overall Score68/100

Score Breakdown

Server Info

Package
mcp-grafana
Registry
github
Maintainer
GrafanaVendor
Category
Developer Tools
Tags
observabilitydashboardsprometheus
Last Scanned
28 May 2026

Findings

7 issues

Authentication & Identity

HIGHNo MCP OAuth spec implementation

Server does not implement the MCP OAuth authorization server spec. The platform must handle the full OAuth flow, token management, and credential injection externally.

Remediation

Implement the MCP OAuth spec (.well-known/oauth-authorization-server) for native per-user authentication.

HIGHEnv var credentials with no rotation mechanism

Credentials (GRAFANA_URL, GRAFANA_SERVICE_ACCOUNT_TOKEN, GRAFANA_API_KEY) are read from environment variables at startup. Rotation requires restarting the server process. All requests share the same service account credential.

Remediation

Support dynamic credential refresh or secrets manager integration.

Tool Schema Quality

MEDIUMOnly 0 of 90 schemas have parameter constraints

Most schemas lack maxLength, enum, or pattern constraints on string parameters.

Remediation

Add constraints to string parameters, especially on write operations.

CRITICALDangerous execution surface: grafana_api_request: executes arbitrary authenticated HTTP requests against any Grafana API endpoint; no path restriction or method allowlist

Tool allows raw code/query execution which could be exploited via prompt injection.

Remediation

Use parameterized queries or validated command sets.

LLM Safety

HIGHTool descriptions contain instructional language

Descriptions include directives that could influence LLM behavior beyond tool selection.

Remediation

Remove instructional language. Descriptions should be purely factual.

Data Exposure

MEDIUM20 list operations lack pagination

Query tools (query_prometheus, query_loki_logs, query_athena, query_snowflake, query_click_house, query_elasticsearch, query_influx_db, query_graphite, query_cloud_watch) return full response objects from the respective datasource. Prometheus/Loki query tools accept limit/step parameters. Full Grafana API responses returned without server-side filtering. No field selection (no $select equivalent). Datasource query results bounded by the query itself (time range, limit). grafana_api_request returns raw API responses with optional jq-style filtering.

Remediation

Add limit/offset or cursor-based pagination.

LOWNo field selection on responses

Responses return full records rather than projected fields.

Remediation

Implement field selection to return only relevant fields.

Tools

90 total
NameDescriptionRisk
grafana_api_requestMake an authenticated HTTP request to the Grafana API. Similar to 'gh api' for GitHub. Supports any Grafana API endpoint with optional jq-style response filtering. Use this for API endpoints that don't have a dedicated tool.admin
grafana_api_request_read_onlyRead-only variant of grafana_api_request; restricted to GET methods only.read
query_prometheusWORKFLOW: list_prometheus_metric_names -> list_prometheus_label_values -> query_prometheus. Query a PromQL-compatible datasource (Prometheus, Thanos, Mimir, Cloud Monitoring, etc.) using a PromQL expression. Supports instant queries and range queries.read
query_prometheus_histogramQuery histogram metrics from a Prometheus-compatible datasource.read
list_prometheus_metric_namesList available metric names from a Prometheus datasource.read
list_prometheus_label_namesList label names for a Prometheus datasource.read
list_prometheus_label_valuesList values for a specific label in a Prometheus datasource.read
list_prometheus_metric_metadataList metric metadata from a Prometheus datasource.read
query_loki_logsExecutes a log query against a Loki or VictoriaLogs datasource and returns matching log entries. Defaults to last hour, limit 10, backward direction. Accepts LogQL (Loki) or LogsQL (VictoriaLogs).read
query_loki_patternsQuery log patterns from a Loki datasource.read
query_loki_statsQuery log stream statistics from a Loki datasource.read
list_loki_label_namesList available label names from a Loki datasource.read
list_loki_label_valuesList values for a specific label in a Loki datasource.read
analyze_loki_labelsAnalyze label cardinality and distribution for a Loki datasource.read
find_error_pattern_logsFind error patterns in Loki log streams.read
find_slow_requestsFind slow requests in Loki log streams.read
suggest_loki_alloy_label_configSuggest Grafana Alloy label configuration for a Loki datasource.read
get_dashboard_by_uidGet a Grafana dashboard by its UID.read
update_dashboardCreate or update a dashboard. Two modes: full JSON or patch with JSONPath operations. DestructiveHint=true. Supports patch operations via JSONPaths including array append and remove.write
get_dashboard_panel_queriesGet the queries for all panels in a Grafana dashboard.read
get_dashboard_propertyGet a specific property from a Grafana dashboard by JSONPath.read
get_dashboard_summaryGet a summary of a Grafana dashboard including panels, variables, and datasources.read
search_dashboardsSearch for Grafana dashboards by query string.read
search_foldersSearch for Grafana folders.read
create_folderCreate a new Grafana folder.write
run_panel_queryRun a panel query for a specific panel in a Grafana dashboard.read
list_datasourcesList all configured datasources in Grafana.read
get_datasourceGet a specific datasource by name or UID.read
alerting_manage_rulesCreate, update, and delete Grafana alerting rules. DestructiveHint=true.admin
alerting_manage_rules_readRead Grafana alerting rules (read-only variant of alerting_manage_rules).read
alerting_manage_routingManage Grafana alerting notification routing and policies.write
list_alert_groupsList alert groups from Grafana Alertmanager.read
get_alert_groupGet a specific alert group from Grafana Alertmanager.read
create_annotationCreate a new annotation on a dashboard or panel.write
update_annotationUpdate an existing Grafana annotation.write
get_annotationsGet annotations from a Grafana dashboard or panel.read
get_annotation_tagsGet available annotation tags in Grafana.read
install_pluginInstall a Grafana plugin by plugin ID.admin
get_pluginGet information about an installed Grafana plugin.read
search_pluginsSearch the Grafana plugin catalog.read
create_incidentCreate a new Grafana incident. Requires title, severity, and room prefix. Should be used judiciously and only after user confirmation as it may notify many people.write
get_incidentGet a specific Grafana incident by ID.read
list_incidentsList Grafana incidents with optional filtering.read
add_activity_to_incidentAdd an activity entry to an existing Grafana incident.write
get_current_on_call_usersGet the users currently on call in Grafana OnCall.read
list_on_call_schedulesList on-call schedules in Grafana OnCall.read
list_on_call_teamsList teams configured in Grafana OnCall.read
list_on_call_usersList users in Grafana OnCall.read
get_on_call_shiftGet a specific on-call shift by ID.read
get_sift_analysisRetrieve a specific analysis from a Sift investigation by UUID.read
get_sift_investigationGet a specific Sift investigation by ID.read
list_sift_investigationsList Sift investigations.read
get_assertionsGet assertions from Grafana Asserts.read
get_panel_imageRender a Grafana panel as an image.read
query_cloud_watchQuery CloudWatch metrics via a configured CloudWatch datasource in Grafana.read
list_cloud_watch_namespacesList CloudWatch metric namespaces.read
list_cloud_watch_metricsList CloudWatch metrics in a namespace.read
list_cloud_watch_dimensionsList CloudWatch dimensions for a metric.read
query_click_houseExecute a SQL query against a ClickHouse datasource configured in Grafana.read
list_click_house_tablesList tables in a ClickHouse datasource.read
describe_click_house_tableDescribe the schema of a ClickHouse table.read
query_snowflakeExecute a SQL query against a Snowflake datasource configured in Grafana.read
list_snowflake_tablesList tables in a Snowflake datasource.read
describe_snowflake_tableDescribe the schema of a Snowflake table.read
query_athenaExecute a SQL query against an AWS Athena datasource configured in Grafana.read
list_athena_catalogsList AWS Glue Data Catalog catalogs available in Athena.read
list_athena_databasesList databases in an Athena catalog.read
list_athena_tablesList tables in an Athena database.read
describe_athena_tableDescribe the schema of an Athena table.read
query_elasticsearchExecute a query against an Elasticsearch datasource configured in Grafana.read
query_influx_dbExecute a query against an InfluxDB datasource configured in Grafana.read
query_graphiteExecute a Graphite query against a Graphite datasource configured in Grafana.read
list_graphite_metricsList available metrics from a Graphite datasource.read
list_graphite_tagsList available tags from a Graphite datasource.read
query_graphite_densityQuery data density statistics from a Graphite datasource.read
list_pyroscope_profile_typesList available profile types from a Pyroscope datasource.read
list_pyroscope_label_namesList label names from a Pyroscope datasource.read
list_pyroscope_label_valuesList label values from a Pyroscope datasource.read
query_pyroscopeQuery profiling data from a Pyroscope datasource.read
list_teamsList teams in Grafana.read
list_users_by_orgList users in the current Grafana organization.read
list_all_rolesList all RBAC roles defined in Grafana.read
get_role_detailsGet detailed permissions for a specific Grafana RBAC role.read
get_role_assignmentsGet role assignments for users or teams in Grafana.read
get_user_rolesGet roles assigned to a specific Grafana user.read
list_team_rolesList roles assigned to a specific Grafana team.read
get_resource_permissionsGet permissions for a specific Grafana resource (dashboard, folder, datasource).read
get_resource_descriptionGet a natural-language description of a Grafana resource.read
generate_deeplinkGenerate a Grafana deep link URL for a dashboard or panel.read
get_query_examplesGet example queries for a Grafana datasource type.read

Deploy Grafana MCP Server securely

CompleteFlow adds per-user authentication, permission scoping, and audit logging to any MCP server out of the box.

Deploy on CompleteFlow