Prometheus MCP Server について
Prometheus MCP Serverは、MCPを通じてAIアシスタントにPrometheusのメトリクスとPromQLクエリを提供します。クエリ、メトリクスの検索、メタデータ取得に対応し、ツールや認証方式を設定できます。
主な機能
- 01即時 PromQL クエリの実行
- 02時間範囲クエリの実行
- 03フィルター付きメトリクス検索
- 04メトリクスメタデータの取得
- 05スクレイプターゲットの確認
- 06ツールと認証の設定
活用シーン
- 01特定時点のメトリクス調査
- 02一定期間のメトリクス傾向の分析
- 03利用可能なメトリクスとメタデータの検索
- 04Prometheusのスクレイプターゲット状態の確認
MCP 対応
MCP サーバーとして、Prometheusのクエリ、検索、メタデータ、ターゲット、ヘルスチェック用ツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e PROMETHEUS_URL -e PROMETHEUS_URL_SSL_VERIFY -e PROMETHEUS_DISABLE_LINKS -e PROMETHEUS_USERNAME -e PROMETHEUS_PASSWORD -e PROMETHEUS_TOKEN -e ORG_ID -e PROMETHEUS_CLIENT_CERT -e PROMETHEUS_CLIENT_KEY -e PROMETHEUS_MCP_SERVER_TRANSPORT -e PROMETHEUS_MCP_BIND_HOST -e PROMETHEUS_MCP_BIND_PORT -e PROMETHEUS_MCP_STATELESS_HTTP -e PROMETHEUS_CUSTOM_HEADERS ghcr.io/pab1it0/prometheus-mcp-server:1.6.2PROMETHEUS_URLPrometheus server URL (e.g., http://localhost:9090)PROMETHEUS_URL_SSL_VERIFYSet to False to disable SSL verificationPROMETHEUS_DISABLE_LINKSSet to True to disable Prometheus UI links in query results (saves context tokens in MCP clients)PROMETHEUS_USERNAMEUsername for Prometheus basic authenticationPROMETHEUS_PASSWORDシークレットPassword for Prometheus basic authenticationPROMETHEUS_TOKENシークレットBearer token for Prometheus authenticationORG_IDOrganization ID for multi-tenant Prometheus setupsPROMETHEUS_CLIENT_CERTPath to client certificate file for mutual TLS authenticationPROMETHEUS_CLIENT_KEYシークレットPath to client private key file for mutual TLS authenticationPROMETHEUS_MCP_SERVER_TRANSPORTMCP server transport type (stdio, http, or sse)PROMETHEUS_MCP_BIND_HOSTHost address for HTTP/SSE transport (default: 127.0.0.1)PROMETHEUS_MCP_BIND_PORTPort number for HTTP/SSE transport (default: 8080)PROMETHEUS_MCP_STATELESS_HTTPEnable stateless HTTP mode for multi-replica support (default: false)PROMETHEUS_CUSTOM_HEADERSCustom headers as JSON string to include in Prometheus requestsローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/pab1it0/prometheus-mcp-server:1.6.2stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Prometheus MCP Server
AI アシスタントが Prometheus のメトリクスをクエリできるようにします。
Model Context Protocol(MCP)サーバーです。標準化された MCP インターフェースを通じて Prometheus のメトリクスやクエリにアクセスできるようにし、AI アシスタントが PromQL クエリを実行してメトリクスデータを分析できるようにします。
はじめに
前提条件
- お使いの環境からアクセスできる Prometheus サーバー
- MCP 対応クライアント(Claude Desktop、VS Code、Cursor、Windsurf など)
インストール方法
Claude Desktop
Claude Desktop の設定に追加します。
{
"mcpServers": {
"prometheus": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PROMETHEUS_URL",
"ghcr.io/pab1it0/prometheus-mcp-server:latest"
],
"env": {
"PROMETHEUS_URL": "<your-prometheus-url>"
}
}
}
}
Claude Code
Claude Code CLI からインストールします。
claude mcp add prometheus --env PROMETHEUS_URL=http://your-prometheus:9090 -- docker run -i --rm -e PROMETHEUS_URL ghcr.io/pab1it0/prometheus-mcp-server:latest
VS Code / Cursor / Windsurf
各 IDE の MCP 設定に追加します。
{
"prometheus": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PROMETHEUS_URL",
"ghcr.io/pab1it0/prometheus-mcp-server:latest"
],
"env": {
"PROMETHEUS_URL": "<your-prometheus-url>"
}
}
}
Docker Desktop
Prometheus MCP サーバーを実行する最も簡単な方法は、Docker Desktop を使用することです。
-
MCP カタログから:Docker Hub の Prometheus MCP Serverにアクセスし、上のボタンをクリックします。
-
MCP Toolkit から:Docker Desktop の MCP Toolkit 拡張機能を使って、サーバーを見つけてインストールします。
-
環境変数を使って接続を設定します(下記の「設定オプション」を参照)。
Docker の手動セットアップ
Docker で直接実行します。
# With environment variables
docker run -i --rm \
-e PROMETHEUS_URL="http://your-prometheus:9090" \
ghcr.io/pab1it0/prometheus-mcp-server:latest
# With authentication
docker run -i --rm \
-e PROMETHEUS_URL="http://your-prometheus:9090" \
-e PROMETHEUS_USERNAME="admin" \
-e PROMETHEUS_PASSWORD="password" \
ghcr.io/pab1it0/prometheus-mcp-server:latest
Helm Chart(Kubernetes)
OCI レジストリの Helm Chart を使用して Kubernetes にデプロイします。
helm install prometheus-mcp-server \
oci://ghcr.io/pab1it0/charts/prometheus-mcp-server \
--version 1.1.1 \
--set prometheus.url="http://prometheus:9090"
認証を使用する場合:
helm install prometheus-mcp-server \
oci://ghcr.io/pab1it0/charts/prometheus-mcp-server \
--version 1.1.1 \
--set prometheus.url="http://prometheus:9090" \
--set auth.username="admin" \
--set auth.password="secret"
カスタムの values ファイルを使用する場合:
helm install prometheus-mcp-server \
oci://ghcr.io/pab1it0/charts/prometheus-mcp-server \
--version 1.1.1 \
-f values.yaml
利用可能なすべての設定オプションについては、チャートの値を参照してください。
| 変数 | 説明 | 必須 |
|---|---|---|
PROMETHEUS_URL | Prometheus サーバーの URL | はい |
PROMETHEUS_URL_SSL_VERIFY | SSL 検証を無効にするには False を設定します | いいえ |
PROMETHEUS_DISABLE_LINKS | クエリ結果内の Prometheus UI リンクを無効にするには True を設定します(コンテキストトークンを節約できます) | いいえ |
PROMETHEUS_REQUEST_TIMEOUT | リクエストがハングするのを防ぐためのタイムアウト時間(秒)(DDoS 対策) | いいえ(デフォルト:30) |
PROMETHEUS_USERNAME | 基本認証用のユーザー名 | いいえ |
PROMETHEUS_PASSWORD | 基本認証用のパスワード | いいえ |
PROMETHEUS_TOKEN | 認証用のベアラートークン | いいえ |
PROMETHEUS_CLIENT_CERT | 相互 TLS 認証用のクライアント証明書ファイルのパス | いいえ |
PROMETHEUS_CLIENT_KEY | 相互 TLS 認証用のクライアント秘密鍵ファイルのパス | いいえ |
REQUESTS_CA_BUNDLE | サーバーの TLS 証明書を検証するための CA バンドルファイルのパス(標準の requests ライブラリ環境変数) | いいえ |
ORG_ID | マルチテナント構成用の組織 ID | いいえ |
PROMETHEUS_MCP_SERVER_TRANSPORT | トランスポートモード(stdio、http、sse) | いいえ(デフォルト:stdio) |
PROMETHEUS_MCP_BIND_HOST | HTTP トランスポート用のホスト | いいえ(デフォルト:127.0.0.1) |
PROMETHEUS_MCP_BIND_PORT | HTTP トランスポート用のポート | いいえ(デフォルト:8080) |
PROMETHEUS_MCP_STATELESS_HTTP | 複数レプリカをサポートするステートレス HTTP モードを有効にします | いいえ(デフォルト:False) |
PROMETHEUS_CUSTOM_HEADERS | JSON 文字列として指定するカスタムヘッダー | いいえ |
TOOL_PREFIX | すべてのツール名に付けるプレフィックス(例:staging を指定すると staging_execute_query になります)。Cursor で異なる環境を対象とする複数のインスタンスを実行する場合に便利です | いいえ |
利用可能なツール
| ツール | カテゴリ | 説明 |
|---|---|---|
health_check | システム | コンテナの監視とステータス確認に使用するヘルスチェックエンドポイント |
execute_query | クエリ | Prometheus に対して PromQL のインスタントクエリを実行します |
execute_range_query | クエリ | 開始時刻、終了時刻、ステップ間隔を指定して PromQL の範囲クエリを実行します |
list_metrics | 検索 | ページネーションとフィルタリングに対応し、Prometheus で利用可能なすべてのメトリクスを一覧表示します |
get_metric_metadata | 検索 | 1 つのメトリクスのメタデータ、または任意のフィルタリングを適用した複数メトリクスのメタデータを取得します |
get_targets | 検索 | スクレイプターゲットを取得します。サーバー側の state/scrape_pool によるフィルタリングと、任意のページネーションに対応しています |
ツールのリストは設定可能なため、MCP クライアントで利用できるようにするツールを選択できます。特定の機能を使わない場合や、コンテキストウィンドウを使いすぎたくない場合に便利です。
機能
- Prometheus に対して PromQL クエリを実行
- メトリクスを検索・調査
- 利用可能なメトリクスを一覧表示
- 特定のメトリクスのメタデータを取得
- 1 回の呼び出しで、名前または説明からメトリクスメタデータを検索
- インスタントクエリの結果を表示
- 異なるステップ間隔で範囲クエリの結果を表示
- 同じ時間範囲と解像度で、範囲クエリの結果を Prometheus UI で開く
- 認証に対応
- 環境変数による基本認証
- 環境変数によるベアラートークン認証
- Docker コンテナ化に対応
- AI アシスタント向けのインタラクティブなツールを提供
開発
コントリビューションを歓迎します!開始方法、コーディング規約、プルリクエストの手順について詳しくは、コントリビューションガイドをご覧ください。
このプロジェクトでは、依存関係の管理に uv を使用しています。お使いのプラットフォーム向けの手順に従って uv をインストールしてください。
curl -LsSf https://astral.sh/uv/install.sh | sh
その後、仮想環境を作成し、次のコマンドで依存関係をインストールできます。
uv venv
source .venv/bin/activate # On Unix/macOS
.venv\Scripts\activate # On Windows
uv pip install -e .
テスト
このプロジェクトには、機能を確認し、リグレッションを防ぐための包括的なテストスイートが含まれています。
pytest でテストを実行します。
# Install development dependencies
uv pip install -e ".[dev]"
# Run the tests
pytest
# Run with coverage report
pytest --cov=src --cov-report=term-missing
新しい機能を追加する場合は、対応するテストも追加してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。