Grafana

Official

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides access to Grafana dashboards, data sources, and ecosystem tools, enabling search and retrieval of dashboards, querying of data sources (Prometheus, Loki), incident management, alerting capabilities, and OnCall functionality.

  • Allows querying Prometheus data sources, retrieving metric metadata, listing metric names, and exploring label names and values to analyze time series data.

Grafana MCP server

A Model Context Protocol (MCP) server for Grafana.

This provides 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
    • Loki
      • Log queries
      • Metric queries
    • Tempo
    • Pyroscope
  • Query Prometheus metadata
    • Metric metadata
    • Metric names
    • Label names
    • Label values
  • Query Loki metadata
    • Label names
    • Label values
    • Stats
  • Search, create, update and close incidents
  • Start Sift investigations and view the results
  • Alerting
    • List and fetch alert rule information
    • Get alert rule statuses (firing/normal/error/etc.)
    • Create and change alert rules
    • List contact points
    • Create and change contact points
  • Access Grafana OnCall functionality
    • List and manage schedules
    • Get shift details
    • Get current on-call users
    • List teams and users
    • List alert groups

The list of tools is configurable, so you can choose which tools you want to make available to the MCP client. This is useful if you don't use certain functionality or if you don't want to take up too much of the context window. To disable a category of tools, use the --disable-<category> flag when starting the server. For example, to disable the OnCall tools, use --disable-oncall.

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
add_activity_to_incidentIncidentAdd an activity item to an incident in Grafana Incident
resolve_incidentIncidentResolve an incident in Grafana Incident
query_loki_logsLokiQuery and retrieve logs using LogQL (either log or metric queries)
list_loki_label_namesLokiList all available label names in logs
list_loki_label_valuesLokiList values for a specific log label
query_loki_statsLokiGet statistics about log streams
list_alert_rulesAlertingList alert rules
get_alert_rule_by_uidAlertingGet alert rule by UID
list_oncall_schedulesOnCallList schedules from Grafana OnCall
get_oncall_shiftOnCallGet details for a specific OnCall shift
get_current_oncall_usersOnCallGet users currently on-call for a specific schedule
list_oncall_teamsOnCallList teams from Grafana OnCall
list_oncall_usersOnCallList users from Grafana OnCall

Usage

  1. Create a service account in Grafana with enough permissions to use the tools you want to use, generate a service account token, and copy it to the clipboard for use in the configuration file. Follow the Grafana documentation for details.
  2. Download the latest release of mcp-grafana from the releases page and place it in your $PATH.If you have a Go toolchain installed you can also build and install it from source, using the GOBIN environment variable to specify the directory where the binary should be installed. This should also be in your PATH.
    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. For example, for Claude Desktop:
    { "mcpServers": { "grafana": { "command": "mcp-grafana", "args": [], "env": { "GRAFANA_URL": "http://localhost:3000", "GRAFANA_API_KEY": "<your service account token>" } } } }

Note: if you see Error: spawn mcp-grafana ENOENT in Claude Desktop, you need to specify the full path to mcp-grafana.

Debug Mode

You can enable debug mode for the Grafana transport by adding the -debug flag to the command. This will provide detailed logging of HTTP requests and responses between the MCP server and the Grafana API, which can be helpful for troubleshooting.

To use debug mode with the Claude Desktop configuration, update your config as follows:

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

Development

Contributions are welcome! Please open an issue or submit a pull request if you have any suggestions or improvements.

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 using the SSE transport inside Docker. To build the image, use

make build-image

And to run the image, use:

docker run -it --rm -p 8000:8000 mcp-grafana:latest

Testing

There are three types of tests available:

  1. Unit Tests (no external dependencies required):
make test-unit

You can also run unit tests with:

make test
  1. Integration Tests (requires docker containers to be up and running):
make test-integration
  1. Cloud Tests (requires cloud Grafana instance and credentials):
make test-cloud

Note: Cloud tests are automatically configured in CI. For local development, you'll need to set up your own Grafana Cloud instance and credentials.

More comprehensive integration tests will require a Grafana instance to be running locally on port 3000; you can start one with Docker Compose:

docker-compose up -d

The integration tests can be run with:

make test-all

If you're adding more tools, please add integration tests for them. The existing tests should be a good starting point.

Linting

To lint the code, run:

make lint

This includes a custom linter that checks for unescaped commas in jsonschema struct tags. The commas in description fields must be escaped with \\, to prevent silent truncation. You can run just this linter with:

make lint-jsonschema

See the JSONSchema Linter documentation for more details.

License

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

-
security - not tested
A
license - permissive license
-
quality - not tested

A Model Context Protocol (MCP) server for Grafana.

This provides access to your Grafana instance and the surrounding ecosystem.

  1. Features
    1. Tools
  2. Usage
    1. Debug Mode
  3. Development
    1. Testing
    2. Linting
  4. License
    ID: s29pkmp7d9