mcpField
P
Prometheus Alertmanager MCP

Prometheus Alertmanager MCP

ローカル
github.com/ntk148v開発ツール253 日前に更新

Prometheus Alertmanager MCP について

Prometheus Alertmanager MCP は、AI アシスタントが Prometheus Alertmanager のリソースを照会・管理できるようにする MCP サーバーです。大量のアラートで LLM のコンテキストが溢れないようページ分割して返し、Mimir や Cortex などのマルチテナント環境にも対応します。

主な機能

  1. 01ステータス、アラート、サイレンス、レシーバー、アラートグループの照会
  2. 02コンテキスト使用量を抑えるページ分割の結果返却
  3. 03サイレンスの作成・更新・削除
  4. 04新規アラートの作成
  5. 05環境変数による Basic 認証とテナント設定
  6. 06コンテナ実行用の Docker イメージ

活用シーン

  1. 01アシスタントに CPU 関連の現在のアラートを絞り込ませる
  2. 02アラートに対して一定時間のサイレンスを作成する
  3. 03マルチテナントの Mimir や Cortex 環境でアラートを確認する

MCP 対応

MCP サーバーとして、get_status、get_alerts、get_silences、post_silence などのツールを MCP クライアントに公開し、Alertmanager へのアクセスと管理を可能にします。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

Prometheus Alertmanager MCP

GitHub ライセンス GitHub スター

目次

1. はじめに

Prometheus Alertmanager MCP は、Prometheus Alertmanager 用のModel Context Protocol(MCP)サーバーです。AI アシスタントやツールから、Alertmanager のリソースをプログラムで安全に照会・管理できます。

2. 機能

  • Alertmanager のステータス、アラート、サイレンス、レシーバー、アラートグループを照会
  • LLM のコンテキストウィンドウが大量のアラートの処理時にあふれるのを防ぐ、スマートなページネーションのサポート
  • サイレンスの作成、更新、削除
  • 新しいアラートの作成
  • 認証のサポート(環境変数を使用した Basic 認証)
  • マルチテナントのサポート(Mimir/Cortex 用の ALERTMANAGER_TENANT を使用)
  • Docker コンテナ化のサポート

3. クイックスタート

3.1. 前提条件
  • Python 3.12+
  • uv(依存関係を高速に管理するために使用します)。
  • Docker(任意。コンテナ化してデプロイする場合に使用します)。
  • この MCP サーバーを実行する環境から、Prometheus Alertmanager サーバーにアクセスできることを確認してください。
3.2. Smithery 経由でのインストール

Smithery 経由で Prometheus Alertmanager MCP Server を Claude Desktop に自動インストールするには:

npx -y @smithery/cli install @ntk148v/alertmanager-mcp-server --client claude
3.3. ローカルでの実行
  • リポジトリをクローンします:
# Clone the repository
$ git clone https://github.com/ntk148v/alertmanager-mcp-server.git
  • .env ファイルまたはシステム環境変数を使って、Prometheus サーバーの環境変数を設定します:
# Set environment variables (see .env.sample)
ALERTMANAGER_URL=http://your-alertmanager:9093
ALERTMANAGER_USERNAME=your_username  # optional
ALERTMANAGER_PASSWORD=your_password  # optional
ALERTMANAGER_TENANT=your_tenant_id   # optional, for multi-tenant setups
マルチテナントのサポート

マルチテナントの Alertmanager デプロイメント(Grafana Mimir、Cortex など)では、ALERTMANAGER_TENANT 環境変数でテナント ID を設定します。テナントは起動時に固定され、リクエストヘッダーから取得されることは決してありません。呼び出し元が指定した X-Scope-OrgId の値は、クライアントが任意のテナントを選択できないように無視されます。

トランスポートの設定

トランスポートオプションとホスト/ポート設定を使用して、MCP サーバーがクライアントと通信する方法を制御できます。これらはコマンドラインフラグ(優先されます)または環境変数で設定できます。

  • MCP_TRANSPORT:トランスポートモード。stdio、http、sse のいずれかです。デフォルト:stdio。
  • MCP_HOST:http または sse トランスポートの実行時にバインドするホスト/インターフェース(組み込みの uvicorn サーバーで使用)。デフォルト:127.0.0.1。
  • MCP_PORT:http または sse トランスポートの実行時にリッスンするポート。デフォルト:8000。
  • MCP_API_KEY:任意のベアラー/API キー。設定すると、すべての http/sse リクエストで Authorization: Bearer <key> を送信する必要があり、送信しない場合は 401 で拒否されます。未設定の場合、サーバーはウェブトランスポートが認証されていないことを起動時の警告としてログに記録します。ネットワーク経由でアクセス可能な環境にデプロイする場合は、設定を強く推奨します。

セキュリティ:ネットワーク経由でアクセス可能な環境にデプロイする場合は、必ず MCP_API_KEY を設定してください。デフォルトではサーバーはループバックのみにバインドされます(127.0.0.1)。外部からのアクセスが必要な場合は、信頼できるプロキシまたはファイアウォールの背後でのみ 0.0.0.0 に公開してください。

例:

デフォルトを設定するには環境変数を使用します(CLI フラグが優先されます)。

MCP_TRANSPORT=sse MCP_API_KEY=change-me MCP_HOST=0.0.0.0 MCP_PORT=8080 python3 -m src.alertmanager_mcp_server.server

または、環境変数を上書きするにはフラグを直接渡します。

python3 -m src.alertmanager_mcp_server.server --transport http --host 127.0.0.1 --port 9000

注意:

  • stdio トランスポートは標準入力/出力を介して通信し、ホスト/ポート設定を無視します。

  • http(ストリーミング可能な HTTP)および sse トランスポートは ASGI アプリ(uvicorn)経由で提供されるため、これらのトランスポートを使用する場合はホスト/ポート設定が適用されます。

  • サーバー設定をクライアントの設定ファイルに追加します。たとえば、Claude Desktop の場合:

{
  "mcpServers": {
    "alertmanager": {
      "command": "uv",
      "args": [
        "--directory",
        "<full path to alertmanager-mcp-server directory>",
        "run",
        "src/alertmanager_mcp_server/server.py"
      ],
      "env": {
        "ALERTMANAGER_URL": "http://your-alertmanager:9093s",
        "ALERTMANAGER_USERNAME": "your_username",
        "ALERTMANAGER_PASSWORD": "your_password"
      }
    }
  }
}
  • または、make コマンドを使用してインストールします。
$ make install
  • Claude Desktop を再起動して、新しい設定を読み込みます。
  • これで、自然言語を使って Alertmanager と対話するよう Claude に依頼できます。
    • 「現在のアラートを表示して」
    • 「CPU の問題に関連するアラートを絞り込んで」
    • 「このアラートの詳細を取得して」
    • 「このアラートのサイレンスを今後 2 時間作成して」

README の画像

README の画像

3.4. Docker の実行
  • ビルド済みイメージを使用して実行します(または、自分でビルドすることもできます)。
$ docker run -e ALERTMANAGER_URL=http://your-alertmanager:9093 \
    -e ALERTMANAGER_USERNAME=your_username \
    -e ALERTMANAGER_PASSWORD=your_password \
    -e ALERTMANAGER_TENANT=your_tenant_id \
    -p 8000:8000 ghcr.io/ntk148v/alertmanager-mcp-server
  • Claude Desktop で Docker を使用して実行する場合:
{
  "mcpServers": {
    "alertmanager": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "ALERTMANAGER_URL",
        "-e",
        "ALERTMANAGER_USERNAME",
        "-e",
        "ALERTMANAGER_PASSWORD",
        "ghcr.io/ntk148v/alertmanager-mcp-server:latest"
      ],
      "env": {
        "ALERTMANAGER_URL": "http://your-alertmanager:9093s",
        "ALERTMANAGER_USERNAME": "your_username",
        "ALERTMANAGER_PASSWORD": "your_password"
      }
    }
  }
}

この設定では、変数名だけを指定した -e フラグを使用し、実際の値を env オブジェクトに指定することで、Claude Desktop の環境変数を Docker コンテナに渡します。

4. ツール

MCP サーバーは、Alertmanager API v2 に従って、Alertmanager のクエリと管理を行うツールを提供します。

  • ステータスの取得:get_status()
  • アラートの一覧表示:get_alerts(filter, silenced, inhibited, active, count, offset)
    • ページネーション対応:LLM のコンテキストが過剰にならないよう、ページ分割された結果を返します
    • count:1 ページあたりのアラート数(デフォルト:10、最大:25)
    • offset:スキップするアラート数(デフォルト:0)
    • 戻り値:{ "data": [...], "pagination": { "total": N, "offset": M, "count": K, "has_more": bool } }
  • サイレンスの一覧表示:get_silences(filter, count, offset)
    • ページネーション対応:LLM のコンテキストが過剰にならないよう、ページ分割された結果を返します
    • count:1 ページあたりのサイレンス数(デフォルト:10、最大:50)
    • offset:スキップするサイレンス数(デフォルト:0)
    • 戻り値:{ "data": [...], "pagination": { "total": N, "offset": M, "count": K, "has_more": bool } }
  • サイレンスの作成:post_silence(silence_dict)
  • サイレンスの削除:delete_silence(silence_id)
  • レシーバーの一覧表示:get_receivers()
  • アラートグループの一覧表示:get_alert_groups(silenced, inhibited, active, count, offset)
    • ページネーション対応:LLM のコンテキストが過剰にならないよう、ページ分割された結果を返します
    • count:1 ページあたりのアラートグループ数(デフォルト:3、最大:5)
    • offset:スキップするアラートグループ数(デフォルト:0)
    • 戻り値:{ "data": [...], "pagination": { "total": N, "offset": M, "count": K, "has_more": bool } }
    • 注:アラートグループには各グループ内のすべてのアラートが含まれるため、上限が低く設定されています
ページネーションのメリット

アラート、サイレンス、アラートグループが多数ある環境で作業する場合、ページネーション機能は次のようなメリットがあります。

  • コンテキストのオーバーフローを防止:デフォルトでは、リクエストごとに返される項目は10件のみです
  • 効率的な閲覧:LLMはoffsetとcountパラメーターを使って結果を順に確認できます
  • 適切な上限:1ページあたりの項目数は最大50件で、コンテキストの過剰な使用を防ぎます
  • 明確なナビゲーション:has_moreフラグで、次のページがあるかどうかを確認できます

例:アラートが100件ある場合、LLMは扱いやすい単位(例:一度に10件)に分けて取得し、分析に必要なものだけを読み込めます。

APIの詳細については、src/alertmanager_mcp_server/server.pyを参照してください。

5. 開発

貢献を歓迎します!ご提案や改善点がある場合は、イシューを作成するか、プルリクエストを送信してください。

このプロジェクトでは、依存関係の管理にuvを使用しています。お使いのプラットフォーム向けの手順に従ってuvをインストールしてください。

# Clone the repository
$ git clone https://github.com/ntk148v/alertmanager-mcp-server.git
$ cd alertmanager-mcp-server
$ make setup
# Run test
$ make test
# Run in development mode
$ mcp dev src/alertmanager_mcp_server/server.py

# Install in Claude Desktop
$ make install

6. ライセンス

Apache 2.0


❤️を込めて作成:@ntk148v

コメント

MCP は初めてですか?

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

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