关于 Claude MCP Approval Server
Claude MCP Approval Server 通过 WhatsApp 在执行敏感工具操作前请求批准,面向使用 Claude Code 的用户。它基于 FastMCP 和 Twilio,并记录审批请求,且请求会在 5 分钟后过期。
主要功能
- 01通过 WhatsApp 请求工具操作批准
- 02提供快速批准或拒绝按钮
- 03请求 5 分钟后自动过期
- 04仅接受配置号码的回复
- 05使用 SQLite 保存审批记录
适用场景
- 01远程审核 Claude Code 的命令执行
- 02在执行敏感工具操作前征求同意
MCP 相关
该 MCP 服务提供 permissions__approve 工具,供 Claude 在执行工具操作前调用。它将审批请求发送到 WhatsApp,并根据回复决定是否继续。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Claude MCP Approval Server

一个 Model Context Protocol (MCP) 服务,会在执行可能敏感的命令前,通过 WhatsApp 发送审批提示词。使用 FastMCP 和 Twilio 构建。
功能
- 🔐 权限提示词:拦截工具执行,并通过 WhatsApp 请求审批
- 📱 WhatsApp 集成:使用 Twilio 发送带有快速回复按钮的审批请求
- ⚡ FastMCP:基于 FastMCP 构建,可轻松与 Claude 集成
- 🎯 智能格式化:以易读的方式格式化命令和原因
- ⏱️ 自动过期:出于安全考虑,请求会在 5 分钟后过期
- 💾 数据库跟踪:使用 SQLite 数据库跟踪审批请求
设置说明
1. 安装依赖项
uv install
2. 设置 Twilio 帐户
- 注册 Twilio,网址为 https://www.twilio.com
- 试用 WhatsApp 消息功能——访问 https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn,并按照设置指南操作:
- 向 Twilio 号码发送消息,加入 WhatsApp 沙盒
- 测试从你的设备发送和接收消息
- 记下你的沙盒 WhatsApp 号码(例如,
whatsapp:+14155238886)
3. 获取 Twilio 凭据
- 从 Twilio Console 仪表板获取你的 Account SID
- 在 https://console.twilio.com/us1/account/keys-credentials/api-keys 生成 Auth Token
- 点击“Create API Key”
- 记下 SID 和 Secret(即你的 Auth Token)
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 沙盒的实际电话号码。审批请求将发送到此号码。
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
- 返回 Try WhatsApp 页面:https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn
- 点击 Sandbox Settings
- 将两个 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
- When a message comes in:
8. 启动 Approval Server
重要:运行 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 尝试执行命令时,你会收到一条 WhatsApp 消息,其中包含 ✅ Approve 和 ❌ Deny 按钮。点击按钮,即可在世界任何地方回复!
重要注意事项
⚠️ 网络访问:-p(提示词)模式无法访问网络
⚠️ 交互模式:非交互模式(不带 -p)不会使用 --permission-prompt-tool
MCP 配置
MCP 配置位于 mcp-servers.json 中。
如果使用其他端口,请将 8000 替换为你的 SERVER_PORT。
工作原理
- 工具拦截:当 Claude 尝试执行工具时,会先调用
permissions__approve函数 - WhatsApp 通知:审批请求会发送到你的 WhatsApp,并附上格式化的命令详情
- 用户响应:你可以使用快速回复按钮批准或拒绝
- 执行:根据你的响应,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 消息格式或按钮:
- 编辑
template_config.json - 运行
python setup_template.py创建新模板 - 脚本会使用新的 SID 更新你的
.env文件
安全性与功能
- ⏱️ 自动过期:请求会在 5 分钟后过期
- 🔒 手机号码验证:仅接受来自你已配置的手机号码的回复
- 📊 审计记录:数据库会存储请求历史以供追踪
- 🔐 端到端加密:WhatsApp 消息使用端到端加密
- 🌍 全球访问:可通过 WhatsApp 随时随地批准或拒绝请求
致谢
https://github.com/mmarcen/test_permission-prompt-tool 提供了一个使用 MCP 服务和权限提示工具的可用示例。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。