Skip to main content
Glama
lukleh

mcp-read-only-grafana

by lukleh

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_connectionsA

List all available Grafana connections with their configuration details.

Returns: JSON string with connection details including name, url, and description.

get_healthA

Check Grafana instance health and version information.

Args: connection_name: Name of the Grafana connection to check

Returns: JSON string with health status and version information.

get_current_orgB

Get current organization information.

Args: connection_name: Name of the Grafana connection

Returns: JSON string with organization details.

search_dashboardsA

Search for dashboards by name or tag.

Args: connection_name: Name of the Grafana connection query: Optional search query for dashboard names tag: Optional tag to filter dashboards limit: Optional maximum number of results per page page: Optional page number (1-indexed) fields: Optional subset of Grafana search fields to return (for example: id,orgId,uid,title,uri,url,slug,type,tags,isStarred,folderId,folderUid,folderTitle,folderUrl)

Returns: JSON string with list of matching dashboards.

get_dashboard_infoA

Get lightweight dashboard metadata and panel list (without full panel definitions).

This is the RECOMMENDED first step for exploring dashboards, especially large ones. Returns dashboard metadata, variables, and a list of all panels with basic info (id, title, type). Use get_dashboard_panel() to get full details for specific panels of interest.

Args: connection_name: Name of the Grafana connection dashboard_uid: UID of the dashboard

Returns: JSON string with dashboard metadata and panel summary list.

get_dashboard_panelA

Get full configuration for a single panel from a dashboard.

Use this after get_dashboard_info() to explore specific panels in detail. Returns complete panel definition including queries, transforms, and display settings.

Args: connection_name: Name of the Grafana connection dashboard_uid: UID of the dashboard panel_id: ID of the specific panel to retrieve

Returns: JSON string with complete panel configuration.

get_dashboardA

Get full dashboard definition including all panels and settings.

WARNING: Large dashboards (>50 panels) will likely exceed MCP response limits (25,000 tokens). For large dashboards, use this workflow instead:

  1. get_dashboard_info() - Get overview and panel list

  2. get_dashboard_panel() - Get details for specific panels of interest

Args: connection_name: Name of the Grafana connection dashboard_uid: UID of the dashboard to retrieve

Returns: JSON string with complete dashboard definition.

get_dashboard_panelsA

Get simplified panel information from a dashboard.

Use this instead of get_dashboard() for large dashboards to avoid MCP size limits. Returns only essential panel information without full query definitions.

Args: connection_name: Name of the Grafana connection dashboard_uid: UID of the dashboard

Returns: JSON string with list of panels and their basic properties.

list_foldersB

List all folders in the Grafana instance.

Args: connection_name: Name of the Grafana connection

Returns: JSON string with list of folders and their properties.

list_folder_dashboardsA

List all dashboards in a specific folder.

Args: connection_name: Name of the Grafana connection folder_uid: UID of the folder limit: Optional maximum results per page page: Optional page number fields: Optional subset of Grafana search fields to return (for example: id,orgId,uid,title,uri,url,slug,type,tags,isStarred,folderId,folderUid,folderTitle,folderUrl)

Returns: JSON string with list of dashboards in the folder.

get_dashboard_versionsA

Get version history of a dashboard.

Args: connection_name: Name of the Grafana connection dashboard_uid: UID of the dashboard

Returns: JSON string with list of dashboard versions.

list_datasourcesB

List all configured data sources in Grafana.

Args: connection_name: Name of the Grafana connection

Returns: JSON string with list of data sources and their configuration.

get_datasource_healthA

Run the health check for a specific datasource.

Args: connection_name: Name of the Grafana connection datasource_uid: UID of the datasource to probe

Returns: JSON string with health information reported by Grafana. If Grafana returns 404, the tool returns a structured unsupported or not_found result instead of a raw error.

query_prometheusA

Execute a PromQL query against a Prometheus datasource.

Args: connection_name: Name of the Grafana connection datasource_uid: UID of the Prometheus datasource query: PromQL query to execute time_from: Start time (e.g., 'now-1h' or timestamp) time_to: End time (e.g., 'now' or timestamp) step: Query resolution step (e.g., '15s')

Returns: JSON string with query results.

query_lokiA

Execute a LogQL query against a Loki datasource.

Args: connection_name: Name of the Grafana connection datasource_uid: UID of the Loki datasource query: LogQL query to execute time_from: Start time in nanoseconds or relative time time_to: End time in nanoseconds or relative time limit: Maximum number of log lines to return

Returns: JSON string with query results.

explore_queryB

Execute a Grafana Explore query via the /api/ds/query endpoint.

Args: connection_name: Name of the Grafana connection queries: List of Explore query definitions to execute range_from: Optional relative or absolute start time (e.g., 'now-6h') range_to: Optional end time (e.g., 'now') max_data_points: Optional maximum number of datapoints to request interval_ms: Optional query interval in milliseconds additional_options: Extra fields to merge into the request body

Returns: JSON string with the query response payload.

list_alertsA

List alert rules, optionally filtered by folder.

Args: connection_name: Name of the Grafana connection folder_uid: Optional folder UID to filter alerts

Returns: JSON string with list of alert rules and their status.

get_alert_rule_by_uidA

Get detailed information about a specific alert rule.

Args: connection_name: Name of the Grafana connection alert_uid: UID of the alert rule

Returns: JSON string with alert rule details.

get_ruler_rulesA

Get all alert rules from the Ruler API.

Returns a dict mapping namespace (folder) to list of rule groups. Each rule group contains rules and evaluation configuration. This is the non-admin alternative to the Provisioning API.

Args: connection_name: Name of the Grafana connection

Returns: JSON string with all rule groups organized by namespace.

get_ruler_namespace_rulesA

Get all rule groups for a specific namespace (folder).

Args: connection_name: Name of the Grafana connection namespace: The namespace/folder name

Returns: JSON string with dict mapping namespace to rule groups.

get_ruler_groupA

Get a specific alert rule group from a namespace.

Args: connection_name: Name of the Grafana connection namespace: The namespace/folder name group_name: The rule group name

Returns: JSON string with rule group configuration including all rules.

get_alert_rules_with_stateA

Get all alert rules with their current evaluation state.

This endpoint returns rules organized by namespace with their current state (Normal, Pending, Alerting, NoData, Error). It's the same endpoint used by Grafana's Alert List panel - useful for checking if an alert is working after creation.

Args: connection_name: Name of the Grafana connection state: Optional filter by state (e.g., "firing", "pending", "inactive") rule_name: Optional filter by rule name (partial match)

Returns: JSON string with rules organized by namespace, each including state, health, and evaluation info.

get_firing_alertsA

Get currently firing alert instances from Alertmanager.

Returns alerts that have transitioned from Pending to Firing state. Use this to see which alerts are actively firing and their details.

Args: connection_name: Name of the Grafana connection filter_labels: Optional label matchers (e.g., ["alertname=HighCPU", "severity=critical"]) silenced: Include silenced alerts (default: true) inhibited: Include inhibited alerts (default: true) active: Include active alerts (default: true)

Returns: JSON string with list of firing alert instances including labels, annotations, and startsAt.

get_alert_state_historyA

Get alert state transition history.

Returns the history of state changes for alert rules, including transitions between Normal, Pending, Alerting, NoData, and Error states. Useful for debugging alert behavior and understanding evaluation patterns.

Args: connection_name: Name of the Grafana connection rule_uid: Optional filter by specific rule UID labels: Optional label matchers to filter history from_time: Start time (ISO 8601 or relative like "now-1h") to_time: End time (ISO 8601 or relative like "now") limit: Maximum number of history entries to return

Returns: JSON string with state history entries including timestamps and state transitions.

get_current_userA

Get profile information for the authenticated Grafana user.

Note: This endpoint only works with session-based authentication. API keys are service account tokens and are not associated with a user profile. When using API key auth, this will return a 404 error.

Args: connection_name: Name of the Grafana connection

Returns: JSON string describing the current user (id, login, email, role, etc.). When the connection uses API key auth, returns a structured explanation instead of surfacing Grafana's raw 404 response.

get_user_permissionsA

Get permissions granted to the authenticated user.

Lists the permissions granted to the signed-in user. Returns a map of action names to their authorized scopes. Useful for checking what the current API key or session can access.

Note: Requires Grafana 8.0+ with RBAC enabled. May return 404 on older versions or instances without fine-grained access control.

Args: connection_name: Name of the Grafana connection

Returns: JSON string mapping action names to authorized scopes.

list_usersA

List all users in the current organization.

Args: connection_name: Name of the Grafana connection page: Optional page number (1-indexed) per_page: Optional page size fields: Optional subset of Grafana org-user fields (for example: orgId,userId,avatarUrl,email,name,login,role,lastSeenAt,lastSeenAtAge,authLabels)

Returns: JSON string with list of users.

list_teamsA

List all teams in the organization.

Args: connection_name: Name of the Grafana connection page: Optional page number per_page: Optional page size fields: Optional subset of Grafana team fields (for example: id,orgId,uid,name,avatarUrl,email,memberCount)

Returns: JSON string with list of teams.

list_annotationsB

List annotations for a time range.

Args: connection_name: Name of the Grafana connection time_from: Start time for annotations time_to: End time for annotations dashboard_id: Filter by dashboard ID tags: Filter by tags

Returns: JSON string with list of annotations.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lukleh/mcp-read-only-grafana'

If you have feedback or need assistance with the MCP directory API, please join our Discord server