返回市场
克劳德代码WhatsApp审批服务器

克劳德代码WhatsApp审批服务器

作者:adstastic8 星标更新:2025-05-30

项目介绍

Claude MCP 审批服务器

Claude MCP 审批服务器演示

这是一个模型上下文协议(MCP)服务器,在执行潜在敏感命令之前通过WhatsApp提供审批提示。该服务器基于FastMCP和Twilio构建。

功能

  • 🔐 权限提示:拦截工具执行并请求通过WhatsApp进行审批
  • 📱 WhatsApp集成:使用Twilio发送带有快速回复按钮的审批请求
  • FastMCP:基于FastMCP构建,便于与Claude集成
  • 🎯 智能格式化:以可读方式格式化命令和原因
  • ⏱️ 自动过期:为了安全起见,请求在5分钟后过期
  • 💾 数据库跟踪:使用SQLite数据库跟踪审批请求

设置说明

1. 安装依赖

uv install

2. 设置Twilio账户

  1. https://www.twilio.com 注册Twilio账户
  2. 尝试WhatsApp消息 - 前往 https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn 并按照设置指南操作:
    • 发送消息到Twilio号码加入WhatsApp沙盒
    • 测试从设备发送/接收消息
    • 记录您的沙盒WhatsApp号码(例如,whatsapp:+14155238886

3. 获取Twilio凭证

  1. 从Twilio控制台仪表板获取您的账户SID
  2. https://console.twilio.com/us1/account/keys-credentials/api-keys 生成一个认证令牌
    • 点击“创建API密钥”
    • 记录SIDSecret(即您的认证令牌)

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  # 您的沙盒号码
APPROVAL_PHONE=+1234567890  # 您的电话号码(不带whatsapp:前缀)
SERVER_PORT=8000  # 可选:服务器端口(默认为8000)

重要:用您实际用于加入WhatsApp沙盒的电话号码替换+1234567890。这是审批请求将发送到的地方。

5. 创建WhatsApp模板

python setup_template.py

这会自动创建Twilio模板,并更新您的.env文件中的模板SID。

6. 暴露服务器

使用ngrokTailscale暴露您的本地服务器:

选项A:ngrok

ngrok http 8000  # 如果端口不同,请替换8000

选项B:Tailscale

tailscale funnel --bg 8000  # 如果端口不同,请替换8000

记录您的公共URL(例如,https://abc123.ngrok.iohttps://hostname.tail12345.ts.net

7. 配置Twilio Webhook

  1. 返回到尝试WhatsApp页面:https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn
  2. 点击沙盒设置
  3. 两个Webhook URL都设置为:https://your-public-url/twilio-webhook
    • 当收到消息时https://your-public-url/twilio-webhook
    • 状态回调URLhttps://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 "您的提示在这里"

10. 从任何地方批准/拒绝!🎉

当Claude尝试执行命令时,您将在WhatsApp上收到带有**✅ 批准❌ 拒绝**按钮的消息。您可以从世界任何地方响应。

重要注意事项

⚠️ 网络访问-p(提示)模式没有网络访问 ⚠️ 交互模式:非交互模式(无-p)不会使用--permission-prompt-tool

MCP配置

MCP配置位于mcp-servers.json中。 如果使用不同的端口,请将8010替换为您自己的SERVER_PORT

工作原理

  1. 工具拦截:当Claude尝试执行工具时,首先调用permissions__approve函数
  2. WhatsApp通知:向您的WhatsApp发送带有格式化命令详情的审批请求
  3. 用户响应:您可以使用快速回复按钮批准或拒绝
  4. 执行:根据您的响应,Claude要么继续执行,要么停止

消息格式

Bash命令:

🔔 审批请求

执行命令:`ls -la /etc`
*原因*:列出系统配置文件

*请求ID*:abc123

⏱️ 5分钟内过期

其他工具:

🔔 审批请求

*工具*:WebFetch
  • url: https://example.com
  • 提示:提取标题

*请求ID*:abc123

⏱️ 5分钟内过期

自定义模板

要修改WhatsApp消息格式或按钮:

  1. 编辑template_config.json
  2. 运行python setup_template.py创建新模板
  3. 脚本将更新您的.env文件中的新SID

安全与特性

  • ⏱️ 自动过期:请求在5分钟后过期
  • 🔒 电话验证:仅接受来自您配置的电话号码的响应
  • 📊 审计追踪:数据库存储请求历史以便跟踪
  • 🔐 端到端加密:WhatsApp消息使用端到端加密
  • 🌍 全球访问:从任何地方使用WhatsApp批准/拒绝

致谢

https://github.com/mmarcen/test_permission-prompt-tool 提供了一个使用具有权限提示工具的MCP服务器的工作示例。