Grafana MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GRAFANA_URL | Yes | The URL of your Grafana instance | |
| GRAFANA_DEBUG | No | Enable debug logging | false |
| GRAFANA_TOKEN | Yes | Your service account token or API key for authentication | |
| GRAFANA_TIMEOUT | No | HTTP timeout in milliseconds | 30000 |
| GRAFANA_TLS_CA_FILE | No | Path to CA certificate file | |
| GRAFANA_TLS_KEY_FILE | No | Path to client key file | |
| GRAFANA_DISABLE_TOOLS | No | Disable specific tool categories (comma-separated) | |
| GRAFANA_TLS_CERT_FILE | No | Path to client certificate file | |
| GRAFANA_TLS_SKIP_VERIFY | No | Skip certificate verification (insecure) | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_dashboardsC | Search for dashboards by title, tags, or other metadata |
| get_dashboard_by_uidB | Get full dashboard details using its unique identifier |
| update_dashboardC | Update an existing dashboard or create a new one. Use with caution due to context window limitations. |
| get_dashboard_panel_queriesC | Get the title, query string, and datasource information from every panel in a dashboard |
| get_dashboard_versionsC | Get version history for a dashboard |
| restore_dashboard_versionC | Restore a dashboard to a specific version |
| delete_dashboardB | Delete a dashboard by UID |
| list_teamsC | List all teams in the organization |
| get_team_by_uidB | Get team details by UID |
| list_usersC | List all users in the organization |
| get_current_userB | Get current user information |
| list_foldersC | List all folders |
| get_folder_by_uidC | Get folder details by UID |
| list_api_keysB | List all API keys |
| list_service_accountsB | List all service accounts |
| get_current_organizationC | Get current organization information |
| list_datasourcesB | List all configured datasources with their details |
| get_datasource_by_uidC | Get detailed information about a datasource using its UID |
| get_datasource_by_nameC | Get detailed information about a datasource using its name |
| test_datasource_connectionC | Test the connection to a datasource by UID |
| get_datasources_by_typeB | Get all datasources of a specific type (e.g., prometheus, loki, mysql) |
| get_default_datasourceB | Get the default datasource for the organization |
| check_datasource_existsC | Check if a datasource exists by UID or name |
| query_prometheusC | Execute a PromQL query against a Prometheus datasource |
| get_prometheus_metadataC | Get metadata for all metrics from a Prometheus datasource |
| get_prometheus_labelsB | Get all label names from a Prometheus datasource |
| get_prometheus_label_valuesC | Get all values for a specific label from a Prometheus datasource |
| get_prometheus_seriesC | Find series matching label matchers from a Prometheus datasource |
| build_prometheus_queryC | Help build a Prometheus query with suggestions for metric names and operators |
| query_lokiC | Execute a LogQL query against a Loki datasource to search logs |
| get_loki_labelsB | Get all label names available in a Loki datasource |
| get_loki_label_valuesC | Get all values for a specific label in a Loki datasource |
| get_loki_seriesC | Get series (label combinations) matching label selectors from a Loki datasource |
| build_logql_queryC | Help build a LogQL query with suggestions for log stream selectors and filters |
| get_loki_statsC | Get statistics about ingestion and query performance from a Loki datasource |
| list_alert_rulesC | List all alert rules in Grafana |
| get_alert_ruleC | Get detailed information about a specific alert rule |
| create_alert_ruleD | Create a new alert rule |
| update_alert_ruleC | Update an existing alert rule |
| delete_alert_ruleC | Delete an alert rule by UID |
| list_contact_pointsB | List all notification contact points |
| get_contact_pointC | Get detailed information about a specific contact point |
| test_contact_pointC | Send a test notification to a contact point |
| list_alert_rule_groupsC | List all alert rule groups |
| generate_deeplinkC | Generate a deeplink URL for Grafana dashboards, panels, or explore view |
| generate_dashboard_urlC | Generate a URL for a specific dashboard with optional time range and variables |
| generate_panel_urlC | Generate a URL for a specific panel with optional time range |
| generate_explore_urlC | Generate a URL for the Explore view with optional datasource and query |
| generate_prometheus_explore_urlC | Generate an Explore URL for Prometheus queries with specific options |
| generate_loki_explore_urlC | Generate an Explore URL for Loki log queries |
| get_time_range_presetsB | Get common time range presets for Grafana |
| validate_time_rangeC | Validate a time range for Grafana usage |
| discover_sensorsA | Scan ports for active SSH-tunneled Corelight sensor Grafana instances. Returns connected sensors with hostname, port, Grafana version, and Prometheus status. |
| sensor_statusA | Get live performance snapshot for a sensor: Gbps, kpps, klogps, drop rates, max worker CPU, buffer utilization, and system memory. Uses 5-min rate smoothing. |
| query_sensor_metricA | Execute arbitrary PromQL against a sensor's Prometheus datasource. Auto-resolves datasource UID and target sensor. |
| deploy_ramp_dashboardB | Deploy the RAMP Performance Analysis dashboard to a sensor's Grafana. Optionally patch with baseline comparison panels by specifying a build and profile. |
| list_baselinesB | List available builds and profiles from baselines.json. Optionally filter by sensor type (e.g., "AP1100", "AP3000"). |
| sensor_performance_verdictA | Compare live sensor metrics against a baseline build and return a structured verdict. Thresholds: <5% = PASS, 5-10% = MINOR REGRESSION (P2), >10% = MAJOR REGRESSION (P1), any drops = FAIL. |
| annotate_testB | Add a Grafana annotation on a sensor for test events (start/end/result/rate change). Supports range annotations and dashboard association. Tagged with ramp-test by default. |
| fleet_verdictC | Run performance verdict against all discovered sensors in parallel. Returns per-sensor results and fleet summary. |
| sensor_trendB | Show a sensor type's performance across all builds in baselines.json. Useful for spotting when regressions were introduced. |
| list_test_runsB | List RAMP test runs from the results directory. Filter by date or sensor name. |
| get_test_resultB | Read the final result (Gbps, kpps, klogps, status) from a RAMP test run. |
| get_test_vitalsB | Read all VITAL metric samples from a RAMP test run (time-series data). |
| summarize_runC | Get a complete summary of a RAMP test run including metadata, final result, vital count, and error status. |
| diagnose_dropsA | Run a comprehensive diagnostic battery against a sensor to identify where drops are occurring and why. Returns drop sources by layer (NIC/Zeek/Suricata), bottleneck classification, and leading indicators. |
| fingerprint_regressionC | Combine performance verdict with live diagnostic data to fingerprint the root cause of a regression. |
| compare_buildsB | Compare two firmware builds across all sensor types and profiles using baseline data. |
| watch_testC | Monitor a sensor during a RAMP test, polling metrics at a configurable interval. |
| explore_sensor_metricsA | List all available Prometheus metric names on a sensor, grouped by subsystem. |
| ixia_set_rateA | Set the Ixia traffic replayer to a specific rate in Gbps. This stops any running test and restarts at the new rate. |
| ixia_stopA | Stop the Ixia traffic replayer. Halts all traffic generation on the specified replayer. |
| ixia_statusC | Check the current status of an Ixia traffic replayer (running/stopped, rate, test model). |
| start_ramp_testA | Start a RAMP performance test on the RAMP server. Set confirm=true to actually start; default is a dry run that shows what would run. |
| stop_ramp_testA | Stop a running RAMP test by killing its tmux session on the RAMP server. |
| test_statusA | Check the status of RAMP tests running on the RAMP server (lists active tmux sessions). |
| fleet_regression_sweepC | Run a regression sweep across all discovered sensors against a specific build. Checks each sensor against all its baseline profiles and optionally fingerprints regressions. |
| forecast_max_rateA | Extrapolate the maximum sustainable traffic rate for a sensor based on current resource utilization. Shows headroom per subsystem (Zeek CPU, buffer, memory) and identifies the limiting factor. |
| preflight_riskA | Assess whether a sensor is ready for a RAMP test by checking for existing drops, memory pressure, CPU baseline, and buffer residue. Returns a risk score and go/no-go recommendation. |
| predict_firmware_impactC | Analyze historical baseline data to predict how the next firmware build will affect performance. Shows trend direction (improving/stable/declining) per sensor type and profile, with fleet-wide risk. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 80 tools
The tool set has clear distinctions in many areas, such as alert rules, dashboards, and datasources, but there is significant overlap in URL generation tools (e.g., generate_dashboard_url, generate_deeplink, generate_explore_url) and query-building tools (e.g., build_logql_query, build_prometheus_query), which could cause confusion. Additionally, tools like sensor_performance_verdict and fleet_verdict have similar purposes but differ in scope, potentially leading to misselection.
Most tools follow a consistent verb_noun pattern (e.g., create_alert_rule, delete_dashboard, list_datasources), which aids readability. However, there are minor deviations, such as annotate_test (verb_noun but with a suffix) and tools like ixia_set_rate or ixia_status that use a prefix, slightly breaking the pattern but not severely impacting consistency.
With 80 tools, the count is excessive for a Grafana MCP server, making it overwhelming and difficult to navigate. While Grafana is a broad platform, the tool set includes many specialized or redundant tools (e.g., multiple URL generators and query helpers) that could be consolidated, indicating poor scoping and a heavy interface that may hinder agent usability.
The tool set provides comprehensive coverage for Grafana operations, including CRUD for dashboards, alert rules, and datasources, as well as advanced features like performance testing, diagnostics, and fleet management. There are no obvious gaps; it supports full lifecycle management, querying, monitoring, and integration with external systems like Prometheus and Loki, ensuring agents can handle diverse tasks without dead ends.