Skip to main content
Glama

Grafana MCP Server

by levalhq

@leval/mcp-grafana

Complete TypeScript/JavaScript implementation of the Model Context Protocol (MCP) server for Grafana, enabling AI assistants to interact with Grafana dashboards, datasources, alerts, incidents, and more.

npm version npm downloads License MCP GitHub stars

๐Ÿš€ Features

  • 43 Comprehensive Tools: Complete Grafana functionality via MCP

  • Multiple MCP Clients Support: Works with Claude Desktop, Claude Code, Cursor, Zed, Codex

  • Type-Safe Implementation: Built with TypeScript for reliability

  • Easy Installation: Available via npm/npx - no compilation needed

  • Production Ready: Comprehensive error handling and logging

  • Full Authentication Support: Service accounts, API keys, basic auth, mTLS

๐Ÿ“ฆ Installation

Option 1: Global Installation

npm install -g @leval/mcp-grafana

Option 2: Run with npx (no installation)

npx @leval/mcp-grafana

Option 3: Local Development

git clone https://github.com/levalhq/mcp-grafana.git cd mcp-grafana npm install npm run build

๐Ÿ”ง Configuration

Environment Variables

Create a .env file in your project root:

# Required GRAFANA_URL=https://your-grafana-instance.com # Authentication (use one) GRAFANA_SERVICE_ACCOUNT_TOKEN=glsa_xxxxxxxxxxxx # Recommended # OR GRAFANA_USERNAME=username # Basic auth GRAFANA_PASSWORD=password # Optional DEBUG=true # Enable debug logging TLS_CERT_FILE=/path/to/cert.pem # mTLS certificate TLS_KEY_FILE=/path/to/key.pem # mTLS key TLS_CA_FILE=/path/to/ca.pem # Custom CA certificate TLS_SKIP_VERIFY=true # Skip TLS verification

๐Ÿค– MCP Client Configuration

Claude Desktop

Config File Locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Configuration:

{ "mcpServers": { "grafana": { "command": "npx", "args": ["@leval/mcp-grafana"], "env": { "GRAFANA_URL": "https://your-grafana.com", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx" } } } }

Usage:

  1. Save the configuration file

  2. Restart Claude Desktop

  3. Look for the MCP icon (๐Ÿ”Œ) in the interface

  4. Ask Claude: "What dashboards are available in my Grafana?"


Claude Code (VS Code Extension)

{ "claude.mcpServers": { "grafana": { "command": "npx", "args": ["@leval/mcp-grafana"], "env": { "GRAFANA_URL": "https://your-grafana.com", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx" } } } }

Or configure globally in VS Code settings:

  1. Open Command Palette (Cmd/Ctrl + Shift + P)

  2. Search for "Preferences: Open User Settings (JSON)"

  3. Add the claude.mcpServers configuration

Usage:

  • Open Claude panel in VS Code

  • The MCP server will start automatically

  • Ask: "Show me the error rate from our Prometheus metrics"


Cursor

Configuration: Add to .cursor/settings.json in your project root:

{ "ai.mcpServers": { "grafana": { "command": "npx", "args": ["@leval/mcp-grafana"], "env": { "GRAFANA_URL": "https://your-grafana.com", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx" } } } }

Or configure globally:

  1. Open Cursor Settings (Cmd/Ctrl + ,)

  2. Go to "Features" โ†’ "AI" โ†’ "MCP Servers"

  3. Add the Grafana server configuration

Usage:

  • Press Cmd/Ctrl + K to open AI chat

  • The MCP indicator will show when connected

  • Try: "Analyze the Loki logs for errors in the last hour"


Zed

Configuration: Add to ~/.config/zed/settings.json:

{ "assistant": { "version": "2", "mcp_servers": { "grafana": { "command": "npx", "args": ["@leval/mcp-grafana"], "env": { "GRAFANA_URL": "https://your-grafana.com", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx" } } } } }

Usage:

  1. Open Assistant panel (Cmd/Ctrl + ?)

  2. The MCP server starts automatically

  3. Ask: "List all datasources and their types"


Codex (GitHub Copilot Workspace)

Configuration: Add to .github/codex/mcp-config.json:

{ "servers": { "grafana": { "command": "npx", "args": ["@leval/mcp-grafana"], "env": { "GRAFANA_URL": "https://your-grafana.com", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx" } } } }

Usage:

  • Open Codex workspace

  • The MCP server connects automatically

  • Use in prompts: "Create a dashboard based on our current metrics"


Continue.dev

Configuration: Add to ~/.continue/config.json:

{ "models": [...], "mcpServers": { "grafana": { "command": "npx", "args": ["@leval/mcp-grafana"], "env": { "GRAFANA_URL": "https://your-grafana.com", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx" } } } }

Usage:

  • Open Continue panel in your IDE

  • MCP connection status shown in status bar

  • Ask: "What alerts are currently firing?"


Windsurf

Configuration: Add to .windsurf/mcp-servers.json:

{ "grafana": { "command": "npx", "args": ["@leval/mcp-grafana"], "env": { "GRAFANA_URL": "https://your-grafana.com", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx" } } }

Usage:

  • Windsurf automatically detects and connects to MCP servers

  • Use Cascade AI with Grafana context

๐Ÿ“š Available Tools (43 Total)

Dashboard Management (5 tools)

Tool

Description

Example Usage

search_dashboards

Search for dashboards

"Find dashboards with 'cpu' in the name"

get_dashboard_by_uid

Get complete dashboard JSON

"Show me the dashboard with UID abc123"

get_dashboard_summary

Get dashboard metadata

"Summarize the monitoring dashboard"

get_dashboard_property

Extract specific properties

"Get all panel titles from dashboard xyz"

update_dashboard

Create or update dashboards

"Add a new panel to track memory usage"

Data Sources (3 tools)

Tool

Description

Example Usage

list_datasources

List all datasources

"What datasources are configured?"

get_datasource_by_uid

Get datasource by UID

"Show details for datasource uid-123"

get_datasource_by_name

Get datasource by name

"Get the Prometheus datasource config"

Prometheus (5 tools)

Tool

Description

Example Usage

query_prometheus

Execute PromQL queries

"Show CPU usage for the last hour"

list_prometheus_metric_names

List available metrics

"What metrics are available?"

list_prometheus_label_names

List label names

"Show all Prometheus labels"

list_prometheus_label_values

Get label values

"What values exist for the 'env' label?"

list_prometheus_metric_metadata

Get metric metadata

"Describe the node_cpu_seconds metric"

Loki Logs (5 tools)

Tool

Description

Example Usage

query_loki_logs

Execute LogQL queries

"Show error logs from the API service"

query_loki_stats

Get log stream statistics

"How many log entries in the last day?"

list_loki_label_names

List log label names

"What labels are in our logs?"

list_loki_label_values

Get log label values

"Show all namespaces in logs"

find_error_pattern_logs

Find error patterns

"Analyze error patterns in production"

Incident Management (4 tools)

Tool

Description

Example Usage

list_incidents

List incidents

"Show all active incidents"

get_incident

Get incident details

"Details for incident INC-123"

create_incident

Create new incident

"Create a critical incident for API outage"

add_activity_to_incident

Add notes to incidents

"Add update to incident INC-123"

Additional Categories

  • Alerting (3 tools): Alert rules, contact points

  • OnCall (5 tools): Schedules, shifts, on-call users

  • Sift (4 tools): Investigations, slow request analysis

  • Pyroscope (4 tools): Profiling data, performance analysis

  • Admin (2 tools): User and team management

  • Navigation (1 tool): Generate Grafana deeplinks

  • Asserts (1 tool): Entity assertions

๐Ÿ”’ Security

Creating a Service Account Token (Recommended)

  1. In Grafana UI:

    • Go to Administration โ†’ Service accounts

    • Click "Add service account"

    • Name it (e.g., "mcp-server")

    • Click "Create"

    • Click "Add service account token"

    • Generate token and copy it

  2. Required Permissions:

    • dashboards:read - View dashboards

    • datasources:read - View datasources

    • alert.rules:read - View alert rules

    • logs:read - Query Loki

    • metrics:read - Query Prometheus

    • incidents:write - Manage incidents (if needed)

Best Practices

  • Use service account tokens instead of API keys

  • Store tokens in environment variables, not in code

  • Use read-only permissions where possible

  • Enable TLS/mTLS for production environments

  • Regularly rotate tokens

๐Ÿงช Testing

Quick Test

# Test connection curl -H "Authorization: Bearer YOUR_TOKEN" \ https://your-grafana.com/api/org # Test with the MCP server npx @leval/mcp-grafana --debug

Run Test Suite

# Clone the repository git clone https://github.com/levalhq/mcp-grafana.git cd mcp-grafana # Install dependencies npm install # Run tests npm test # Test with your Grafana instance node test/test-connection.js node test/test-api.js

๐Ÿ“Š Performance

  • Startup time: < 1 second

  • Tool registration: < 100ms for all 43 tools

  • Query response: 200-500ms typical

  • Memory usage: ~50MB baseline

  • Connection pooling: Reuses HTTP connections

๐Ÿ› Troubleshooting

MCP Server Not Starting

# Check if running correctly npx @leval/mcp-grafana --debug # Should output: # Starting MCP Grafana server with stdio transport... # MCP server started with stdio transport

Connection Issues

# Test your credentials curl -H "Authorization: Bearer YOUR_TOKEN" \ https://your-grafana.com/api/org # Check response - should return org details

Client Not Detecting Server

  1. Verify configuration file location

  2. Check JSON syntax is valid

  3. Restart the client application

  4. Look for MCP indicator in UI

  5. Check client logs for errors

Common Error Messages

Error

Solution

"Authentication failed"

Check your service account token

"No datasources found"

Verify datasource permissions

"Tool not found"

Ensure all tools are enabled

"Connection timeout"

Check network and Grafana URL

"Permission denied"

Add required permissions to service account

๐Ÿ“ˆ Advanced Configuration

Disable Specific Tool Categories

npx @leval/mcp-grafana \ --disable-incident \ --disable-oncall \ --disable-sift

Custom TLS Configuration

export TLS_CERT_FILE=/path/to/cert.pem export TLS_KEY_FILE=/path/to/key.pem export TLS_CA_FILE=/path/to/ca.pem npx @leval/mcp-grafana

Debug Mode

npx @leval/mcp-grafana --debug # Or export DEBUG=true npx @leval/mcp-grafana

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

# Fork and clone git clone https://github.com/levalhq/mcp-grafana.git cd mcp-grafana # Install dependencies npm install # Make changes and test npm test # Build npm run build # Submit PR

Feature Status

All features from the original Go implementation have been migrated:

  • โœ… Core MCP server with stdio transport

  • โœ… Dashboard operations (search, retrieve, update, create)

  • โœ… Data source management

  • โœ… Prometheus queries and metadata

  • โœ… Loki log queries and label exploration

  • โœ… Incident management and timeline

  • โœ… Alert management and contact points

  • โœ… OnCall schedules and shifts

  • โœ… Sift investigations and analysis

  • โœ… Pyroscope profiling

  • โœ… Authentication methods (API key, service account, basic auth, mTLS)

  • โœ… TLS configuration and custom CA support

๐Ÿ“„ License

Apache-2.0 - See LICENSE file for details

๐Ÿ“ฆ NPM Package

This package is published on npm as @leval/mcp-grafana

# Install globally npm install -g @leval/mcp-grafana # Or use directly with npx npx @leval/mcp-grafana # View package info npm info @leval/mcp-grafana

๐Ÿ†˜ Support

๐ŸŽ‰ Acknowledgments

This TypeScript implementation provides full feature parity with the original Go version, with improved npm ecosystem integration and support for all major MCP clients.

Made with โค๏ธ for the Grafana and AI community

Deploy Server
-
security - not tested
F
license - not found
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Enables AI assistants to interact with Grafana dashboards, datasources, alerts, incidents, and monitoring data through 43 comprehensive tools. Supports querying Prometheus metrics, Loki logs, managing incidents, and dashboard operations with full authentication support.

  1. ๐Ÿš€ Features
    1. ๐Ÿ“ฆ Installation
      1. Option 1: Global Installation
      2. Option 2: Run with npx (no installation)
      3. Option 3: Local Development
    2. ๐Ÿ”ง Configuration
      1. Environment Variables
    3. ๐Ÿค– MCP Client Configuration
      1. Claude Desktop
      2. Claude Code (VS Code Extension)
      3. Cursor
      4. Zed
      5. Codex (GitHub Copilot Workspace)
      6. Continue.dev
      7. Windsurf
    4. ๐Ÿ“š Available Tools (43 Total)
      1. Dashboard Management (5 tools)
      2. Data Sources (3 tools)
      3. Prometheus (5 tools)
      4. Loki Logs (5 tools)
      5. Incident Management (4 tools)
      6. Additional Categories
    5. ๐Ÿ”’ Security
      1. Creating a Service Account Token (Recommended)
      2. Best Practices
    6. ๐Ÿงช Testing
      1. Quick Test
      2. Run Test Suite
    7. ๐Ÿ“Š Performance
      1. ๐Ÿ› Troubleshooting
        1. MCP Server Not Starting
        2. Connection Issues
        3. Client Not Detecting Server
        4. Common Error Messages
      2. ๐Ÿ“ˆ Advanced Configuration
        1. Disable Specific Tool Categories
        2. Custom TLS Configuration
        3. Debug Mode
      3. ๐Ÿค Contributing
        1. Feature Status
      4. ๐Ÿ“„ License
        1. ๐Ÿ“ฆ NPM Package
          1. ๐Ÿ†˜ Support
            1. ๐ŸŽ‰ Acknowledgments

              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/levalhq/mcp-grafana'

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