dashmetrics について
dashmetricsは、Grafanaのダッシュボード、データソース、メトリクス、ログ、プロビジョニング済みアラートを読み取るMCPサーバー兼コマンドラインツールです。Grafanaの公開HTTP APIドキュメントに基づいています。
主な機能
- 01ダッシュボードの検索と取得
- 02設定済みデータソースの確認
- 03Prometheusの範囲クエリ実行
- 04Lokiログのクエリ
- 05アラートルールと連絡先の確認
活用シーン
- 01サービスに関連するダッシュボードの検索
- 02Prometheusのメトリクスとラベルの確認
- 03Lokiでのログとラベルの検索
- 04設定済みアラートルールと連絡先の確認
MCP 対応
stdio MCPサーバーとして動作し、ダッシュボード、データソース、Prometheus、Loki、アラートの操作をMCPクライアント向けのツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
14掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| type | string | いいえ | Grafana の検索結果タイプを絞り込む任意のフィルターです。ダッシュボードには 'dash-db'、フォルダーには 'dash-folder' を指定します。 |
| limit | number | いいえ | 検索結果の最大数(任意、デフォルトは 100、1~5000 の範囲に制限)。 |
| query | string | いいえ | 検索するタイトルのテキスト(任意)。タイトルが一致するダッシュボードとフォルダーが返されます。 |
詳細
dashmetrics
dashmetrics は、MCP クライアントまたはターミナルから Grafana インスタンスへの読み取りアクセスを提供します。ダッシュボードの検索と取得、データソースの調査、 メトリクスとラベルの検出を伴う Prometheus の範囲クエリ、ラベルの検出を伴う Loki のログ クエリ、プロビジョニングされたアラートルールと コンタクトポイントに対応しています。Grafana の公開 HTTP API ドキュメントに基づいて構築された、Grafana の MCP ツール群の文書化された中核機能を クリーンルーム方式で再構築したものです。
GRAFANA_URL(デフォルトは
http://localhost:3000)でインスタンスを指定し、
GRAFANA_SERVICE_ACCOUNT_TOKEN にサービスアカウントトークンを設定して認証します。トークンは Bearer トークンとして
送信されます。プライマリ変数が未設定の場合、従来の
GRAFANA_API_KEY 変数がフォールバックとして使用されます。トークンが設定されていない場合、すべての呼び出しは
GRAFANA_SERVICE_ACCOUNT_TOKEN を示すエラーで失敗します。インスタンスに
接続できない場合は、試行したベース URL を示すエラーが返されます。
インストール
npx @reneturcios/dashmetrics list_datasources
または、コンテナーイメージを実行します。
docker run -i -e GRAFANA_URL -e GRAFANA_SERVICE_ACCOUNT_TOKEN ghcr.io/cloudcorprecords/dashmetrics
コンテナーはデフォルトで MCP サーバーとして起動します(下記を参照)。CLI として使うには、 CLI 引数を渡します。
CLI
すべての MCP ツールは CLI サブコマンドとしても利用できます。ツールの引数は
--json を使って 1 つの JSON オブジェクトとして渡します。
export GRAFANA_URL=http://localhost:3000
export GRAFANA_SERVICE_ACCOUNT_TOKEN=<redacted>
dashmetrics search_dashboards --json '{"query": "api", "limit": 5}'
dashmetrics get_dashboard_by_uid --json '{"uid": "dash-1"}'
dashmetrics list_datasources
dashmetrics query_prometheus --json '{"datasourceUid": "prom1", "expr": "up", "start": "now-1h", "end": "now", "step": "15s"}'
dashmetrics query_loki_logs --json '{"datasourceUid": "loki1", "query": "{job=\"api\"}"}'
dashmetrics list_alert_rules
dashmetrics --version
結果は JSON として出力されます。終了コード:成功時は 0、API
呼び出しの失敗時(トークンがない場合を含む)は 1、使用方法のエラー時は 2 です。
MCP サーバー
1 つのバイナリで両方の用途に対応します。mcp サブコマンドで stdio MCP
サーバーを起動します。
npx -y @reneturcios/dashmetrics mcp
MCP クライアントの設定:
{
"mcpServers": {
"dashmetrics": {
"command": "npx",
"args": ["-y", "@reneturcios/dashmetrics", "mcp"],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "your Grafana service account token"
}
}
}
}
ツール
| ツール | 入力(太字は必須) | 機能 |
|---|---|---|
search_dashboards | query、limit、type | ダッシュボード/フォルダーを検索します(/api/search)。 |
get_dashboard_by_uid | uid | UID で指定したダッシュボードを返します。 |
list_datasources | — | 設定済みのデータソースを一覧表示します。 |
get_datasource_by_uid | uid | UID で指定したデータソースを返します。 |
query_prometheus | datasourceUid、expr、start、end、step | データソースプロキシ経由で Prometheus の範囲クエリを実行します。 |
list_prometheus_metric_names | datasourceUid、regex | メトリクス名を一覧表示します。正規表現で絞り込めます。 |
list_prometheus_label_names | datasourceUid、metric | ラベル名を一覧表示します。 |
list_prometheus_label_values | datasourceUid、label、metric | 1 つのラベルの値を一覧表示します。 |
query_loki_logs | datasourceUid、query、start、end、limit | プロキシ経由で Loki の LogQL 範囲クエリを実行します。 |
list_loki_label_names | datasourceUid | Loki のラベル名を一覧表示します。 |
list_loki_label_values | datasourceUid、label | 1 つの Loki ラベルの値を一覧表示します。 |
list_alert_rules | limit | プロビジョニングされたアラートルールを一覧表示します。 |
get_alert_rule_by_uid | uid | UID で指定したプロビジョニング済みアラートルールを返します。 |
list_contact_points | limit | プロビジョニングされたコンタクトポイントを一覧表示します。 |
Prometheus と Loki の呼び出しは、Grafana で文書化されているデータソース
プロキシのパス(/api/datasources/proxy/uid/{uid}/...)を経由します。対象外:
インシデントの作成/更新、オンコールスケジュール、Sift/Asserts、管理者/ユーザー管理については、
BUILD-REPORT.md を参照してください。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev # run the CLI from source via tsx
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。