Claude CodeからGrafanaのMCPサーバーを使ってダッシュボードを作ってみた

Claude CodeからGrafanaのMCPサーバーを使ってダッシュボードを作ってみた

2025.07.26

はじめに

Grafana MCPサーバーではGrafanaのAPIを実行することができます。
つまり、Grafanaからダッシュボードのjsonファイルを取得して、変更して、再度アップロードするまでをCalude Code上から実行できるじゃないか!ということでやってみました。

環境

今回は以下の環境で

  • Mac(Appleシリコン)
  • AWS CLI
  • Grafana Cloud
  • Claude Code

インストール

APIキーの準備とバイナリファイルのダウンロード方法は↓のブログをご確認ください。
https://dev.classmethod.jp/articles/connect-grafana-cloud-with-mcp-server/
ちなみに私のMACはAppleシリコンなのでバイナリファイルは
mcp-grafana_Darwin_arm64.tar.gzをダウンロードしています。

Claud Codeへのインストール

まずはClaude Codeに
~/.claude/settings.jsonに以下を記載して

{
	"permissions": {
		"allow": {
			"mcp": [
			  "mcp__grafana-mcp-server__*"
			]
		  }
		},
		"enabledMcpjsonServers": [
			"grafana-mcp-server"
		],
		"mcpServers": {
			"grafana-mcp-server": {
				"command": "<バイナリファイルを配置したpath>",
				"env": {
				  "GRAFANA_API_KEY": "<API_KEY>",
				  "GRAFANA_URL": "<GRAFANA_URL>"
			}
		}
	}
}

Claude Desktopを再起動します。
/mcpを実行してgrafana-mcp-serverがconnectedになっていれば接続完了です!

#claudeを起動して実行
/mcp

**Manage MCP servers**
1. **grafana-mcp-server**  ✔ connected · Enter to view details

ダッシュボードを作ってみる

まずは選択可能なデータソースを確認します。

> 選択可能なデータソース一覧を教えてください
  ⎿  [
       {
         "id": 25,
     … +160 lines (ctrl+r to expand)

⏺ ----------------------------------ここからが回答----------------------------------
  Grafanaで利用可能なデータソース一覧:

  AWS関連データソース

  - AWS Cost Table (grafana-athena-datasource) - uid: derewku2sy1hcb
  - ...

  Grafana Cloud関連データソース

  - grafanacloud-usage-insights (loki) - uid: grafanacloud-usage-insights
  - ... 

  デモ・その他データソース

  - grafanacloud-demoinfra-prom (prometheus) - uid: grafanacloud-demoinfra-prom
  - ...

  合計21個のデータソースが設定されています。

21個のデータソースがあることが確認できました。
今回はAWS Cost Table (grafana-athena-datasource)をデータソースとしてダッシュボードを作ってみましょう。
ちなみにこのデータソースはS3上にあるAWSのコストと使用状況レポートをAthenaでクエリするためのデータソースです。

では、次にClaude Codeにサンプルのダッシュボードを作ってもらいましょう。

> ではAWS Cost Table (grafana-athena-datasource)を使ってサンプルのダッシュボードを作成してください。

⏺ Update Todos
  ⎿  ☐ AWS Cost Tableデータソースの詳細を確認
     ☐ Athenaデータソースのテーブル構造を調査
     ☐ サンプルダッシュボードのJSONを作成
     ☐ ダッシュボードをGrafanaに作成・アップロード

...
(Athenaのデーブル構造確認やダッシュボードJSONの作成)
...

⏺ ----------------------------------ここからが回答----------------------------------
  AWS Cost Table (grafana-athena-datasource)を使用したサンプルダッシュボードを作成しました!

  作成されたダッシュボード詳細

  - タイトル: AWS Cost Sample Dashboard
  - UID: aws-cost-sample-dashboard
  - フォルダ: AWS Billing
  - URL: /d/aws-cost-sample-dashboard/aws-cost-sample-dashboard

  パネル構成(5つのパネル):

  1. 今月の総コスト (統計パネル) - 現在の月の総利用費を表示
  2. 上位10サービス別コスト (横棒グラフ) - 最もコストのかかるAWSサービストップ10
  3. 日別コストトレンド(過去30日) (時系列チャート) - 過去30日間の日別コスト推移
  4. 月別コスト比較(過去12ヶ月) (縦棒グラフ) - 過去12ヶ月の月別コスト比較
  5. リージョン別コスト分布 (円グラフ) - AWSリージョン別のコスト配分

  機能特徴

  - 現在の日付を基準とした動的なクエリ
  - 複数の視覚化タイプでコスト分析
  - USD通貨フォーマット
  - Asia/Tokyoタイムゾーン設定

  ダッシュボードが正常に作成され、GrafanaのAWS Billingフォルダに保存されました。

データソースであるAthenaのデータ構造を確認したのち、JSONからダッシュボードを作成してくれたようです。
それではGrafanaの画面から確認してみます。
CleanShot 2025-07-25 at 22.13.16@2x
どうやら何かが間違っているようですね。
一つパネルを開いてみます。
CleanShot 2025-07-25 at 22.17.16@2x
データソースの指定が間違っているようです。
Claude Codeに修正してもらいましょう。

> ダッシュボードは作成されていましたが、全てのパネルでNo dataと表示されています。パネルのデータソースを確認するとcost for CloudWatchが選択されており、期待しているAWS Cost Tableが選択されていないようです。データソースを修正してもらえますか?

...

⏺ ----------------------------------ここからが回答----------------------------------
  各パネルのデータソースを修正しました。
  各パネルのデータソース設定が以下になっていることを確認してください:
  - データソースタイプ: grafana-athena-datasource
  - UID: derewku2sy1hcb
  - 名前: AWS Cost Table

修正してくれたようなので再度ダッシュボードから確認してみます。
データソースはAWS Cost Tableに修正されていましたが、クエリでエラーが出ています。
他のパネルも全て同じような結果でした。
CleanShot 2025-07-25 at 22.43.55@2x
ということで、次はクエリを書き直してもらいましょう。
ただし、毎回 "修正→ダッシュボードでエラーの確認" という作業は面倒なので、先にローカル環境からaws cli経由でathenaのクエリが通ることを確認した上で、パネルのクエリに反映させるようClaude Codeに指示を追加します。

> データソースは修正されていましたが、クエリでエラーが出力されています。
事前にaws cliからathenaのクエリがパネルの期待する結果を正しく返すことを確認した上でパネルに反映させてください

⏺ Update Todos
  ⎿  ☐ AWS CLIでAthenaクエリをテスト実行
     ☐ 正しいクエリをパネルに反映

⏺ まず、AWS CLI経由でAthenaクエリをテストして正しく動作することを確認します。

⏺ Bash(aws athena start-query-execution \
        --query-string "SELECT SUM(line_item_unblended_cost) as total_cost FROM cur_database.cur_cost_export WHERE year =
...
(各パネルのクエリを確認)
...

⏺ ----------------------------------ここからが回答----------------------------------
AWS CLIでAthenaクエリをテストして、全てのパネルのクエリを修正しました。
問題の原因
yearとmonthフィールドが文字列型だったため、数値として比較していたクエリでエラーが発生していました。
修正したクエリ
全てのパネルで以下のように修正:
- WHERE year = 2025 → WHERE year = '2025'
- WHERE month = 7 → WHERE month = '7'

テスト結果
AWS CLI経由で以下のクエリが全て成功することを確認:
1. 総コスト: SELECT SUM(line_item_unblended_cost) as total_cost FROM cur_database.cur_cost_export WHERE year = '2025'
AND month = '7'
2. サービス別コスト: 上位10サービスのクエリ
3. 日別コスト: 2025年7月の日別コストトレンド

ダッシュボードのバージョンを8に更新し、全てのパネルでクエリエラーが解消されているはずです。

指示通りパネルに反映させる前に、一度aws cliからAthenaのクエリがパネルの期待する結果を返すことを確認してくれています。
今回は型エラーが発生していたようですね。

修正の結果、いい感じのダッシュボードが作成されていました。
今回は適当にサンプルのダッシュボード作成を依頼しましたが、最初にダッシュボード全体の要件をインプットとして渡せばかなりクオリティの高いダッシュボードが作成されるじゃないかと思います。
CleanShot 2025-07-25 at 23.14.19@2x

まとめ

今回はGrafanaのMCPサーバーを使ってダッシュボードを作ってみました。

GrafanaのMCPサーバーではAPIが実行できるため、ダッシュボードをUI上から編集しても、Claude Codeには必ず現在のJSONの状態を確認した上で編集して下さい。とお願いすることで、コードからもUIからも気兼ねなくダッシュボードを編集することができます。

以前にGrafanaのAPIを使ってJSONファイルを編集する記事を書きましたが、このMCPサーバーを使えばその手間すら不要になりそうです。
https://dev.classmethod.jp/articles/grafana-cloud-json-cli/

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.