mcpField
C
Claude MCP Approval Server

Claude MCP Approval Server

ローカル
github.com/adstasticAI・エージェント1474 週間前に更新

Claude MCP Approval Server について

Claude MCP Approval Serverは、Claude Codeの利用者向けに、機密性の高いツール操作の実行前にWhatsAppで承認を求めます。FastMCPとTwilioを使用し、リクエストを記録して5分後に期限切れにします。

主な機能

  1. 01WhatsAppでツール操作の承認を依頼
  2. 02承認・拒否のクイック返信ボタン
  3. 03リクエストは5分後に期限切れ
  4. 04設定した電話番号からの返信のみ受付
  5. 05SQLiteで承認履歴を記録

活用シーン

  1. 01Claude Codeのコマンドを遠隔で確認
  2. 02機密性の高いツール操作の前に同意を取得

MCP 対応

このMCPサーバーは、ツール操作の実行前にClaudeが呼び出すpermissions__approveツールを提供します。承認リクエストをWhatsAppに送り、返信に応じて処理の続行可否を決めます。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

Claude MCP Approval Server

Claude MCP 承認サーバーのデモ

機密性の高い可能性があるコマンドを実行する前に、WhatsApp 経由で承認プロンプトを送信する Model Context Protocol(MCP)サーバーです。FastMCP と Twilio を使用して構築されています。

機能

  • 🔐 権限プロンプト:ツールの実行をインターセプトし、WhatsApp 経由で承認を要求します
  • 📱 WhatsApp 連携:Twilio を使用して、クイック返信ボタン付きの承認リクエストを送信します
  • ⚡ FastMCP:Claude と簡単に連携できるよう、FastMCP 上に構築されています
  • 🎯 スマートな書式設定:コマンドと理由を読みやすく整形します
  • ⏱️ 自動有効期限:セキュリティのため、リクエストは 5 分後に有効期限が切れます
  • 💾 データベースによる追跡:承認リクエストを追跡する SQLite データベース

セットアップ手順

1. 依存関係をインストールする
uv install
2. Twilio アカウントをセットアップする
  1. Twilio にサインアップする:https://www.twilio.com
  2. WhatsApp メッセージを試す:https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn にアクセスし、セットアップガイドに従って次の操作を行います:
    • Twilio の番号にメッセージを送信して WhatsApp Sandbox に参加する
    • お使いのデバイスからメッセージの送受信をテストする
    • Sandbox の WhatsApp 番号を控える(例:whatsapp:+14155238886)
3. Twilio の認証情報を取得する
  1. Twilio Console のダッシュボードからアカウント SIDを取得する
  2. https://console.twilio.com/us1/account/keys-credentials/api-keys で認証トークンを生成する
    • 「Create API Key」をクリックする
    • SIDとシークレット(これが認証トークンです)を控える
4. 環境を設定する
cp .env.example .env

認証情報を .env に記入します:

TWILIO_ACCOUNT_SID=your_account_sid_here
TWILIO_AUTH_TOKEN=your_auth_token_here  
TWILIO_WHATSAPP_FROM=whatsapp:+14155238886  # Your sandbox number
APPROVAL_PHONE=+1234567890  # YOUR phone number (without whatsapp: prefix)
SERVER_PORT=8000  # Optional: Server port (defaults to 8000)

重要:+1234567890 を、WhatsApp Sandbox への参加に使用した実際の電話番号に置き換えてください。承認リクエストはこの番号に送信されます。

5. WhatsApp テンプレートを作成する
python setup_template.py

これにより Twilio テンプレートが自動的に作成され、テンプレート SID で .env ファイルが更新されます。

6. サーバーを公開する

ngrok または Tailscale を使用して、ローカルサーバーを公開します:

オプション A:ngrok

ngrok http 8000  # Replace 8000 with your SERVER_PORT if different

オプション B:Tailscale

tailscale funnel --bg 8000  # Replace 8000 with your SERVER_PORT if different

公開 URL を控えてください(例:https://abc123.ngrok.io または https://hostname.tail12345.ts.net)

7. Twilio Webhook を設定する
  1. Try WhatsApp ページに戻ります:https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn
  2. Sandbox Settings をクリックします
  3. 両方の Webhook URL を次のように設定します:https://your-public-url/twilio-webhook
    • When a message comes in:https://your-public-url/twilio-webhook
    • Status callback URL:https://your-public-url/twilio-webhook
8. 承認サーバーを起動する

重要:Claude を実行する前にサーバーを起動してください!

uv run  approval_server.py

サーバーには次の内容が表示されます:

  • ✅ Twilio が設定済み
  • 🌐 サーバーエンドポイントの一覧
  • Webhook URL の準備完了
9. 権限プロンプト付きで Claude を実行する
claude --mcp-config mcp-servers.json \
       --mcp-debug \
       --permission-prompt-tool mcp__approval-server__permissions__approve \
       --verbose \
       --debug \
       --output-format stream-json \
       -p "your prompt here"
10. どこからでも承認/拒否できます!🎉

Claude がコマンドを実行しようとすると、✅ Approve ボタンと ❌ Deny ボタンが付いた WhatsApp メッセージが届きます。世界中どこからでもタップして応答できます!

重要な注意事項

⚠️ ネットワークアクセス:-p(プロンプト)モードではネットワークにアクセスできません ⚠️ 対話モード:非対話モード(-p なし)では --permission-prompt-tool は使用されません

MCP の設定

MCP の設定は mcp-servers.json にあります。
別のポートを使用する場合は、8000 を SERVER_PORT に置き換えてください。

動作の仕組み

  1. ツールのインターセプト:Claude がツールを実行しようとすると、まず permissions__approve 関数が呼び出されます
  2. WhatsApp 通知:書式設定されたコマンドの詳細を含む承認リクエストが WhatsApp に送信されます
  3. ユーザーの応答:クイック返信ボタンを使って承認または拒否できます
  4. 実行:応答に応じて、Claude は続行するか処理を停止します

メッセージ形式

Bash コマンド:

🔔 Approval Request

Execute command: `ls -la /etc`
*Reason:* List system configuration files

*Request ID:* abc123

⏱️ Expires in 5 minutes

その他のツール:

🔔 Approval Request

*Tool:* WebFetch
  • url: https://example.com
  • prompt: Extract title

*Request ID:* abc123

⏱️ Expires in 5 minutes

テンプレートのカスタマイズ

WhatsApp のメッセージ形式やボタンを変更するには、次の手順に従います。

  1. template_config.json を編集します
  2. python setup_template.py を実行して、新しいテンプレートを作成します
  3. スクリプトによって、新しい SID が .env ファイルに反映されます

セキュリティと機能

  • ⏱️ 自動有効期限:リクエストは 5 分後に期限切れになります
  • 🔒 電話番号の確認:設定した電話番号からの応答のみ受け付けます
  • 📊 監査証跡:データベースに追跡用のリクエスト履歴が保存されます
  • 🔐 E2E 暗号化:WhatsApp のメッセージはエンドツーエンドで暗号化されます
  • 🌍 どこからでもアクセス可能:WhatsApp を使って、どこからでも承認または拒否できます

クレジット

権限確認プロンプトツールを使用して MCP サーバーを利用する実用的な例を提供してくれた https://github.com/mmarcen/test_permission-prompt-tool に感謝します。

コメント

MCP は初めてですか?

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

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