Grafana MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Enable debug logging | false |
| GRAFANA_URL | No | The URL of your Grafana instance | |
| TLS_CA_FILE | No | Path to custom CA certificate file | |
| TLS_KEY_FILE | No | Path to mTLS key file | |
| TLS_CERT_FILE | No | Path to mTLS certificate file | |
| TLS_SKIP_VERIFY | No | Skip TLS verification | false |
| GRAFANA_PASSWORD | No | Grafana password for basic authentication | |
| GRAFANA_USERNAME | No | Grafana username for basic authentication | |
| GRAFANA_SERVICE_ACCOUNT_TOKEN | No | Grafana service account token (recommended authentication method) |
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
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_dashboardsB | Search for Grafana dashboards by a query string. Returns a list of matching dashboards with details like title, UID, folder, tags, and URL. |
| get_dashboard_by_uidB | Retrieves the complete dashboard, including panels, variables, and settings, for a specific dashboard identified by its UID |
| get_dashboard_summaryB | Get a compact summary of a dashboard including title, panel count, panel types, variables, and other metadata |
| get_dashboard_propertyB | Get specific parts of a dashboard using JSONPath expressions to minimize context window usage |
| get_dashboard_panel_queriesC | Retrieve panel queries and information from a Grafana dashboard |
| update_dashboardC | Create or update a dashboard using either full JSON or efficient patch operations |
| list_datasourcesB | List available Grafana datasources. Optionally filter by datasource type. |
| get_datasource_by_uidC | Retrieves detailed information about a specific datasource using its UID. |
| get_datasource_by_nameB | Retrieves detailed information about a specific datasource using its name. |
| query_prometheusA | Query Prometheus using a PromQL expression. Supports both instant and range queries. |
| list_prometheus_metric_namesC | List metric names in a Prometheus datasource. Retrieves all metric names and filters them using regex. |
| list_prometheus_label_namesB | List label names in a Prometheus datasource. Allows filtering by series selectors and time range. |
| list_prometheus_label_valuesB | Get the values for a specific label name in Prometheus. Allows filtering by series selectors and time range. |
| list_prometheus_metric_metadataC | List Prometheus metric metadata. Returns metadata about metrics currently scraped from targets. |
| list_loki_label_namesA | Lists all available label names (keys) found in logs within a specified Loki datasource and time range |
| list_loki_label_valuesB | Retrieves all unique values associated with a specific labelName within a Loki datasource and time range |
| query_loki_logsB | Executes a LogQL query against a Loki datasource to retrieve log entries or metric values |
| query_loki_statsC | Retrieves statistics about log streams matching a given LogQL selector within a Loki datasource |
| find_error_pattern_logsC | Searches Loki logs for elevated error patterns and returns the results |
| list_incidentsB | List Grafana incidents. Allows filtering by status and optionally including drill incidents |
| get_incidentA | Get a single incident by ID. Returns the full incident details |
| create_incidentC | Create a new Grafana incident. Requires title, severity, and room prefix |
| add_activity_to_incidentB | Add a note (userNote activity) to an existing incident's timeline |
| list_alert_rulesB | Lists Grafana alert rules, returning a summary including UID, title, current state, and labels |
| get_alert_rule_by_uidB | Retrieves the full configuration and detailed status of a specific Grafana alert rule |
| list_contact_pointsB | Lists Grafana notification contact points, returning a summary including UID, name, and type |
| list_oncall_schedulesB | List Grafana OnCall schedules, optionally filtering by team ID |
| list_oncall_teamsB | List teams configured in Grafana OnCall |
| list_oncall_usersB | List users from Grafana OnCall. Can retrieve all users, a specific user, or filter by username |
| get_current_oncall_usersB | Get the list of users currently on-call for a specific Grafana OnCall schedule |
| get_oncall_shiftC | Get detailed information for a specific Grafana OnCall shift |
| list_teamsC | Search for Grafana teams by a query string. Returns a list of matching teams with details |
| list_users_by_orgB | List users by organization. Returns a list of users with details like userid, email, role etc |
| list_sift_investigationsC | Retrieves a list of Sift investigations with an optional limit |
| get_sift_investigationC | Retrieves an existing Sift investigation by its UUID |
| get_sift_analysisC | Retrieves a specific analysis from an investigation by its UUID |
| find_slow_requestsC | Searches relevant Tempo datasources for slow requests and returns the results |
| list_pyroscope_label_namesB | Lists all available label names found in profiles within a Pyroscope datasource |
| list_pyroscope_label_valuesC | Lists all available label values for a particular label name in profiles |
| list_pyroscope_profile_typesB | Lists all available profile types in a Pyroscope datasource |
| fetch_pyroscope_profileC | Fetches a profile from a Pyroscope data source for a given time range |
| generate_deeplinkB | Generate deeplink URLs for Grafana resources. Supports dashboards, panels, and Explore queries |
| get_assertionsC | Get assertion summary for a given entity with its type, name, env, site, namespace, and time range |
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 43 tools
Most tools have distinct purposes targeting specific resources like dashboards, incidents, or datasources, with clear action differentiation (e.g., list_alert_rules vs. get_alert_rule_by_uid). However, some overlap exists in list operations across different data sources (e.g., list_loki_label_names and list_prometheus_label_names) which could cause minor confusion, though descriptions help clarify the datasource focus.
Tool names follow a highly consistent verb_noun pattern throughout, such as list_alert_rules, get_dashboard_by_uid, and query_loki_logs. All tools use snake_case without deviation, making them predictable and easy to parse for agents, with verbs like 'list', 'get', 'query', and 'create' applied uniformly across resources.
With 43 tools, the count is excessive for a single server, leading to potential cognitive overload and reduced usability. While Grafana's broad scope (incidents, dashboards, datasources, etc.) justifies many tools, this high number feels heavy and could overwhelm agents, suggesting the surface might benefit from consolidation or modularization.
The tool set provides comprehensive coverage for Grafana's domain, including CRUD operations for incidents, dashboards, and datasources, along with querying, listing, and analysis tools across Loki, Prometheus, and Pyroscope. There are no obvious gaps; agents can perform full lifecycle management and detailed investigations without dead ends.