Prometheus MCP Server について
Prometheus MCP Serverは、API経由で稼働中のPrometheusインスタンスをLLMから調査、操作できるサーバーです。クエリやメトリクスのツールに、設定・ヘルス情報、ドキュメント、ガイド付きランブックを組み合わせ、ツールや応答量も設定できます。
主な機能
- 01即時および範囲指定のPromQLクエリを実行
- 02メトリクス、ラベル、シリーズ、ターゲットを調査
- 03設定、ランタイム、ヘルス情報を取得
- 04Prometheusドキュメントとガイド付きランブックを提供
- 05ツール選択と応答の切り詰めを設定
- 06API応答のTOONエンコードに対応
活用シーン
- 01クエリの遅延やメトリクスの挙動を調査
- 02Prometheusの健全性、設定、稼働状況を確認
- 03ランブックを使って高カーディナリティやデータ欠落を調査
- 04アラート、ルール、ターゲット、メトリクスメタデータを確認
MCP 対応
MCPクライアントに、ツール、リソース、プロンプトとしてPrometheus API操作、ドキュメント、ランブックを提供します。破壊的なTSDB管理ツールは、明示的に有効化しない限り利用できません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/tjhop/prometheus-mcp-server:0.18.0ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/tjhop/prometheus-mcp-server:0.18.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Prometheus MCP Server

概要
これは、LLM が実行中の Prometheus インスタンスと API 経由でやり取りし、promql クエリの生成や実行、メトリクスの一覧表示や分析などを行えるようにする MCP サーバーです。
デモと使用例
Claude に遅いクエリの調査を依頼する
使用したプロンプト:
メトリクスのクエリが遅いです。原因を調べてもらえますか?
MCP サーバー自体が出力するメトリクスを調査し、SLO のレコーディングルールを提案する
使用したプロンプト:
prometheus mcp server のツールを使って、 mcp server のメトリクスを調査し、SLO 用の prometheus レコーディングルールを提案してください
Prometheus のメトリクス名とラベル名のベストプラクティスを要約する
使用したプロンプト:
prometheus のメトリクス名とラベル名のベストプラクティスを要約してください
prometheus.demo.prometheus.io を稼働させている Prometheus インスタンスの健全性を報告する
使用したプロンプト:
Prometheus サーバーを包括的にレビューし、要約してください。 設定、フラグ、ランタイム/ビルド情報、および Prometheus インスタンスの状態を把握するのに役立つと思われるその他の情報を確認し、 メトリクスの分析やクエリの実行も行ってください
ツール
Prometheus HTTP API は JSON データを出力します。この MCP サーバーのツールは、構造が明確で LLM によく理解される形式であるため、その JSON を LLM に返して処理します。
LLM とトークン/コンテキストの効率性
この MCP サーバーは、トークン/コンテキストの使用量を削減できる可能性のある次のオプションをサポートしています。
TOON エンコーディング
トークン/コンテキストの使用量が懸念される場合、この MCP サーバーでは API の JSON データを Token-Oriented Object Notation(TOON)形式に変換することもできます。 トークン使用量の削減を保証するものではありませんが、トークン効率を考慮して設計されています。 TOON のドキュメントに記載されているように、均一なオブジェクト配列に優れています。一方、均一でない/複雑なオブジェクトでは、JSON のほうがトークン効率に優れる場合があります。 実際のトークン使用量は利用パターンによって異なります。TOON の出力が有益かどうかを判断するため、一般的なワークフローを確認してください。 利用可能なフラグと対応する環境変数の詳細については、フラグを参照してください。
API レスポンスの切り詰め
この機能を使用すると、Prometheus API から返される行数またはエントリ数の上限を設定できます。これにより、LLM に送信されるデータ量を削減できます。
上限を 0 に設定すると、切り詰めは無効になります。
デフォルトでは、切り詰めは無効です。
ツールリクエストの引数を処理できる LLM は、対応するツールについて、ツール呼び出しごとにこのグローバルな切り詰め上限を上書きできます。
使用可能なフラグと対応する環境変数については、フラグを参照してください。
ツール一覧
| ツール名 | 説明 |
|---|---|
alertmanagers | Prometheus の Alertmanager 検出の概要を取得します |
build_info | Prometheus のビルド情報を取得します |
config | Prometheus の設定を取得します |
docs_list | Prometheus の公式ドキュメントファイルの一覧を取得します |
docs_read | prometheus/docs リポジトリにある、指定された公式ドキュメントの Markdown ファイルを読み取ります |
docs_search | prometheus/docs リポジトリにある、公式ドキュメントの Markdown ファイルを検索します |
exemplar_query | 指定されたクエリと時間範囲でエグザンプラーを検索します |
flags | 実行時フラグを取得します |
healthy | Prometheus の健全性を確認するために使用できる管理 API エンドポイントです |
label_names | 指定された時間範囲とマッチャーに基づき、ブロックに存在する一意なラベル名をソート順で返します |
label_values | 指定されたラベル、時間範囲、マッチャーの値を検索します |
list_alerts | アクティブなアラートをすべて一覧表示します |
list_rules | 読み込まれているアラートルールと記録ルールをすべて一覧表示します |
list_targets | Prometheus のターゲット検出の概要を取得します |
metric_metadata | 指定されたメトリクス名について、現在スクレイプされているメトリクスのメタデータを返します |
query | Prometheus データソースに対してインスタントクエリを実行し、単一時点における各系列の値を返します |
quit | Prometheus の正常なシャットダウンを開始するために使用できる管理 API エンドポイントです |
range_query | Prometheus データソースに対して範囲クエリを実行し、一定の時間範囲にわたる値を返します |
ready | Prometheus がトラフィックを処理できる状態(つまりクエリに応答できる状態)か確認するために使用できる管理 API エンドポイントです |
reload | Prometheus の設定ファイルとルールファイルの再読み込みを開始するために使用できる管理 API エンドポイントです |
runbooks_list | このサーバーに組み込まれているランブック、つまり一般的な Prometheus タスク向けのガイド付きワークフロー(エージェントスキル)の一覧を取得します |
runbooks_read | スキル名(例:check-system-health)を指定してランブックを読み取ります |
runtime_info | Prometheus の実行時情報を取得します |
series | ラベルマッチャーで系列を検索します |
targets_metadata | ターゲットによって現在スクレイプされているメトリクスのメタデータを返します |
tsdb_stats | TSDB の使用状況とカーディナリティの統計情報を取得します |
wal_replay_status | 現在の WAL 再生ステータスを取得します |
注:
TSDB Admin API エンドポイントでは、 データの削除など、破壊的な操作が実行される可能性があるため、デフォルトでは 無効になっています。TSDB Admin API エンドポイントを有効にするには、MCP サーバーの起動時にフラグ
--dangerous.enable-tsdb-admin-toolsを指定し、 これらのエンドポイントに伴うリスクを了承する必要があります。
| ツール名 | 説明 |
|---|---|
clean_tombstones | 削除済みデータをディスクから取り除き、既存のトゥームストーンをクリーンアップします |
delete_series | 時間範囲内で、選択された系列のデータを削除します |
snapshot | TSDB のデータディレクトリ内の snapshots/- に現在の全データのスナップショットを作成し、そのディレクトリをレスポンスとして返します |
ツールセット
このサーバーは、Prometheus を操作するための多くのツールを公開しています。API 経由で Prometheus を操作するツールのほか、ドキュメントの読み取りなどを行う追加ツールもあります。 デフォルトでは、すべて登録され、使用可能です(TSDB Admin API ツールには追加のフラグが必要です)。
コンテキストウィンドウが小さい LLM に配慮するため、サーバーに登録する特定のツールをホワイトリストで指定できます。
次の「コア」ツールは常に読み込まれます:[docs_list, docs_read, docs_search, runbooks_list, runbooks_read, query, range_query, metric_metadata, label_names, label_values, series]。
追加のツールは、--mcp.tools フラグで指定できます。
たとえば、次のコマンドラインでは:
prometheus-mcp --mcp.tools=build_info --mcp.tools=flags --mcp.tools=runtime_info
次のツールが読み込まれます:
build_infodocs_listdocs_readdocs_searchflagslabel_nameslabel_valuesmetric_metadataqueryrange_queryrunbooks_listrunbooks_readruntime_infoseries
ランブック(エージェントスキル)とプロンプト
このサーバーには、Prometheus でよく行われるタスク向けに、サーバーのツールを使ったガイド付きワークフローをまとめたランブックが組み込まれています。各ランブックは、関連するツールをモデルに案内したうえで、固定された手順を指定するのではなく、クエリの例を使って調査するトピックを提案します。 ランブックでは、システムの健全性チェック、データ欠損のトリアージ、エラー率の調査、高カーディナリティの最適化、記録・アラートルールのレビュー、設定・パフォーマンスのチューニングなどのタスクを扱います。
各ランブックは、完全なエージェントスキルとしてパッケージ化されています。これは、name/description のフロントマターを含む SKILL.md を格納したディレクトリです。
ランブックは、次の 3 つの方法で公開されます:
- ツール:リクエストがランブックの目的に合致する場合、モデルは
runbooks_list/runbooks_readツールを使ってランブックを自ら見つけて読み取れます。ツールは最も移植性の高い方法で、あらゆる MCP クライアントで動作します。 - スキルリソース:SEP-2640 スキル拡張のドラフトに従い、各ランブックは
skill://<name>/SKILL.mdリソースとして公開されます。このリソースは、既知のskill://index.json検索インデックスに列挙され、サーバーはio.modelcontextprotocol/skills拡張機能を宣言します。スキルに対応したホストは、これらをローカルファイルシステムのスキルと同様に利用できます。それ以外のクライアントも、通常の MCP リソースとして読み取れます。 - MCP プロンプト:各ランブックは、スキル名(例:
check-system-health、optimize-high-cardinality)でMCP プロンプトとしても登録されるため、プロンプトに対応したクライアントはガイド付きワークフローを直接呼び出せます(多くの場合、スラッシュコマンドとして表示されます)。
Prometheus 互換バックエンド
Prometheus をさまざまな方法で拡張できる Prometheus 互換バックエンドは数多くあり、多くの場合、長期ストレージの提供や複数の Prometheus インスタンスからのクエリ集約を目的としています。 例は、Prometheus のドキュメントの リモートストレージで確認できます。
これらのサービスの多くは、ネイティブの promQL を使用してデータをクエリしたり、操作したりできる「Prometheus 互換」API も提供しています。 一般に、この MCP サーバーは、他の Prometheus API 互換サービスでも、クエリを実行し、メトリクスやラベルの検出に使用する series/labels/metadata エンドポイントを操作するための基本機能を備えている必要があります。 それ以外については、システムごとに API の異なる部分や拡張機能をそれぞれのニーズに合わせて実装しているため、API に違いがある場合があります。
例:
- Thanos は一元化された設定を使用しないため、config エンドポイントは実装されておらず、config ツールは削除されています。
- Mimir と Cortex は、ルールを管理/追加/削除するための追加エンドポイントを実装しています。
この違いに対応し、よく利用される一部の Prometheus 互換システムでより良いエクスペリエンスを提供するため、このプロジェクトでは、選択したシステムを直接サポートし、異なるツールや追加のツールを提供する場合があります。
使用する Prometheus バックエンドの実装は、--prometheus.backend フラグで選択できます。
特定の MCP サーバーリリースで利用可能なバックエンド実装の一覧は、--help フラグの出力で確認できます。
対応するバックエンドの要件やサポート基準は現在検討中です。特定のバックエンドへの対応や機能をリクエストする場合は、議論のために issue を作成してください。
Prometheus バックエンド実装の違い
| バックエンド | ツール | 追加/削除/変更 | 備考 |
|---|---|---|---|
prometheus | n/a | なし | 標準の Prometheus ツールです。機能的には --mcp.tools="all" と同等です。デフォルトの MCP サーバーツールセットです。 |
thanos | alertmanagers | 削除 | Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します。 |
thanos | clean_tombstones | 削除 | Prometheus TSDB 管理エンドポイント |
thanos | config | 削除 | Thanos は一元化された設定を使用しないため、このエンドポイントを実装しておらず、ツールは 404 を返します。 |
thanos | delete_series | 削除 | Prometheus TSDB 管理エンドポイント |
thanos | list_stores | 追加 | Thanos は、ストア API サーバーを一覧表示する追加エンドポイントを提供しています。 |
thanos | quit | 削除 | Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します。 |
thanos | reload | 削除 | Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します。 |
thanos | snapshot | 削除 | Prometheus TSDB 管理エンドポイント |
thanos | targets_metadata | 削除 | Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します(thanos-io/thanos#7119)。 |
thanos | wal_replay_status | 削除 | Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します。 |
リソース
| リソース名 | リソース URI | 説明 |
|---|---|---|
| Prometheus 公式ドキュメントファイル一覧 | prometheus://docs | Prometheus 公式ドキュメントファイルの一覧 |
| Prometheus 公式ドキュメントの読み取り | prometheus://docs/{+file} | 名前を指定して Prometheus 公式ドキュメントファイルを読み取ります |
| エージェントスキル検出インデックス | skill://index.json | 埋め込みの運用手順書/スキルの検出インデックス(SEP-2640) |
| Prometheus 運用手順書(エージェントスキル) | skill://<name>/SKILL.md | 名前を指定して、エージェントスキルとしてパッケージ化された運用手順書を読み取ります(運用手順書ごとに 1 つのリソース) |
インストールと使用方法
この MCP サーバーは、ツール群と完全に統合するか、別のシステムのツールサーバーとしてインストールすると、最も効果を発揮します。 インストール手順や統合サポートは、使用するツールによって異なります。 例:
- MCP ツールのみと連携でき、リソースやプロンプトには対応していないシステムもあります
- MCP サーバーの管理に
mcp.json設定ファイル形式を使用するシステムもあれば、独自形式が必要なシステムもあります - MCP を直接扱えず、プロキシ用に
mcp-to-openapiなどのツールが必要なシステムもあります
具体的な手順やサポートレベルについては、使用または統合するツールのドキュメントをご確認ください。
トランスポート
サーバーは stdio(デフォルト)または HTTP(--mcp.transport=http、Web リッスンアドレスの /mcp で提供)経由で MCP を使用します。
MCP プロトコルのリビジョン 2024-11-05 から 2026-07-28 までに対応しており、どのリビジョンを使用するかはクライアントが選択します。
HTTP では Streamable HTTP トランスポートのみが提供され、旧式の HTTP+SSE トランスポートは提供されません。
HTTP トランスポートはステートレスです。各リクエストは個別に処理され、セッションは追跡されないため、セッションアフィニティなしでレプリカを任意のロードバランサーの背後に配置できます。 これにより、次のようになります。
POSTのみが提供されます。一部のクライアントが開くスタンドアロンのGETストリームには405 Method Not Allowedが返されますが、サーバーが送信する内容はすべてリクエストへの応答に含まれるため、問題ありません。- キープアライブの ping(
--mcp.keepalive-interval)はstdioでのみ送信されます。HTTP では ping を送るセッションがありません。 - クライアントが呼び出しの途中で切断すると、現在の MCP リビジョンでは実行中の Prometheus クエリがキャンセルされます。古いクライアントの呼び出しは最後まで実行されます。
--mcp.session-timeoutは非推奨となっており、無視されます。
--mcp.enable-client-logging を指定すると、ツールハンドラーが出力するログ行が、通常のログ出力に加えて MCP ログ通知としてクライアントに転送されます。
MCP ではこの機能は非推奨となっています。非推奨期間中は引き続き動作しますが、クライアントが受け取る内容はクライアントによって異なります。新しいクライアントではログレベルの指定が必要で、HTTP 経由の古いクライアントには info 以上が送信されます。
バイナリ
Releases ページから、お使いのシステムに適したリリースをダウンロードしてください。 以下のコマンドは v0.19.0 以降を対象としています。それ以前のリリースについては、以下のアップグレードに関する注意を参照してください。 使用可能なフラグと対応する環境変数の詳細については、Flags をご覧ください。
/path/to/prometheus-mcp <flags>
# or using env vars
PROMETHEUS_MCP_PROMETHEUS_URL="https://$yourPrometheus:9090" /path/to/prometheus-mcp
v0.18.0 以前からのアップグレード: v0.19.0 以降、バイナリの名前は prometheus-mcp(以前は prometheus-mcp-server)になり、環境変数のプレフィックスは PROMETHEUS_MCP_SERVER_ から PROMETHEUS_MCP_ に変わりました。
古い変数名はエラーなしで無視されるため、アップグレード時に名前を変更してください。
Docker
使用可能なフラグと対応する環境変数の詳細については、Flags をご覧ください。
# Stdio transport
docker run --rm -i ghcr.io/tjhop/prometheus-mcp-server:latest --prometheus.url "https://$yourPrometheus:9090"
# or using env vars
docker run --rm -i -e PROMETHEUS_MCP_SERVER_PROMETHEUS_URL="https://$yourPrometheus:9090" ghcr.io/tjhop/prometheus-mcp-server:latest
# HTTP transport
docker run --rm -p 8080:8080 ghcr.io/tjhop/prometheus-mcp-server:latest --prometheus.url "https://$yourPrometheus:9090" --mcp.transport "http" --web.listen-address ":8080"
# or using env vars
docker run --rm -p 8080:8080 -e PROMETHEUS_MCP_SERVER_PROMETHEUS_URL="https://$yourPrometheus:9090" -e PROMETHEUS_MCP_SERVER_MCP_TRANSPORT="http" -e PROMETHEUS_MCP_SERVER_WEB_LISTEN_ADDRESS=":8080" ghcr.io/tjhop/prometheus-mcp-server:latest
Helm Chart(Kubernetes)
Kubernetes へのデプロイ用に Helm chart を利用できます。チャートは各リリースで OCI アーティファクトとして公開されます。
helm install prometheus-mcp-server oci://ghcr.io/tjhop/charts/prometheus-mcp-server \
--version <version> \
--set prometheus.url=http://prometheus:9090
設定値と使用例の全一覧については、chart README をご覧ください。
Kubernetes(Raw Manifests)
Helm を使わずにデプロイする場合は、Kubernetes のマニフェスト例を利用できます。
Systemd を使用した Tarball
Releases ページから、お使いのシステム向けの最新リリースの tarball をダウンロードしてください。tarball にはバイナリと Systemd サービスファイルが含まれています。
このユニットは、デフォルトの --prometheus.url(http://127.0.0.1:9090)を使用して :8080 で HTTP トランスポートを実行します。他のフラグは、オーバーライド内の環境変数で設定してください。たとえば、Environment=PROMETHEUS_MCP_PROMETHEUS_URL=https://prometheus.example.com:9090 のように指定します。
# extract the tarball and install the binary and unit file
# (<version> has no leading `v`, e.g. prometheus-mcp-0.19.0.linux-amd64.tar.gz)
tar -xzf prometheus-mcp-<version>.<os>-<arch>.tar.gz
cd prometheus-mcp-<version>.<os>-<arch>
install -m 0755 prometheus-mcp /usr/bin/prometheus-mcp
install -m 0644 prometheus-mcp.service /etc/systemd/system/
# create unit override and set any needed environment variables
systemctl edit prometheus-mcp.service
systemctl enable --now prometheus-mcp.service
注: v0.19.0 以降、リリースにはシステムパッケージ(deb、rpm、Arch Linux の .pkg.tar.zst)が含まれなくなりました。代わりに tarball を使用してください。
v0.18.0 以前のパッケージは、引き続き各リリースページから入手できます。
セキュリティと認証
セキュリティで保護された Prometheus インスタンスへの接続
MCP サーバーは、セキュリティで保護された Prometheus インスタンスに接続するために、Prometheus HTTP config ファイルをサポートしています。
設定例はこちらの examples フォルダーにあります。
HTTP 設定ファイルを指定するには、--http.config コマンドラインフラグを使用してください。
ファイルを読み取れない場合、または無効な場合、サーバーは未認証のクライアントにフォールバックせず、起動時に終了します。
詳しくはフラグをご覧ください。
クライアント認証情報の転送
HTTP トランスポートを使用する場合、MCP サーバーは各 MCP リクエストの Authorization ヘッダーを、そのリクエストに対する API 呼び出しのために Prometheus へ転送します。
Authorization ヘッダーを含まないリクエストと、stdio トランスポート経由のすべてのリクエストでは、フラグから構築されたデフォルトのクライアントを使用します(セキュリティで保護された Prometheus インスタンスへの接続を参照)。
サーバーはクライアントの認証情報をそのまま Prometheus に転送し、検証は行いません。
認証方式を含まない認証情報は、Bearer トークンとして送信されます。
MCP エンドポイントに到達できる人は誰でも、少なくともデフォルトクライアントの認証情報を使用して Prometheus にクエリを実行できるため、ウェブ設定ファイルまたはネットワークレベルの制御を使用して、エンドポイントへのアクセスを制限してください。
ウェブ設定ファイルの基本認証(basic_auth_users)は認証情報の転送と競合することに注意してください。クライアントが MCP サーバーへの認証に使用するものと同じ Authorization ヘッダーが、デフォルトクライアントの認証情報の代わりに Prometheus へ転送されます。
TLS のみを使用するウェブ設定では Authorization ヘッダーを使用しないため、影響を受けません。
MCP サーバーエンドポイントの保護
MCP サーバーは、オプションの基本認証とカスタム TLS 設定を使用してエンドポイントを公開するための Prometheus Web Configuration ファイルをサポートしています。
HTTP 設定ファイルを指定するには、--web.config.file コマンドラインフラグを使用してください。
詳しくはフラグをご覧ください。
テレメトリ
ヘルスエンドポイント
ウェブサーバーは、設定されたリッスンアドレスで、Prometheus エコシステム全体で使用されている /-/healthy および /-/ready の規則に従って、ヘルスエンドポイントを公開します。
| エンドポイント | 説明 |
|---|---|
/-/healthy | ライブネス:プロセスが稼働し、HTTP リクエストを処理している間は常に 200 OK を返します。 |
/-/ready | レディネス:MCP トランスポートのマウントが完了し、クライアントセッションを受け付けられる状態になると 200 OK を返します。それ以前およびシャットダウン中は 503 Service Unavailable を返します。 |
これらは Kubernetes のライブネス/レディネスプローブに直接対応します。prom_mcp_server_ready メトリクスは同じレディネス状態を報告します。
メトリクス
起動すると、サーバーは設定されたリッスンアドレスとテレメトリパス(デフォルトでは :8080/metrics)で Prometheus メトリクスを公開します。
リッスンインターフェース、ポート、テレメトリパスの変更方法については、フラグをご覧ください。
Prometheus MCP サーバーのメトリクス
| メトリクス名 | 種類 | 説明 | ラベル |
|---|---|---|---|
prom_mcp_build_info | Gauge | prometheus-mcp のビルドに使用されたバージョン、コミット、ビルド日をラベルとして持つ、値が常に「1」のメトリクスです。 | version、commit、build_date、goversion |
prom_mcp_server_ready | Gauge | MCP サーバーの準備ができている場合は静的な値「1」、それ以外の場合は「0」を持つ情報メトリクスです。 | |
prom_mcp_api_calls_failed_total | Counter | エンドポイントごとの Prometheus API 呼び出し失敗の合計数です。 | target_path |
prom_mcp_api_call_duration_seconds | Histogram | エンドポイントごとの Prometheus API 呼び出し時間(秒)です。 | target_path |
prom_mcp_tool_calls_failed_total | Counter | ツールごとの失敗数の合計です。クライアントによってキャンセルされた呼び出しはカウントされません。 | tool_name |
prom_mcp_tool_call_duration_seconds | Histogram | ツールごとの呼び出し時間(秒)です。 | tool_name |
prom_mcp_resource_calls_failed_total | Counter | リソースごとの失敗数の合計です。 | resource_uri |
prom_mcp_resource_call_duration_seconds | Histogram | リソースごとの呼び出し時間(秒)です。 | resource_uri |
prom_mcp_docs_last_update_timestamp_seconds | Gauge | ドキュメントの自動更新が最後に成功した時刻の Unix タイムスタンプです。 | |
prom_mcp_docs_update_failures_total | Counter | ドキュメントの自動更新失敗の合計数です。 | |
go_* | Gauge/Counter | client_golang ライブラリによる標準的な Go ランタイムメトリクスです。 | |
process_* | Gauge/Counter | client_golang ライブラリによる標準的なプロセスメトリクスです。 |
Grafana ダッシュボード
MCP サーバーが公開するメトリクスを可視化するための、ビルド済みの Grafana ダッシュボードが grafana/ ディレクトリに含まれています。ダッシュボードの JSON を Grafana にインポートすれば、すぐに使用できます。
ログ
このプロジェクトでは、構造化されたログとログレベルを活用しています。 ログ形式、レベル、任意のファイルの設定方法については、フラグをご覧ください。
MCP go-sdk は独自のロガーを使用します。警告とエラーはデフォルトのレベルで表示され、リクエストごとのセッション管理ログは --log.level=debug を指定した場合にのみ表示されます。
開発
Devbox + Direnv を使った開発環境
Devbox と Direnv を使用している場合、リポジトリのディレクトリに入るだけで 必要なソフトウェアがセットアップされます。
Ollama を使ったローカル LLM
ツールで使用する MCP 設定の例については、mcp.json をご覧ください。
ollama のインストールが必要です。
注:
デフォルトの LLM(
ollama:gpt-oss:20b)を上書きするには、makeの実行前にexport OLLAMA_MODEL="ollama:your_model"を実行してください。
gemini-cli を使った Gemini
prometheus-mcp で gemini-cli を実行する設定ファイルの例については、settings.json をご覧ください。
gemini-cli のインストールが必要です。
`gemini-cli` とホスト型モデルを使用する場合:
make gemini
ビルド
このプロジェクトでは、標準の Prometheus ビルドツールであるpromuを使用し、Makefile/Makefile.commonを通じて実行します。バイナリには、固定されたprometheus/docsのスナップショットが埋め込まれています。ビルドターゲットがこれを自動的にダウンロードして展開します(固定バージョンはMakefile内のDOCS_VERSIONに記載されています)。
make build # build the binary for the host platform (via promu)
make test # run the test suite
make crossbuild # build binaries for all release platforms
make # run the full check suite: style, license, yamllint, lint, build, test
プロジェクト固有のヘルパーターゲット(Helm のパッケージ化とローカル LLM クライアントとの連携)は、make helpで確認できます。
make help
Usage:
make <target>
Project targets:
help print this help message (see Makefile.common for the standard prometheus targets)
docs download and extract the pinned prometheus/docs snapshot for embedding
helm-sync-dashboards copy grafana dashboards into helm chart for packaging
helm-lint run helm chart linting
helm-template render helm templates for inspection
helm-test install helm chart and run tests (requires a running cluster)
mcphost use mcphost to run the prometheus-mcp against a local ollama model
inspector use inspector to run the prometheus-mcp in STDIO transport mode
inspector-http use inspector to run the prometheus-mcp in streamable HTTP transport mode
open-webui use open-webui to run the prometheus-mcp
gemini use gemini-cli to run the prometheus-mcp against Google Gemini models
コマンドラインフラグ
利用可能なコマンドラインフラグは、ヘルプフラグで確認できます。
~/go/src/github.com/prometheus/prometheus-mcp (main [ ]) -> ./prometheus-mcp --help
usage: prometheus-mcp [<flags>]
Flags:
-h, --[no-]help Show context-sensitive help (also
try --help-long and --help-man).
($PROMETHEUS_MCP_HELP)
--mcp.tools=all ... List of mcp tools to load. The target
`all` can be used to load all tools.
The target `core` loads only the core tools:
docs_list,docs_read,docs_search,runbooks_list,runbooks_read,query,range_query,metric_metadata,label_names,label_values,series
Otherwise, it is treated as an allow-list
of tools to load, in addition to the core
tools. Please see project README for more
information and the full list of tools.
($PROMETHEUS_MCP_MCP_TOOLS)
--[no-]mcp.enable-toon-output
Enable Token-Oriented Object Notation
(TOON) output for tools instead of JSON
($PROMETHEUS_MCP_MCP_ENABLE_TOON_OUTPUT)
--[no-]mcp.enable-client-logging
Enable sending log messages to connected
MCP clients as protocol notifications.
When enabled, tool execution logs are
sent both to the server's primary
log output and to the MCP client,
allowing LLMs to observe server activity.
($PROMETHEUS_MCP_MCP_ENABLE_CLIENT_LOGGING)
--mcp.transport="stdio" The type of transport to use for
the MCP server [`stdio`, `http`].
($PROMETHEUS_MCP_MCP_TRANSPORT)
--prometheus.backend=PROMETHEUS.BACKEND
Customize the toolset for a specific
Prometheus API compatible backend.
Supported backends include: prometheus,thanos
($PROMETHEUS_MCP_PROMETHEUS_BACKEND)
--prometheus.url="http://127.0.0.1:9090"
URL of the Prometheus instance to connect to
($PROMETHEUS_MCP_PROMETHEUS_URL)
--prometheus.timeout=1m Timeout for API calls to the Prometheus backend
($PROMETHEUS_MCP_PROMETHEUS_TIMEOUT)
--prometheus.truncation-limit=0
If enabled, this controls the maximum query
response size in number of lines/entries
provided to the LLM from the API response.
LLMs can override truncation limits if
needed on a per-tool-call basis via tool
request arguments on supported tools.
To disable truncation limits, set to 0.
($PROMETHEUS_MCP_PROMETHEUS_TRUNCATION_LIMIT)
--http.config=HTTP.CONFIG Path to config file to set Prometheus HTTP
client options ($PROMETHEUS_MCP_HTTP_CONFIG)
--web.telemetry-path="/metrics"
Path under which to expose metrics.
($PROMETHEUS_MCP_WEB_TELEMETRY_PATH)
--web.max-requests=40 Maximum number of parallel scrape
requests. Use 0 to disable.
($PROMETHEUS_MCP_WEB_MAX_REQUESTS)
--[no-]dangerous.enable-tsdb-admin-tools
Enable and allow using tools that access
Prometheus' TSDB Admin API endpoints
(`snapshot`, `delete_series`, and
`clean_tombstones` tools). This is dangerous,
and allows for destructive operations
like deleting data. It is not the fault
of this MCP server if the LLM you're
connected to nukes all your data. Docs:
https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis
($PROMETHEUS_MCP_DANGEROUS_ENABLE_TSDB_ADMIN_TOOLS)
--mcp.keepalive-interval=30s
Interval between keepalive pings on
the stdio transport; the session is
closed when the peer stops answering.
Not used by the HTTP transport.
($PROMETHEUS_MCP_MCP_KEEPALIVE_INTERVAL)
--mcp.session-timeout=10m Deprecated and ignored: HTTP is served
statelessly. Will be removed in a future
release. ($PROMETHEUS_MCP_MCP_SESSION_TIMEOUT)
--[no-]docs.auto-update Enable automatic documentation updates
from the official prometheus/docs
repository. Checks every 24h0m0s.
($PROMETHEUS_MCP_DOCS_AUTO_UPDATE)
--log.file=LOG.FILE The name of the file to log to (file
rotation policies should be configured
with external tools like logrotate)
($PROMETHEUS_MCP_LOG_FILE)
--[no-]web.systemd-socket Use systemd socket activation listeners
instead of port listeners (Linux only).
($PROMETHEUS_MCP_WEB_SYSTEMD_SOCKET)
--web.listen-address=:8080 ...
Addresses on which to expose metrics and
web interface. Repeatable for multiple
addresses. Examples: `:9100` or `[::1]:9100`
for http, `vsock://:9100` for vsock
($PROMETHEUS_MCP_WEB_LISTEN_ADDRESS)
--web.config.file="" Path to configuration file that can
enable TLS or authentication. See:
https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md
($PROMETHEUS_MCP_WEB_CONFIG_FILE)
--log.level=info Only log messages with the given severity
or above. One of: [debug, info, warn, error]
($PROMETHEUS_MCP_LOG_LEVEL)
--log.format=logfmt Output format of log messages. One of: [logfmt,
json] ($PROMETHEUS_MCP_LOG_FORMAT)
--[no-]version Show application version.
($PROMETHEUS_MCP_VERSION)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。



