mcpField
G
Guarded WhatsApp

Guarded WhatsApp

ローカル
github.com/peter-tnc-453コミュニケーション017 週間前に更新

Guarded WhatsApp について

Guarded WhatsAppは、AIエージェントによるWhatsAppのメッセージやファイル送信に制御を設けるMCPサーバーです。宛先許可リスト、機密情報スキャン、ファイル検証、レート制限、確認、追記専用ログを備えますが、既定の非公式トランスポートには利用規約違反や番号停止のリスクがあります。

主な機能

  1. 01宛先許可リストによる送信制限
  2. 02テキストやキャプションの機密情報スキャン
  3. 03ファイル形式、サイズ、名前の検証
  4. 04分単位・時間単位の送信レート制限
  5. 05プレビュー確認と送信試行の記録

活用シーン

  1. 01エージェントの送信先を許可済み番号やグループに限定
  2. 02送信前にメッセージ内のキーや個人情報を確認
  3. 03ファイル送信にプレビュー確認を要求
  4. 04送信・ブロック・失敗の監査記録を確認

MCP 対応

宛先の照会、送信プレビュー、メッセージやファイルの送信、監査ログの検索ツールをMCPクライアントに提供し、送信前に設定済みの検査を適用します。READMEによると、既定のwhatsmeowベースの非公式トランスポートはWhatsAppの利用規約に違反し、番号停止につながる可能性があります。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"peter-tnc-453-guarded-whatsapp": {
"command": "uvx",
"args": [
"guarded-whatsapp-mcp"
]
}
}
}
起動コマンドuvx guarded-whatsapp-mcp

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

パッケージ
pypiguarded-whatsapp-mcp0.1.0

ツール

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

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

詳細

guarded-whatsapp-mcp

guarded-whatsapp-mcp

AI エージェントが WhatsApp を安全に管理・自動化できます。

License: MIT Python 3.10+ MCP server status: alpha PRs welcome

AI エージェント(または任意の MCP クライアント)が WhatsApp のメッセージやファイルを送信できる MCP サーバーです。ただし、すべての送信は、管理者が制御するセキュリティゲートを通過する必要があります。セキュリティゲートには、送信先の許可リスト、シークレットスキャン、ファイル検証、レート制限、確認ゲート、追記専用の監査ログが含まれます。

ほとんどの WhatsApp ブリッジは、記録を残さずに、どこへでも何でも送信します。人間が 送信 をクリックするのであれば問題ありません。しかし、自律型エージェントには適しません。guarded-whatsapp-mcp はガバナンスレイヤーとして、エージェントによる WhatsApp の利用を、安心して任せられるほど安全にします。

これは Slack の代替ではありません。 チャンネルもスレッドもワークスペース UI もありません。すでに利用している WhatsApp を安全に自動化します。

動作を確認する

正常な送信は許可され、不適切な送信はブロックされ、すべて記録されます
正常な送信は許可され、漏えいしたキーと許可リストにない番号はブロックされ、ファイルにはプレビューが必要です。すべて記録されます。

仕組み

アーキテクチャ:すべての送信はガードを通過します

⚠️ まずお読みください — 非公式の通信方式と WhatsApp の利用規約

このサーバーは通信方式へのアクセスを管理します。デフォルトでは、その通信方式は、WhatsApp Web の非公開プロトコルを使用する非公式の whatsmeow ベースのブリッジ(例:whatsapp-mcp)です。

  • 非公式クライアントはWhatsApp の利用規約に違反し、電話番号が利用停止になる可能性があります。リバースエンジニアリングされたクライアントでは、これを避けられません。
  • サブの番号、または重要ではない番号を使用してください。 メインの番号や、業務に不可欠な番号は絶対に使用しないでください。
  • 本番環境での顧客向けメッセージ送信には使用しないでください。公式の WhatsApp Business Cloud API をご利用ください。公式の Cloud-API バックエンドはロードマップに含まれています。ガードレイヤーは、どちらの通信方式にも対応できるよう設計されています。

ここで提供するガードレールは、送信先の誤り、シークレットの漏えい、スパムなどの運用上のリスクを軽減します。ただし、基盤となるブリッジに関する利用規約上のリスクは変わりません。この点をあえて強調しています。リスクを十分に理解したうえで選択できるようにするためです。


チームで利用する理由

ガードなしguarded-whatsapp-mcp を利用
エージェントが生成した任意の番号にメッセージを送信できるフェイルクローズ方式の許可リストにより、未登録の相手への送信を拒否
漏えいした API キーがメッセージに含まれたまま送信される送信前にシークレットスキャンでブロック
暴走したループがチームに 200 回スパムを送信するレート制限で上限を設定
ファイル名が Untitled になり、パスも未検証ASCII セーフなファイル名と種類・サイズのチェック
エージェントが何を送信したのかわからないすべての試行を記録する追記専用の監査ログ
誤送信確認ゲートにより、リスクのある送信にはプレビューが必須

セキュリティ制御

制御機能
宛先許可リストフェイルクローズ方式です。allow_unlisted: false の場合、設定に登録された人またはグループにのみメッセージを送信できます。生の電話番号であっても拒否されます。
シークレット/PII スキャンテキストとキャプションをスキャンし、API キー、秘密鍵、クラウド/Slack/GitHub/OpenAI のトークン、JWT、クレジットカード番号(Luhn アルゴリズム)、国民識別番号を検出します。block または warn を指定できます。
ファイル検証拡張子の許可リストとサイズ上限を適用します。ファイル名は ASCII 文字にサニタイズされ(Untitled やパストラバーサルを防止)、送信前に安全な名前に変更してコピーされます。
レート制限スライディングウィンドウ(分単位および時間単位)により、暴走するループを防ぎます。
確認ゲートリスクのある送信(未登録の宛先/ファイル/すべて)には、wa_preview から取得した confirm_token が必要です。誤送信ではなく、プレビュー済みであることを証明します。
監査ログすべての試行(送信/ブロック/失敗)を ~/.guarded-whatsapp-mcp/audit.jsonl に追記します。本文はプレビューとハッシュのみ保存されます。

ツール

ツールゲート対象?用途
wa_list_recipients読み取り専用許可リストを表示します(電話番号はマスクされます)。
wa_preview読み取り専用送信のドライランを実行します。すべてのチェックを行い、判定と、必要な場合は confirm_token を返します。送信は行いません。
wa_send_message送信完全なゲートを通して、許可リストに登録された宛先にテキストを送信します。
wa_send_file送信ファイルを送信します(ASCII セーフな名前に自動変更し、種類とサイズを確認し、キャプションをスキャンします)。
wa_audit_tail読み取り専用最近の監査記録を表示します。

クイックスタート

git clone https://github.com/peter-tnc-453/guarded-whatsapp-mcp
cd guarded-whatsapp-mcp

uv venv --python 3.11 && source .venv/bin/activate   # Python 3.10+
uv pip install -e .

cp config/allowlist.example.yaml config/allowlist.yaml   # edit your allowlist (git-ignored)

# a WhatsApp bridge exposing POST /api/send must be running (the authenticated session).
# whatsmeow bridge: https://github.com/lharries/whatsapp-mcp  (first run = QR scan)

python -m wa_guard          # run the MCP server (stdio)
Claude Code/任意の MCP クライアントへの登録
{
  "mcpServers": {
    "guarded-whatsapp-mcp": {
      "command": "/ABSOLUTE/PATH/guarded-whatsapp-mcp/.venv/bin/python",
      "args": ["-m", "wa_guard"],
      "env": {
        "PYTHONPATH": "/ABSOLUTE/PATH/guarded-whatsapp-mcp/src",
        "WA_GUARD_CONFIG": "/ABSOLUTE/PATH/guarded-whatsapp-mcp/config/allowlist.yaml"
      }
    }
  }
}

例 — 安全なエージェントのフロー

// 1) The agent previews first (read-only, sends nothing)
wa_preview(recipient="Alex", file_path="report.pdf")
// → { ok:false, needs_confirm:true, confirm_token:"a1b2c3d4e5",
//     display_filename:"report.pdf", recipient:{ name:"Alex", allowlisted:true } }

// 2) It sends, passing the token back to prove the preview happened
wa_send_file(recipient="Alex", file_path="report.pdf", confirm_token="a1b2c3d4e5")
// → { sent:true, ... }   (and one line is appended to the audit log)

// A blocked attempt is explicit and recorded:
wa_send_message(recipient="+66999999999", message="hi")
// → { sent:false, blocked_reason:"recipient is not allowlisted and allow_unlisted=false" }

設定

config/allowlist.example.yaml を参照してください。主な設定項目は次のとおりです。 allow_unlisted(フェイルクローズの切り替え)、require_confirm_for、rate_limit、files、 secrets.on_detect、および recipients 許可リストです。変更内容は呼び出しごとにホットリロードされます。

ロードマップ

  • バックエンドのプラグイン対応 — 非公式ブリッジ、または公式の WhatsApp Business Cloud API(準拠ルート)の前段で、同じガードレイヤーを使用します。
  • 受信メッセージのルーティング — エージェントに受信メッセージを提示します(読み取り・分類・ルーティング)。
  • 同じゲートを通じた スケジュール送信/テンプレート送信。
  • 宛先ごとのポリシー(連絡先またはグループごとのレート制限/確認ルール)。

テスト

uv pip install pytest && PYTHONPATH=src python -m pytest -q   # 19 passing

コントリビューション

プルリクエストを歓迎します。CONTRIBUTING.md を参照してください。唯一のルールは、フェイルクローズの方針を維持することと、新しいチェックごとにテストを追加することです。

ライセンス

MIT — LICENSE を参照してください。セキュリティモデルと正直な制限事項については SECURITY.md を参照してください。

コメント

MCP は初めてですか?

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

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