基于 Cloudflare Workers 的 WhatsApp MCP 工具实现与工程细节
Show HN: WhatsApp MCP running free on Cloudflare
该项目展示了一个运行在用户自有 Cloudflare 账户中的小型服务器,允许 AI Agent 通过 MCP 协议读取和搜索个人 WhatsApp 消息。该方案利用 Baileys 库模拟 WhatsApp Web 协议,将手机作为唯一真理源,服务器仅在每日同步或收到请求时连接并拉取队列消息,随后断开连接。所有消息数据存储在 Cloudflare Durable Object 内的 SQLite 数据库中,确保数据不出本地环境,且明确禁止发送功能以符合安全边界。
技术实现上,该工具解决了在 serverless 环境下运行依赖 Node.js 套接字和 Rust 桥接的 Baileys 库的难题,通过 ws-shim、vendor-bridge.mjs 和 polyfills.ts 等 shim 层适配 workerd 运行时。部署需使用 Cloudflare Workers Paid 计划以支持导入大量历史消息时的 CPU 计算需求。系统设计了独特的联系人命名机制,由 Agent 调用外部通讯录工具(如 Google Contacts)匹配未命名聊天号码,而非服务器直接接入第三方服务,从而避免复杂的 OAuth 授权流程。此外,代码详细处理了群组消息发送者解析、编辑删除标记、以及 Durable Object 的会话保持与清理逻辑。
事实层面,该工具目前仅支持单账号部署,每次链接仅导入一次历史消息,后续需重新链接才能补充缺失内容;媒体文件仅显示标签不转录。推断来看,这种架构为开发者提供了低成本、高隐私的私有化 Agent 记忆层方案,特别适合需要深度整合即时通讯数据的场景。猜测部分,由于使用了非官方协议,长期稳定性取决于 WhatsApp Web 协议的变更频率,且存在违反 WhatsApp 服务条款的理论风险,尽管作者评估实际风险较低。
来源:Hacker News · AI · github.com