
这是一个模型上下文协议(MCP)服务器,在执行潜在敏感命令之前通过WhatsApp提供审批提示。该服务器基于FastMCP和Twilio构建。
uv install
whatsapp:+14155238886)cp .env.example .env
编辑.env文件,填入您的凭证:
TWILIO_ACCOUNT_SID=your_account_sid_here
TWILIO_AUTH_TOKEN=your_auth_token_here
TWILIO_WHATSAPP_FROM=whatsapp:+14155238886 # 您的沙盒号码
APPROVAL_PHONE=+1234567890 # 您的电话号码(不带whatsapp:前缀)
SERVER_PORT=8000 # 可选:服务器端口(默认为8000)
重要:用您实际用于加入WhatsApp沙盒的电话号码替换+1234567890。这是审批请求将发送到的地方。
python setup_template.py
这会自动创建Twilio模板,并更新您的.env文件中的模板SID。
使用ngrok或Tailscale暴露您的本地服务器:
选项A:ngrok
ngrok http 8000 # 如果端口不同,请替换8000
选项B:Tailscale
tailscale funnel --bg 8000 # 如果端口不同,请替换8000
记录您的公共URL(例如,https://abc123.ngrok.io或https://hostname.tail12345.ts.net)
https://your-public-url/twilio-webhook
https://your-public-url/twilio-webhookhttps://your-public-url/twilio-webhook重要:在运行Claude之前启动服务器!
uv run approval_server.py
服务器应显示:
claude --mcp-config mcp-servers.json \
--mcp-debug \
--permission-prompt-tool mcp__approval-server__permissions__approve \
--verbose \
--debug \
--output-format stream-json \
-p "您的提示在这里"
当Claude尝试执行命令时,您将在WhatsApp上收到带有**✅ 批准和❌ 拒绝**按钮的消息。您可以从世界任何地方响应。
⚠️ 网络访问:-p(提示)模式没有网络访问
⚠️ 交互模式:非交互模式(无-p)不会使用--permission-prompt-tool
MCP配置位于mcp-servers.json中。
如果使用不同的端口,请将8010替换为您自己的SERVER_PORT。
permissions__approve函数Bash命令:
🔔 审批请求
执行命令:`ls -la /etc`
*原因*:列出系统配置文件
*请求ID*:abc123
⏱️ 5分钟内过期
其他工具:
🔔 审批请求
*工具*:WebFetch
• url: https://example.com
• 提示:提取标题
*请求ID*:abc123
⏱️ 5分钟内过期
要修改WhatsApp消息格式或按钮:
template_config.jsonpython setup_template.py创建新模板.env文件中的新SIDhttps://github.com/mmarcen/test_permission-prompt-tool 提供了一个使用具有权限提示工具的MCP服务器的工作示例。