Uptime Kuma MCP Server について
Uptime Kuma インスタンスを管理する FastMCP サーバーです。監視の運用担当者や AI クライアント向けに、監視項目、タグ、ステータスページ、ハートビートを扱うツールを提供します。
主な機能
- 01監視項目の追加、編集、削除、一時停止、再開
- 02監視項目一覧とハートビートの取得
- 03監視項目タグの管理
- 04ステータスページ詳細の取得
- 05STDIO と SSE モードに対応
活用シーン
- 01URL の HTTP 監視を追加
- 02監視項目の一時停止や更新
- 03監視項目のハートビート履歴を確認
- 04ステータスページの詳細やタグを取得
MCP 対応
MCP クライアント向けに Uptime Kuma と連携するツールを公開し、監視項目、タグ、ステータスページ、ハートビートを操作できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Uptime Kuma MCP Server
このプロジェクトは、Uptime Kuma インスタンスとやり取りするための仲介役となる FastMCP(Message Control Protocol)サーバーを提供します。Uptime Kuma のモニターやタグ、ステータスページを管理するツール一式を公開し、ハートビートデータを取得できます。
機能
サーバーは次のツールを公開します。
- Uptime Kuma へのログイン:(内部関数。すべてのツールで使用)
add_monitors:Uptime Kuma に複数の HTTP モニターを追加します。get_monitors:すべてのモニターの一覧を取得します。delete_monitors:ID を指定してモニターを削除します。pause_monitor:指定したモニターを一時停止します。resume_monitor:指定したモニターを再開します。get_monitor_beats:指定したモニターのハートビートを取得します。edit_monitor:既存のモニターの属性を編集します。add_monitor_tag:指定したモニターにタグを追加します。delete_monitor_tag:指定したモニターからタグを削除します。get_status_page:指定したステータスページの詳細を取得します。get_heartbeats:期間を指定し、ページネーションを使用して、指定したモニターのハートビートを取得します。get_tags:Uptime Kuma で定義されているすべてのタグを取得します。
動作の仕組み
- FastMCP サーバー: アプリケーションの中核は
FastMCPサーバーインスタンスです。このサーバーは、あらかじめ定義された「ツール」を実行するためのリクエストを待ち受けます。 - Uptime Kuma API との連携: 各ツールは呼び出されると、まず
uptime-kuma-apiPython クライアントライブラリを使用して、設定済みの Uptime Kuma インスタンスへのログインを試みます。 - 非同期操作: サーバーは、ノンブロッキング I/O を実現するために
asyncioを使用して構築されています。uptime-kuma-apiライブラリは同期型のため、サーバーのイベントループがブロックされないよう、呼び出しをloop.run_in_executorでラップします。 - 環境設定: Uptime Kuma の認証情報やサーバーのバインド情報など、重要な設定の詳細は環境変数で管理され、
.envファイルから読み込まれます。 - ツールの定義: 公開される各機能(例:
add_monitors、get_monitors)は、@mcp.tool()デコレーターを付けた非同期関数として定義されます。これらのツールは、Uptime Kuma API とやり取りするロジックを処理し、レスポンスを整形します。
前提条件
- Python 3.7 以降(
asyncio.get_running_loop()が必要なため) - Uptime Kuma インスタンス
- Uptime Kuma インスタンスへのアクセス認証情報(ユーザー名、パスワード)
セットアップ
-
リポジトリをクローンします(該当する場合):
git clone <repository_url> cd uptime-kuma-mcp-server -
依存関係をインストールします: 仮想環境の使用をおすすめします。
python -m venv venv source venv/bin/activate pip install -r requirements.txt
サーバーの実行
サーバーは次の 2 つのモードで実行できます。
-
STDIO モード(デフォルト): このモードでは、標準入出力を使用して通信します。通常、別のアプリケーションがサブプロセスとしてサーバーを管理する場合に使用します。
python main.pyサーバーが起動し、その動作がコンソールに記録されます。
-
SSE(Server-Sent Events)モード: このモードでは、Server-Sent Events を使用して通信する HTTP サーバーを実行します。このモードで実行するには、
main.pyのif __name__ == "__main__":ブロックを変更し、main_stdio()の代わりにmain_sse()を呼び出します。main.pyの変更例:if __name__ == "__main__": # logger.info("Starting MCP server in STDIO mode as per __main__ block...") # main_stdio() # logger.info("MCP server (stdio mode) has finished or exited.") logger.info("Starting MCP server in SSE mode...") main_sse() # Call main_sse() here logger.info("MCP server (SSE mode) has finished or exited.")次に、以下を実行します。
python main.pyサーバーは、
MCP_HOSTとMCP_PORTの環境変数で指定されたホストとポートで待ち受けます(デフォルトは0.0.0.0:8000です)。
ツールの詳細
すべてのツールは、最初に Uptime Kuma へのログインを試みます。ログインに失敗すると、ツールの実行も失敗します。
add_monitors(urls: list[str])
- 説明: Uptime Kuma に複数の HTTP モニターを追加します。
- パラメーター:
urls(文字列のリスト):モニターを作成する URL のリストです。モニター名は URL から生成されます。
- 戻り値:
monitor_addition_results、kuma_url、total_requested、successfully_addedを含む辞書です。
get_monitors()
- 説明: Uptime Kuma のすべてのモニターのリストを取得します。
- パラメーター: なし。
- 戻り値:
monitors(項目数を絞ったリスト)、total_count、kuma_urlを含む辞書です。
delete_monitors(ids: list[int])
- 説明: 指定した ID のモニターを削除します。
- パラメーター:
ids(整数のリスト):削除するモニター ID のリストです。
- 戻り値:
monitor_deletion_results、total_requested、successfully_deleted、kuma_urlを含む辞書です。
pause_monitor(monitor_id: int)
- 説明: 特定のモニターを一時停止します。
- パラメーター:
monitor_id(整数):一時停止するモニターの ID です。
- 戻り値: API のレスポンスとともに、成功または失敗を示す辞書です。
resume_monitor(monitor_id: int)
- 説明: 特定のモニターを再開します。
- パラメーター:
monitor_id(整数):再開するモニターの ID です。
- 戻り値: API のレスポンスとともに、成功または失敗を示す辞書です。
get_monitor_beats(monitor_id: int, hours: int = 1)
- 説明: 指定した期間内の特定のモニターのハートビートを取得します。
- パラメーター:
monitor_id(整数):モニターの ID です。hours(整数、デフォルト:1):取得するハートビートの期間を、現在から遡る時間数で指定します。
- 戻り値:
beats、count、statusを含む辞書です。
edit_monitor(monitor_id: int, options: dict)
- 説明: 既存のモニターを編集します。
- パラメーター:
monitor_id(整数):編集するモニターの ID です。options(辞書):更新するモニター属性です(例:{"name": "New Name", "interval": 60})。利用可能なフィールドについては、Uptime Kuma API を参照してください。
- 戻り値: API のレスポンスとともに、成功または失敗を示す辞書です。
add_monitor_tag(monitor_id: int, tag_id: int, value: str)
- 説明: 特定のモニターにタグを追加します。
- パラメーター:
monitor_id(整数):モニターの ID です。tag_id(整数):追加するタグの ID です。value(文字列):タグの値です。
- 戻り値: API のレスポンスとともに、成功または失敗を示す辞書です。
delete_monitor_tag(monitor_id: int, tag_id: int)
- 説明: 特定のモニターからタグを削除します。
- パラメーター:
monitor_id(整数):モニターの ID です。tag_id(整数):削除するタグの ID です。
- 戻り値: API のレスポンスとともに、成功または失敗を示す辞書です。
get_status_page(slug: str)
- 説明: スラッグで指定したステータスページの詳細を取得します。
- パラメーター:
slug(文字列):ステータスページのスラッグです。
- 戻り値: ステータスページの
dataまたはエラーメッセージを含む辞書です。
get_heartbeats(offset: int = 0, limit: int = 100)
- 説明: ページネーションを使用して、ハートビートのモニターデータを取得します。
- 注:このツールは、まず Uptime Kuma からすべてのハートビートを取得してから、サーバー側でページネーションを適用します。非常に大きなデータセットでは、効率が悪い可能性があります。
- パラメーター:
offset(整数、デフォルト:0):ページネーションのオフセットです。limit(整数、デフォルト:100):1 ページあたりのハートビート数の上限です。
- 戻り値: ページネーションされた
data、total_available、count_returned、offset、limitを含む辞書です。
get_tags()
- 説明: Uptime Kuma で定義されているすべてのタグを取得します。
- パラメーター: なし。
- 戻り値: タグのリスト(
data)とそのcountを含む辞書です。
ロギング
サーバーは Python のloggingモジュールを使用します。デフォルトでは、INFO レベルでログがコンソール(標準出力)に出力され、タイムスタンプ、ロガー名、ログレベル、メッセージが含まれます。
エラー処理
- 設定エラー: 必須の Uptime Kuma 環境変数(
KUMA_URL、KUMA_USERNAME、KUMA_PASSWORD)が設定されていない場合、サーバーは起動に失敗し(ValueErrorが発生し)ます。 - API エラー: Uptime Kuma API とのやり取り中に発生したエラー(ログイン失敗、無効なモニター ID など)は記録されます。ツールは通常、「status」フィールドに「error」または「failed」を示し、「error_message」を含む辞書を返します。
- 一般的な例外: ツールハンドラー内で捕捉されなかった例外は記録された後、再送出されます。これにより、FastMCP フレームワークが適切に処理できます(クライアントへのエラーレスポンスの送信など)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。