mcpField
P
Prometheus MCP Server

Prometheus MCP Server

ローカル
github.com開発ツール1322 週間前に更新

Prometheus MCP Server について

Prometheus MCP Serverは、API経由で稼働中のPrometheusインスタンスをLLMから調査、操作できるサーバーです。クエリやメトリクスのツールに、設定・ヘルス情報、ドキュメント、ガイド付きランブックを組み合わせ、ツールや応答量も設定できます。

主な機能

  1. 01即時および範囲指定のPromQLクエリを実行
  2. 02メトリクス、ラベル、シリーズ、ターゲットを調査
  3. 03設定、ランタイム、ヘルス情報を取得
  4. 04Prometheusドキュメントとガイド付きランブックを提供
  5. 05ツール選択と応答の切り詰めを設定
  6. 06API応答のTOONエンコードに対応

活用シーン

  1. 01クエリの遅延やメトリクスの挙動を調査
  2. 02Prometheusの健全性、設定、稼働状況を確認
  3. 03ランブックを使って高カーディナリティやデータ欠落を調査
  4. 04アラート、ルール、ターゲット、メトリクスメタデータを確認

MCP 対応

MCPクライアントに、ツール、リソース、プロンプトとしてPrometheus API操作、ドキュメント、ランブックを提供します。破壊的なTSDB管理ツールは、明示的に有効化しない限り利用できません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"prometheus-mcp-server-tjhop": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/tjhop/prometheus-mcp-server:0.18.0"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/tjhop/prometheus-mcp-server:0.18.0

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/tjhop/prometheus-mcp-server:0.18.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Prometheus MCP Server

license golangci-lint Latest Release GitHub Downloads (all assets, all releases)

Prometheus MCP サーバーのロゴ

概要

これは、LLM が実行中の Prometheus インスタンスと API 経由でやり取りし、promql クエリの生成や実行、メトリクスの一覧表示や分析などを行えるようにする MCP サーバーです。

デモと使用例
Claude に遅いクエリの調査を依頼する

使用したプロンプト:

メトリクスのクエリが遅いです。原因を調べてもらえますか?

Claude に遅いクエリの調査を依頼するデモプロンプト

MCP サーバー自体が出力するメトリクスを調査し、SLO のレコーディングルールを提案する

使用したプロンプト:

prometheus mcp server のツールを使って、 mcp server のメトリクスを調査し、SLO 用の prometheus レコーディングルールを提案してください

MCP サーバーが出力するメトリクスを調査し、SLO 用のルールを作成するデモプロンプト

Prometheus のメトリクス名とラベル名のベストプラクティスを要約する

使用したプロンプト:

prometheus のメトリクス名とラベル名のベストプラクティスを要約してください

Prometheus のメトリクス名とラベル名のベストプラクティスを要約するデモプロンプト

prometheus.demo.prometheus.io を稼働させている Prometheus インスタンスの健全性を報告する

使用したプロンプト:

Prometheus サーバーを包括的にレビューし、要約してください。 設定、フラグ、ランタイム/ビルド情報、および Prometheus インスタンスの状態を把握するのに役立つと思われるその他の情報を確認し、 メトリクスの分析やクエリの実行も行ってください

demo.prometheus.io の 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 は、対応するツールについて、ツール呼び出しごとにこのグローバルな切り詰め上限を上書きできます。 使用可能なフラグと対応する環境変数については、フラグを参照してください。

ツール一覧
ツール名説明
alertmanagersPrometheus の Alertmanager 検出の概要を取得します
build_infoPrometheus のビルド情報を取得します
configPrometheus の設定を取得します
docs_listPrometheus の公式ドキュメントファイルの一覧を取得します
docs_readprometheus/docs リポジトリにある、指定された公式ドキュメントの Markdown ファイルを読み取ります
docs_searchprometheus/docs リポジトリにある、公式ドキュメントの Markdown ファイルを検索します
exemplar_query指定されたクエリと時間範囲でエグザンプラーを検索します
flags実行時フラグを取得します
healthyPrometheus の健全性を確認するために使用できる管理 API エンドポイントです
label_names指定された時間範囲とマッチャーに基づき、ブロックに存在する一意なラベル名をソート順で返します
label_values指定されたラベル、時間範囲、マッチャーの値を検索します
list_alertsアクティブなアラートをすべて一覧表示します
list_rules読み込まれているアラートルールと記録ルールをすべて一覧表示します
list_targetsPrometheus のターゲット検出の概要を取得します
metric_metadata指定されたメトリクス名について、現在スクレイプされているメトリクスのメタデータを返します
queryPrometheus データソースに対してインスタントクエリを実行し、単一時点における各系列の値を返します
quitPrometheus の正常なシャットダウンを開始するために使用できる管理 API エンドポイントです
range_queryPrometheus データソースに対して範囲クエリを実行し、一定の時間範囲にわたる値を返します
readyPrometheus がトラフィックを処理できる状態(つまりクエリに応答できる状態)か確認するために使用できる管理 API エンドポイントです
reloadPrometheus の設定ファイルとルールファイルの再読み込みを開始するために使用できる管理 API エンドポイントです
runbooks_listこのサーバーに組み込まれているランブック、つまり一般的な Prometheus タスク向けのガイド付きワークフロー(エージェントスキル)の一覧を取得します
runbooks_readスキル名(例:check-system-health)を指定してランブックを読み取ります
runtime_infoPrometheus の実行時情報を取得します
seriesラベルマッチャーで系列を検索します
targets_metadataターゲットによって現在スクレイプされているメトリクスのメタデータを返します
tsdb_statsTSDB の使用状況とカーディナリティの統計情報を取得します
wal_replay_status現在の WAL 再生ステータスを取得します

注:

TSDB Admin API エンドポイントでは、 データの削除など、破壊的な操作が実行される可能性があるため、デフォルトでは 無効になっています。TSDB Admin API エンドポイントを有効にするには、MCP サーバーの起動時にフラグ --dangerous.enable-tsdb-admin-tools を指定し、 これらのエンドポイントに伴うリスクを了承する必要があります。

ツール名説明
clean_tombstones削除済みデータをディスクから取り除き、既存のトゥームストーンをクリーンアップします
delete_series時間範囲内で、選択された系列のデータを削除します
snapshotTSDB のデータディレクトリ内の 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_info
  • docs_list
  • docs_read
  • docs_search
  • flags
  • label_names
  • label_values
  • metric_metadata
  • query
  • range_query
  • runbooks_list
  • runbooks_read
  • runtime_info
  • series
ランブック(エージェントスキル)とプロンプト

このサーバーには、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 バックエンド実装の違い
バックエンドツール追加/削除/変更備考
prometheusn/aなし標準の Prometheus ツールです。機能的には --mcp.tools="all" と同等です。デフォルトの MCP サーバーツールセットです。
thanosalertmanagers削除Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します。
thanosclean_tombstones削除Prometheus TSDB 管理エンドポイント
thanosconfig削除Thanos は一元化された設定を使用しないため、このエンドポイントを実装しておらず、ツールは 404 を返します。
thanosdelete_series削除Prometheus TSDB 管理エンドポイント
thanoslist_stores追加Thanos は、ストア API サーバーを一覧表示する追加エンドポイントを提供しています。
thanosquit削除Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します。
thanosreload削除Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します。
thanossnapshot削除Prometheus TSDB 管理エンドポイント
thanostargets_metadata削除Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します(thanos-io/thanos#7119)。
thanoswal_replay_status削除Thanos はこのエンドポイントを実装していないため、ツールは 404 を返します。
リソース
リソース名リソース URI説明
Prometheus 公式ドキュメントファイル一覧prometheus://docsPrometheus 公式ドキュメントファイルの一覧
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_infoGaugeprometheus-mcp のビルドに使用されたバージョン、コミット、ビルド日をラベルとして持つ、値が常に「1」のメトリクスです。version、commit、build_date、goversion
prom_mcp_server_readyGaugeMCP サーバーの準備ができている場合は静的な値「1」、それ以外の場合は「0」を持つ情報メトリクスです。
prom_mcp_api_calls_failed_totalCounterエンドポイントごとの Prometheus API 呼び出し失敗の合計数です。target_path
prom_mcp_api_call_duration_secondsHistogramエンドポイントごとの Prometheus API 呼び出し時間(秒)です。target_path
prom_mcp_tool_calls_failed_totalCounterツールごとの失敗数の合計です。クライアントによってキャンセルされた呼び出しはカウントされません。tool_name
prom_mcp_tool_call_duration_secondsHistogramツールごとの呼び出し時間(秒)です。tool_name
prom_mcp_resource_calls_failed_totalCounterリソースごとの失敗数の合計です。resource_uri
prom_mcp_resource_call_duration_secondsHistogramリソースごとの呼び出し時間(秒)です。resource_uri
prom_mcp_docs_last_update_timestamp_secondsGaugeドキュメントの自動更新が最後に成功した時刻の Unix タイムスタンプです。
prom_mcp_docs_update_failures_totalCounterドキュメントの自動更新失敗の合計数です。
go_*Gauge/Counterclient_golang ライブラリによる標準的な Go ランタイムメトリクスです。
process_*Gauge/Counterclient_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" を実行してください。

MCP Inspector とローカルの ollama インスタンスを使用する場合:

MCP Inpsector のインストールが必要です:

make inspector
mcphost とローカルの ollama インスタンスを使用する場合:

mcphost のインストールが必要です:

make mcphost
gemini-cli を使った Gemini

prometheus-mcp で gemini-cli を実行する設定ファイルの例については、settings.json をご覧ください。 gemini-cli のインストールが必要です。

`gemini-cli` とホスト型モデルを使用する場合:
make gemini
### 手動セットアップ 必要なソフトウェア: - Go が動作する環境 - ローカルでのテスト/リンティング/イメージのビルドなどに使用する Docker - GNU Make - [ollama](https://github.com/ollama/ollama) - [mcp inspector](https://github.com/modelcontextprotocol/inspector) - [mcphost](https://github.com/mark3labs/mcphost)
ビルド

このプロジェクトでは、標準の 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)

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。