FastMCP server that pages on-call via 100+ notification channels (Apprise wrappe について
paging-mcp は Apprise 対応の通知チャネルを通じてアラートを送る FastMCP サーバーです。複数チャネルへの通知が必要なオンコールチームや自動化システム向けで、認証情報のマスキングとチャネル選択に対応します。
主な機能
- 01複数チャネルへのアラート送信
- 02設定済みチャネルの選択
- 03一時チャネルへの通知
- 04送信前のドライラン
- 05応答内の認証情報マスキング
- 06チャネルごとの送信結果
活用シーン
- 01監視アラートをオンコール担当者に通知
- 02バッチジョブの失敗を運用担当者に連絡
- 03セキュリティアラートを予備チャネルで送信
MCP 対応
Apprise ベースの通知ツールを MCP クライアントに提供し、チャネル一覧、ドライラン、通知送信を行えます。チャネルは APPRISE_URLS で設定し、ツールの応答では認証情報をマスキングします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
paging-mcp
100 種類以上の通知チャネルを通じてオンコール担当者にページを送る FastMCP サーバーです。Apprise を基盤としており、WhatsApp、ntfy、Pushover、Telegram、Discord、Slack、Signal、Matrix、Gotify、mailto、Twilio SMS、AWS SNS など、多数のサービスに対応しています。
このツールの狙いは、プロバイダーに依存しないことです。MCP を 1 つ接続し、必要な数だけチャネルを設定すれば、ベンダーを切り替えるたびにインテグレーションコードを書き直すことなく、冗長なページ通知を受け取れます。
これが必要な理由
B2B パイプラインの合成モニター、長時間実行されるバッチジョブ、セキュリティアラートなど、人間を起こす必要があるものを構築する場合、次のことが必要です。
- 1 つのプロバイダーが停止してもページ通知を逃さないよう、複数のチャネルに並行して通知すること。
- オペレーターに合ったチャネルを使えること(中南米のオンコール担当者には WhatsApp、セルフホスト利用者には ntfy、個人用スマートフォンには Pushover、今でも適しているケースには Twilio SMS)。
- 出力を読むエージェントが認証情報を会話の記録に漏らさないよう、ツールの応答で認証情報を伏せること。
- チャネルごとに新しい MCP を用意することなく、エージェントがどこからでも呼び出せる MCP を 1 つ用意すること(Claude Code、Codex、Cursor など)。
Apprise は Python でチャネル 1~2 を解決します。このサーバーは、認証情報のマスキングとチャネルのフィルタリングを加え、MCP から呼び出せるようにします。
インストール
Claude Code を開き、次のコマンドを貼り付けます。
/plugin marketplace add adelaidasofia/paging-mcp
/plugin install paging-mcp@paging-mcp
旧式のインストール方法
git clone https://github.com/adelaidasofia/paging-mcp ~/.claude/paging-mcp
cd ~/.claude/paging-mcp
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
設定
APPRISE_URLS に 1 つ以上の Apprise URL を設定します。改行、セミコロン、またはカンマで区切ります。
export APPRISE_URLS="
ntfys://ntfy.sh/<your-secret-topic>
whapi+https://gate.whapi.cloud/messages/text?token=<TOKEN>&to=+57...
pover://<USER_KEY>@<APP_TOKEN>
mailto://user:[email protected]/[email protected]
"
プロバイダー別の Apprise URL の例:
| プロバイダー | URL パターン |
|---|---|
| WhatsApp Business(Whapi) | whapi+https://gate.whapi.cloud/messages/text?token=<TOKEN>&to=<+E164> |
| ntfy | ntfys://ntfy.sh/<topic> |
| Pushover | pover://<USER_KEY>@<APP_TOKEN> |
| Telegram ボット | tgram://<BOT_TOKEN>/<CHAT_ID> |
| Twilio SMS | twilio://<SID>:<TOKEN>@<FROM>/<TO> |
| Signal CLI | signal://<from>@<api-host>/<to> |
| Slack の受信 Webhook | slack://<token-a>/<token-b>/<token-c> |
| Discord Webhook | discord://<webhook-id>/<webhook-token> |
| SMTP メール | mailto://<user>:<pass>@<host>:<port>/?to=<dest> |
| AWS SNS | sns://<KEY>/<SECRET>/<REGION>/<TOPIC> |
全一覧:https://github.com/caronc/apprise/wiki
Claude Code に登録する
プロジェクト単位(<vault>/.mcp.json):
{
"mcpServers": {
"paging": {
"command": "/Users/<you>/.claude/paging-mcp/.venv/bin/python",
"args": ["/Users/<you>/.claude/paging-mcp/server.py"],
"env": {
"APPRISE_URLS": "ntfys://ntfy.sh/<your-secret-topic>"
}
}
}
}
ユーザー単位:
claude mcp add -s user paging \
/Users/<you>/.claude/paging-mcp/.venv/bin/python \
/Users/<you>/.claude/paging-mcp/server.py \
--env APPRISE_URLS="ntfys://ntfy.sh/<your-secret-topic>"
Claude Code を再起動します。claude mcp list で確認してください。
ツール
| ツール | 機能 |
|---|---|
health_check | サーバーのセルフチェック、Apprise のバージョン、設定済みチャンネル数を確認します。 |
list_configured_channels | paging-mcp が通知を送信するチャンネルを一覧表示します。認証情報は伏せられます。 |
notify(title, body, severity, channels?) | 設定済みのすべてのチャンネル(または伏せ字 URL によるフィルターで選択した一部)に通知を送信します。チャンネルごとの結果を返します。 |
notify_one(url, title, body, severity) | 単一の一時的な Apprise URL に通知を送信します(永続化されません)。 |
dry_run(title, body, severity) | 通知を送信せずに、notify() が送信する内容を表示します。 |
severity は info、success、warning、failure のいずれかです。色やアイコンでタグ付けするチャンネルで使用されます。
テスト
.venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest tests/ -v
URL の伏せ字化、複数チャンネルへの送信、一部の失敗、チャンネルのフィルタリング、URL に認証情報を含むエンドツーエンドのページングフローを対象とする、16 件の単体テストと統合テストがあります。
セキュリティに関する注意事項
- ツールの応答に認証情報が表示されることはありません。パスを秘密情報として使うスキーム(ntfy、pushbullet、pover)では、パスの最後のセグメントも伏せ字になります。
notify_oneは一時的な URL を受け付けます。エージェントに直接の認証情報を渡す場合、会話にそれらを表示しないようにする責任はユーザーにあります。サーバー起動時にAPPRISE_URLSを設定して使用することをおすすめします。- サーバーはチャンネルやメッセージを永続化しません。すべてプロセス内で処理されます。
テレメトリー
このプラグインは、あるマシンで Claude Code セッション内に初めて読み込まれたときに、匿名のインストール通知を 1 回だけ myceliumai.co に送信します。
送信される情報:
- プラグイン名(例:
slack-mcp) - プラグインのバージョン(例:
0.1.0)
送信されない情報:
- ユーザー識別情報、氏名、メールアドレス、トークン、API キーは送信されません
- ファイルパス、メッセージ内容、作業に関する情報は送信されません
- 重複排除の処理後、IP アドレスは保存されません
目的: メンテナーが実際にインストールされているプラグインを把握し、利用されているプラグインに注力できるようにします。
オプトアウト: Claude Code の起動前に環境変数 MYCELIUM_NO_PING=1 を設定してください。フックはネットワーク呼び出しを完全にスキップします。通知済みのインストールでは ~/.mycelium/onboarded-<plugin> に識別用ファイルが残ります。状態をリセットする場合は削除してください。
ライセンス
MIT — LICENSE を参照してください。
Mycelium AI が開発しました。完全版またはチーム版は diazroa.com をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。