Skip to main content
Glama
ninanung
by ninanung

grafana-mcp

npm version license node

Grafana APIの一部をMCP(Model Context Protocol)サーバーとして公開し、自然言語によるログクエリに焦点を当てています。主な目的は、「過去30分間のapiサービスのログを表示して」と言うだけで、LogQLやラベル、データソースUIDを手動で操作することなく、実際のログ行を取得することです。

ログデータソース、Lokiラベル、およびサービス名からホスティングデータソース/ラベルへのマッピングはディスクにキャッシュされるため、繰り返し呼び出しでは冗長なラベルスキャンがスキップされます。

한국어 문서 / Korean README

インストールとセットアップ

npx (インストール不要)

~/.mcp.json に以下を追加します。

{
  "mcpServers": {
    "grafana": {
      "command": "npx",
      "args": ["@seungje.jun/grafana-mcp"],
      "env": {
        "GRAFANA_URL": "https://grafana.example.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxx"
      }
    }
  }
}

ソースからビルド

git clone https://github.com/ninanung/grafana-mcp.git
cd grafana-mcp
npm install
npm run build
{
  "mcpServers": {
    "grafana": {
      "command": "node",
      "args": ["/path/to/grafana-mcp/dist/cli.js"],
      "env": {
        "GRAFANA_URL": "https://grafana.example.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxx"
      }
    }
  }
}

Claude Codeを再起動してMCPツールを有効にします。

認証

以下のいずれかが必要です。以下の順序でチェックされ、最初に見つかったものが使用されます。

変数

使用タイミング

GRAFANA_SERVICE_ACCOUNT_TOKEN

Grafana 9.1以降 (推奨)

GRAFANA_CLOUD_ACCESS_POLICY_TOKEN

Grafana Cloud

GRAFANA_API_KEY

レガシーAPIキー (10.xで非推奨)

GRAFANA_USERNAME + GRAFANA_PASSWORD

基本認証フォールバック

すべてのベアラートークンは Authorization: Bearer <token> として送信されます。サーバーはトークンの種類を問わず、設定されているものを選択します。

環境変数

変数

説明

GRAFANA_URL

GrafanaサーバーURL (シングルインスタンスモード、GRAFANA_INSTANCESが未設定の場合に必須)

GRAFANA_INSTANCES

(オプション) マルチインスタンスモード用のJSON配列。例: [{"name":"prod","url":"...","service_account_token":"..."},{"name":"dev","url":"...","api_key":"..."}]。設定されている場合、ツール呼び出し時に instance: "prod" を渡してターゲットを選択します。省略された場合は最初の項目にフォールバックします。

GRAFANA_ORG_ID

(オプション) X-Grafana-Org-Id ヘッダーとして送信されます。マルチ組織セットアップ用。

GRAFANA_TLS_SKIP_VERIFY

(オプション) true / 1 でTLS検証をスキップします (自己署名Grafana用)。

GRAFANA_MCP_LOG

(オプション) ログレベル: debug, info (デフォルト), warn, error, silent。MCP stdioチャネルの破損を防ぐため、ログはstderrに出力されます。

GRAFANA_MCP_AUDIT_LOG

(オプション) 監査ログファイルのパス。デフォルトは ~/.grafana-mcp/audit.log。無効にするには off に設定します。各行はツール名、引数、期間、ステータスを含むJSONレコードです。

GRAFANA_MCP_CACHE

(オプション) ディスク上のログキャッシュを無効にするには off に設定します。

GRAFANA_MCP_CACHE_PATH

(オプション) ログキャッシュファイルのパス。デフォルトは ~/.grafana-mcp/log-cache.json

GRAFANA_MCP_CACHE_TTL_DATASOURCES_MS

(オプション) ログデータソースリストキャッシュのTTL。デフォルト 86400000 (24時間)。

GRAFANA_MCP_CACHE_TTL_LABELS_MS

(オプション) LokiラベルキーキャッシュのTTL。デフォルト 86400000 (24時間)。

GRAFANA_MCP_CACHE_TTL_LABEL_VALUES_MS

(オプション) Lokiラベル値キャッシュのTTL。デフォルト 3600000 (1時間)。

GRAFANA_MCP_CACHE_TTL_SERVICE_MS

(オプション) {service → (ds_uid, label)} 解決キャッシュのTTL。デフォルト 3600000 (1時間)。

Related MCP server: Log Analyzer MCP Server

ツール

ツール

説明

self_test

診断チェック — 接続性、バージョン、認証、機能プローブ (list_datasources, proxy_uid, ds_query)。必要な引数に関するガイダンスを提供します

list_datasources

設定されているすべてのデータソースを一覧表示します

search_dashboards

クエリ/タグ/タイプでダッシュボードを検索します

get_dashboard

uidでダッシュボードの完全なJSONを取得します

extract_dashboard_queries

ダッシュボードからパネルクエリ (LogQL/PromQL) を datasource_uid と共に抽出します。ダッシュボードURLから query_logs.raw_logql の引数を見つけるために使用します

list_log_datasources

ログタイプのデータソース (Loki, Elasticsearch, CloudWatch, OpenSearch, Splunk) のみを一覧表示します。キャッシュされます

list_services

Lokiラベルから検出可能なサービス名を一覧表示します — query_logs を呼び出す前に便利です

query_logs

サービス/時間範囲/レベルでログをクエリします。ログデータソースとサービスラベルを自動検出します。マルチラベル/高度なセレクター用に raw_logql をサポートします。uidプロキシが利用できない場合 (Grafana <9.0)、/api/ds/query にフォールバックします。出力モード: raw / summarize / json

get_log_cache

現在キャッシュされている内容 (ログデータソース、ラベル、解決済みサービス) を確認します

refresh_log_cache

特定のサービスの解決を無効にするか、Grafanaインスタンスのすべてのエントリをクリアします

export_log_cache

ログキャッシュをJSONファイルにエクスポートします

import_log_cache

JSONファイルからログキャッシュをインポートします (マージ/置換)

使用例

MCPクライアントによって調整される典型的な自然言語フロー:

  1. ユーザー: 「過去30分間のapiサービスのエラーログを表示して。」

  2. service: "api", level: "error", time_from: "now-30m" を指定して query_logs を実行 → サーバーは service="api" ラベルを所有するLokiデータソースを自動検出し、LogQLを実行します。

  3. (初回呼び出し) サービス → データソース/ラベルのマッピングがキャッシュに保存されます。以降の呼び出しでは検出ステップがスキップされます。

  4. ユーザー: 「それらのエラーをパターン別に要約して。」 → output: "summarize" を指定した同じ呼び出しで、パターン別にグループ化されたカウントが返されます。

  5. ユーザー: 「他にどんなサービスがある?」 → list_services がサービスリスト全体を返します。

サービス名にタイプミスがある場合、query_logs は近い一致を表示します (例: Did you mean: checkout, checkout-api?)。

自動検出の仕組み

query_logs はターゲットのデータソースとラベルを独自に選択します:

  1. すべてのデータソースをログタイプ (Loki/ES/CloudWatch/OpenSearch/Splunk) に絞り込みます。

  2. 各Lokiデータソースについて、/loki/api/v1/labels を取得し、一般的なサービスラベル候補 (service, service_name, app, app_name, application, container, job) を最初に走査し、次に残りのラベルを走査します。

  3. 各候補ラベルについて、その値を取得し、要求された service 名がそのリストに含まれているかを確認します。

  4. ちょうど1つの (datasource, label) ペアが一致する場合、それを使用します。複数一致する場合は、区別するために datasource_uid を要求します。一致しない場合は、近い名前の提案を返します。

  5. 解決された (service → ds_uid, label) はキャッシュされます。refresh: true または refresh_log_cache で再検出を強制できます。

自動検出は現在Lokiのみをサポートしています。Elasticsearch / CloudWatch / Splunkデータソースの場合は、datasource_uidservice_label を明示的に渡してください (LogQL固有のフィルターは適用されません)。

出力モード

query_logsoutput を受け入れます:

  • raw (デフォルト): <ISO timestamp> <log line> — ターミナルで直接読むのに適しています。

  • summarize: 行を正規化されたパターン (数値 → N, UUID → UUID) でグループ化し、カウントとパターンごとのサンプルを表示します。行がノイズの多い場合や多すぎる場合に使用します。

  • json: 構造化オブジェクト { ts, line, labels } — 下流のツール用。

キャッシュ

  • ログキャッシュ: ~/.grafana-mcp/log-cache.json に永続化されます。GrafanaベースURLごとにキーが付けられるため、複数のインスタンスが競合することはありません。

  • 各カテゴリには独自のTTL (データソース / ラベル / ラベル値 / サービス解決) があります — 上記の環境変数テーブルを参照してください。

  • 後で失敗したキャッシュされたサービス解決 (例: ラベル名が変更された) は自動的に無効化されるため、次の呼び出しで再検出されます。

  • get_log_cache で確認、refresh_log_cache でクリア、export_log_cache / import_log_cache でチームメイトと共有できます。

キャッシュの場所とリセット

キャッシュ

場所

リセット

ログキャッシュ

~/.grafana-mcp/log-cache.json

refresh_log_cache all=true を呼び出すか、ファイルを削除

キャッシュファイルはプレーンなJSONドキュメントであり、手動で確認、編集、バックアップしても安全です。

安全性と制約

  • 読み取り専用: サーバーはGrafanaの状態を変更するエンドポイントを公開しません。ダッシュボード/データソースのCRUDやアラートの変更は行われません。

  • Stdioログ: すべてのログはstderrに出力され、MCP stdioチャネルをクリーンに保ちます。

  • TLSスキップ: GRAFANA_TLS_SKIP_VERIFY=true はプロセス全体で NODE_TLS_REJECT_UNAUTHORIZED=0 を設定します。信頼できるネットワーク内の自己署名Grafanaに対してのみ使用してください。

  • シークレットのログ記録なし: 認証トークンは監査ログに書き込まれません。

ライセンス

MIT

Related MCP Connectors

  • An MCP server giving access to Grafana dashboards, data and more.

  • The Grafbase MCP server sits in front of a GraphQL API and exposes an MCP protocol-compliant interface that allows AI agents and LLMs to explore and query GraphQL APIs using natural language. It provides tools to search schemas, introspect types and fields, and execute GraphQL queries while minimizing context bloat by returning only relevant schema subsets, with built-in support for authentication, authorization, and configurable access control.

  • The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.

  • The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A server that enables AI assistants to access and query Grafana dashboards, metrics, logs, and configurations through an MCP protocol interface.
    10
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for intelligent log analysis providing semantic search, error pattern clustering, and smart error detection. It enables users to process, vectorize, and query local logs to efficiently identify issues and generate AI-powered summaries.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables querying logs and metrics from Graylog, Prometheus, and InfluxDB 2.x. It provides tools for executing Lucene log searches, PromQL queries, and Flux queries directly within MCP-compatible clients.
    MIT