MCP HubMCP Hub
grafana

mcp-grafana

by: grafana

MCP server for Grafana

528created 24/12/2024
Visit
Grafana

📌Overview

Purpose: The MCP server for Grafana facilitates access to Grafana instances and enhances interaction with its ecosystem.

Overview: This framework allows users to interact with Grafana's features by providing tools for searching dashboards, managing data sources, querying metrics, and handling incidents. The server is designed to be configurable, catering to specific user needs and optimizing the context window.

Key Features:

  • Search Dashboards: Enables users to search for and retrieve dashboards, enhancing discoverability and accessibility.

  • Datasource Management: Lists and fetches information on various data sources, allowing users to manage connections effectively.

  • Querying Capabilities: Supports querying of Prometheus and Loki for both metrics and logs, enabling detailed analysis and insights.

  • Incident Management: Facilitates search, creation, update, and closure of incidents, improving operational response times.

  • Alerting System: Offers features to manage alert rules, including listing and fetching alert rule information, which helps maintain system reliability.


Grafana MCP Server

A Model Context Protocol (MCP) server for Grafana, providing access to your Grafana instance and the surrounding ecosystem.

Features

  • Search for dashboards
  • Get dashboard by UID
  • List and fetch datasource information
  • Query datasources (Prometheus and Loki)
    • Log queries
    • Metric queries
  • Query Prometheus metadata
    • Metric metadata
    • Metric names
    • Label names
    • Label values
  • Query Loki metadata
    • Label names
    • Label values
    • Stats
  • Manage incidents (search, create, update, close)
  • Alerting functionality (list, fetch, and manage alert rule information)

Tools

ToolCategoryDescription
search_dashboardsSearchSearch for dashboards
get_dashboard_by_uidDashboardGet a dashboard by UID
list_datasourcesDatasourcesList datasources
get_datasource_by_uidDatasourcesGet a datasource by UID
get_datasource_by_nameDatasourcesGet a datasource by name
query_prometheusPrometheusExecute a query against a Prometheus datasource
list_prometheus_metric_metadataPrometheusList metric metadata
list_prometheus_metric_namesPrometheusList available metric names
list_prometheus_label_namesPrometheusList label names matching a selector
list_prometheus_label_valuesPrometheusList values for a specific label
list_incidentsIncidentList incidents in Grafana Incident
create_incidentIncidentCreate an incident in Grafana Incident
resolve_incidentIncidentResolve an incident in Grafana Incident
query_loki_logsLokiQuery and retrieve logs using LogQL (log or metric queries)
list_alert_rulesAlertingList alert rules

Usage

  1. Create a service account in Grafana with the necessary permissions and generate a token.

  2. Download the latest release of mcp-grafana and place it in your $PATH, or build it from source:

    GOBIN="$HOME/go/bin" go install github.com/grafana/mcp-grafana/cmd/mcp-grafana@latest
    
  3. Add the server configuration to your client configuration file (example for Claude Desktop):

    {
      "mcpServers": {
        "grafana": {
          "command": "mcp-grafana",
          "args": [],
          "env": {
            "GRAFANA_URL": "http://localhost:3000",
            "GRAFANA_API_KEY": "<your service account token>"
          }
        }
      }
    }
    

Note: Specify the full path to mcp-grafana if you encounter an error.

Development

Contributions are welcome! This project is written in Go. Install Go following the instructions for your platform.

To run the server, use:

make run

You can also run the server inside Docker:

make build-image
docker run -it --rm -p 8000:8000 mcp-grafana:latest

Testing

To run unit tests:

make test

For integration tests, ensure a Grafana instance is running on port 3000, which you can start with Docker Compose:

docker-compose up -d
make test-all

Linting

To lint the code:

make lint

License

This project is licensed under the Apache License, Version 2.0.