mcp-read-only-grafana
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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:
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
|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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