/ ディレクトリ / プレイグラウンド / Grafana MCP
● 公式 grafana 🔑 自分のキーが必要

Grafana MCP

作者 grafana · grafana/mcp-grafana

Grafana公式MCP — Prometheus/Loki/Tempoへのクエリ、ダッシュボード一覧、アラート取得、インシデントタイムラインの実行、すべて1つのstdioサーバーで。

GrafanaのファーストパーティMCPサーバーは、Grafanaスタック(OSS・Cloud・Enterprise)に接続し、データソース+管理APIをMCPツールとして公開します。Prometheus/Loki/Tempoクエリ、ダッシュボードのディスカバリ、アラート状態、OnCall、Sift調査など — GrafanaにできることはすべてClaudeが問い合わせできます。

なぜ使うのか

主な機能

ライブデモ

実際の動作

mcp-grafana.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-grafana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_URL": "https://your-grafana.example.com",
        "GRAFANA_API_KEY": "${GRAFANA_API_KEY}"
      }
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcp-grafana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_URL": "https://your-grafana.example.com",
        "GRAFANA_API_KEY": "${GRAFANA_API_KEY}"
      }
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcp-grafana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_URL": "https://your-grafana.example.com",
        "GRAFANA_API_KEY": "${GRAFANA_API_KEY}"
      }
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-grafana": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_URL": "https://your-grafana.example.com",
        "GRAFANA_API_KEY": "${GRAFANA_API_KEY}"
      }
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcp-grafana",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GRAFANA_URL",
        "-e",
        "GRAFANA_API_KEY",
        "mcp/grafana",
        "-t",
        "stdio"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "mcp-grafana": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "GRAFANA_URL",
          "-e",
          "GRAFANA_API_KEY",
          "mcp/grafana",
          "-t",
          "stdio"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add mcp-grafana -- docker run -i --rm -e GRAFANA_URL -e GRAFANA_API_KEY mcp/grafana -t stdio

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: Grafana MCP

Grafanaデータからインシデントタイムラインを構築する

👤 SRE/オンコール担当 ⏱ ~10 min intermediate

使うタイミング: ページャーが鳴った;コールに参加する前に一貫したタイムラインが欲しい場合。

前提条件
  • Grafanaサービスアカウントのtoken — Grafana → Administration → Service accounts;クエリにはEditorロールで十分
フロー
  1. 何が発火しているか確認
    Grafana: list firing alerts in the last 30 minutes for service=checkout.✓ コピーしました
    → list_alertsがタイムスタンプ付きの1件以上のアラートを返す
  2. メトリクスを取得
    For each alert, run a Prometheus range query for the underlying metric over the last 1h. Note the breach time.✓ コピーしました
    → query_prometheus_rangeが時系列データを返す
  3. 違反時のログを取得
    Loki: logs for service=checkout, level=error, [breach_time-2m, breach_time+2m]. Top patterns.✓ コピーしました
    → シグネチャでクラスタリングされたログ行
  4. タイムラインを構成
    Build a concise timeline: alert fired → metric breach → top 3 error log patterns. Markdown for Slack.✓ コピーしました
    → ペースト可能なタイムライン完成

結果: コールに参加する前に一貫したインシデントタイムラインが完成。

注意点
  • Lokiクエリが広すぎてtokenバジェットを超える — 常にservice=ラベルを含める;時間窓を積極的に絞る
  • Prometheusクエリのstepが細かすぎる — 1時間窓ではstep=15sまたは30sを使用
組み合わせ: sentry

Grafanaダッシュボードが実際に何を示しているかを説明する

👤 チームにオンボーディングする新メンバー ⏱ ~15 min beginner

使うタイミング: ダッシュボードを引き継いだが、各パネルをクリックせずに理解したい場合。

フロー
  1. ダッシュボードを探す
    Grafana: search dashboards titled 'Checkout SLO'.✓ コピーしました
    → ダッシュボードのUIDが返される
  2. パネルを調査
    Get the dashboard. For each panel, summarize: title, datasource, what query it runs, what threshold (if any).✓ コピーしました
    → パネルごとの説明;クエリ文字列含む

結果: オンボーディングWiki用のダッシュボードに関する文書化された理解。

注意点
  • 変数が奇妙に置換される$service/$env の補間はダッシュボード実行時であり、MCPの時点ではないことを明示する

ノイズのあるアラートルールを監査する

👤 SREリード ⏱ ~30 min intermediate

使うタイミング: 四半期ごとの健全性チェック — 頻繁に発火するか全く発火しないルールを見つける場合。

フロー
  1. ルールを取得
    Grafana: list all alert rules in folder Production.✓ コピーしました
    → UID+式付きのルール一覧
  2. 発火履歴を確認
    For each, count alert instances in last 30 days. Flag rules with >100 (noisy) or 0 (dormant).✓ コピーしました
    → ルールごとのカウント+フラグ付きセット
  3. 推奨を提案
    For each flagged rule, propose a fix: tighten threshold, add for: 5m, or delete dormant.✓ コピーしました
    → ルールごとの具体的なYAML変更案

結果: PR準備済みYAML付きの具体的なクリーンアップ計画。

注意点
  • インスタンスのカウント ≠ ユニークアラートのカウント — ラベルでグループ化;別々の発火期間をカウントする
組み合わせ: github

組み合わせ

他のMCPと組み合わせて10倍の力を

mcp-grafana + sentry

Sentryのエラーとメトリクス/ログ違反を相関させる

Sentry: get the spike in errors for OrderService. Grafana: pull Prometheus + Loki around the same window.✓ コピーしました
mcp-grafana + github

アラートルールのクリーンアップをPRで提出する

Grafana: audit alert rules. GitHub: open a PR replacing the noisy rules with tightened thresholds.✓ コピーしました
mcp-grafana + filesystem

インシデントタイムラインをMarkdownのポストモーテムとして保存する

Build a timeline from Grafana, save to /pm/2026-05-incident.md.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
list_datasources (none) 最初の呼び出し・利用可能なものを把握 1 API call
query_prometheus datasource_uid, query, time? 即時のメトリクス値 1 call
query_prometheus_range datasource_uid, query, start, end, step 時系列の調査 1 call
query_loki_logs datasource_uid, expr, start, end, limit? ログの取得 1 call
search_dashboards query: str ダッシュボードを探す 1 call
get_dashboard uid: str パネルの調査 1 call
list_alert_rules folder? 監査/ディスカバリ 1 call
list_alert_instances state? 現在発火中のもの 1 call
list_oncall_schedules (none) 誰がオンコールか確認 1 call

コストと制限

運用コスト

APIクォータ
Grafanaインスタンスの制限に依存;CloudはOrg単位のQPS上限あり
呼び出しあたりのトークン
300〜8000(範囲クエリは大きくなる場合あり)
金額
OSS無料;Grafana Cloudは通常通り課金
ヒント
範囲クエリでは常にstep=を渡す;Lokiはlimit=100を使用(ボリュームが分かっている場合を除く)

セキュリティ

権限、シークレット、影響範囲

最小スコープ: service-account with Viewer or Editor
認証情報の保管: サービスアカウントのtokenは環境変数に保存
データ送信先: 自分のGrafana URLのみ
絶対に付与しない: Admin role unless you need rule mutation

トラブルシューティング

よくあるエラーと対処法

401 Unauthorized

tokenが間違っているかサービスアカウントが無効

確認: curl -H 'Authorization: Bearer $TOKEN' $URL/api/health
Prometheus query timeout

時間範囲またはstepを縮小する

Loki 'parse error'

LogQLはパイプラインの左側にラベルフィルタが必要;例:{service="x"} |= "err"

Dashboard not found

インポート後にUIDが変わった;最初にタイトルで検索する

代替案

Grafana MCP 他との比較

代替案代わりに使う場面トレードオフ
Direct Prometheus MCPGrafanaなしでPrometheusのみを使用する場合ダッシュボードなし・アラートUI統合なし
Datadog MCPDatadogを使用している場合異なるオブザーバビリティスタック
Loki MCP standaloneログのみ必要な場合機能が少ない

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る