whatsapp-connect-mcp
whatsapp-connect-mcp
一个以单一静态 Go 二进制文件形式提供的 WhatsApp MCP 服务器。一次下载,一次 setup 命令,一次二维码扫描——然后任何 MCP 客户端(Claude Desktop、Claude Code、Cursor、Windsurf、Cline 等)都可以读取、搜索和发送 WhatsApp 消息,每次外发发送都受服务器强制执行的网关保护。
这使用的是非官方协议。在绑定你重视的号码之前,请先阅读此内容。
whatsapp-connect-mcp 通过 whatsmeow 与 WhatsApp 对话,方式与 WhatsApp Web 相同——而非官方 WhatsApp Business API。Meta 可以并且确实会封禁检测到在此协议上使用第三方客户端的号码,此类封禁被广泛报道为永久性的。下文描述的发送网关和速率限制器降低了该风险的行为部分(意外的批量发送、模型失控);它们无法触及另一半,即该客户端本身可被识别为第三方客户端。封禁风险 列出了公开证据实际显示的内容,并附有日期。绑定一个你愿意失去的号码,而不是你与银行或家人联系的唯一线路。
状态:预发布版。
安装(两分钟)
选择一种方式:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/idle-sync/whatsapp-connect-mcp/main/scripts/install.sh | sh# Windows (PowerShell)
irm https://raw.githubusercontent.com/idle-sync/whatsapp-connect-mcp/main/scripts/install.ps1 | iex# Anywhere with Node installed, no separate download step
npx whatsapp-connect-mcp setup
npx whatsapp-connect-mcp serve本身可以正常工作,但对于setup,建议使用上述安装脚本之一。setup会将运行中二进制文件的绝对路径注入到每个 MCP 客户端的配置中,而在npx下,该路径位于 npm 的包缓存中——清除该缓存后,setup写入的每个客户端配置都将指向一个已不存在的二进制文件。
以上每种方式都会下载适用于你操作系统/架构的发布二进制文件并运行 setup:它显示一个二维码供你从 WhatsApp 扫描(已链接设备 → 链接设备),然后检测已安装的 MCP 客户端,并提供将 whatsapp 服务器条目注入到你选择的任何客户端中。无需工具链,无需手动编辑 JSON。
setup 还会询问客户端如何连接。stdio(默认)让每个客户端启动自己的服务器进程——最简单,但一次只能连接一个客户端或会话,因为一个 serve 持有数据目录的独占锁。http 将所有选定的客户端指向一个共享的本地服务器(http://127.0.0.1:<port>,端口自选,默认 2178,Bearer 令牌认证),这样多个客户端和会话可以同时连接——代价是你需要自己使用 whatsapp-connect-mcp serve --http 127.0.0.1:<port> 启动该服务器,并且客户端只能在其运行时连接。
setup 可以随时重新运行——用于重新配对,或添加之后安装的客户端。
传递 --full-history 以向手机请求协议允许的尽可能多的历史记录,而不是默认的几个月。它仅在配对时生效,因此已配对的安装必须先执行 remove;setup 会提示这一点,而不是静默忽略该标志。手机仍然决定实际发送什么。
Related MCP server: WhatsApp Business API MCP Server
它的用途
十四个读取工具是核心产品;十个带网关的写入工具是便利性功能。实际上这意味着:
搜索你自己的历史记录。 WhatsApp 自己的搜索没有日期过滤器,并且显示匹配项时没有上下文。
search_messages加上get_message_context可以同时做到这两点。快速跟上进度。 让模型阅读你离开时群组积累的 400 条消息,并询问发生了什么。
读取你自己的附件。
download_media下载人们发送给你的发票、收据和截图,以便模型能实际读取它们。查找未处理事项。
get_last_interaction回答“谁给我发了消息但我从未回复?”起草回复。 模型撰写,发送网关让你确认,然后发送。
与其他内容一起搜索 WhatsApp。 当邮件、聊天或日历 MCP 服务器连接到同一客户端时,“这个客户有没有联系过我关于发票的事,以及在哪里?”就变成了一个查询,而不是三个独立的搜索。对于真正在 WhatsApp 中进行通信的人来说,这是运行它的理由。
不要用它做什么
不要在此之上构建支持机器人、外联工具或自动回复器。向从未主动联系你的人批量发送消息,是最常被报道导致号码被封禁的行为(参见封禁风险)——而这正是 Meta 销售 WhatsApp Business API 的用例。这是一个用于你自己消息的个人工具。将其用于客户,你将失去该号码。
它给你的 MCP 客户端提供什么
二十四个工具:十四个只读,十个带网关,如下所述。
读取 / 搜索(无网关)
工具 | 返回内容 |
| 聊天(1对1和群组),最新活动优先;可按名称和归档状态过滤。 |
| 按 JID 获取一个聊天。 |
| 聊天中的消息,最新优先,可选择时间范围——传递命名窗口( |
| 对消息正文进行全文搜索,可限定聊天范围或全局搜索。 |
| 一条目标消息前后紧邻的消息。 |
| 按姓名或电话号码子字符串搜索联系人。 |
| 涉及某个 JID 的最新消息。 |
| 群组成员的 JID,实时获取。 |
| 群组的主题、描述、所有者和管理员,实时获取。 |
| 账户已屏蔽的 JID,实时获取。 |
| 通话记录,最新优先,可选择过滤到单个通话对象,并使用与 |
| 将附件媒体下载到本地数据目录——单条消息、一批消息 ID,或一个时间窗口内的所有内容(与 |
| 游标之后的新消息,最旧优先——可选择阻塞等待最多 240 秒直到有新消息到达,以便代理能够对活动做出反应而无需重新读取聊天。默认排除自己的发送,除非要求包含。只读;做出反应仍需通过发送网关。 |
| 向手机请求聊天中已存储最旧消息之前的消息,扩大可读取的历史范围。可重复调用以逐页向前回溯。 |
| 以 MCP 工具形式运行诊断中描述的诊断程序。 |
这些工具能回溯多远的范围由配对手机决定,而非此服务器。 “搜索我的全部历史记录”可能实际意味着“搜索最近几个月”——参见限制。
发送(带网关——见下文)
工具 | 功能说明 |
| 发送文本消息,可选择引用已有消息。 |
| 从允许的目录发送图片、视频或文档,可附带说明文字。 |
| 从允许的目录发送 Ogg Opus( |
| 用表情符号对消息做出反应(空表情符号可移除之前的反应)。 |
| 在 WhatsApp 的编辑时间窗口内编辑您已发送消息的文本。 |
| 为所有人删除消息(您自己的消息始终可删;他人的消息仅限群组管理员操作)。 |
| 创建投票(一个问题和两个或更多选项);不支持读取投票结果。 |
| 将一条或多条消息标记为已读。 |
| 安排文本或媒体在未来的某个时间发送(最长 30 天;使用 |
| 列出待处理的定时发送,按时间从近到远排序。 |
| 取消一个待处理的定时发送——始终允许,因为它只会阻止一次发送。 |
| 屏蔽联系人;始终先草稿,从不自动提交(即使信任)。 |
| 解除屏蔽联系人;始终先草稿,从不自动提交(即使信任)。 |
每个来自 WhatsApp 数据的工具结果——消息、名称、联系人、说明文字——都包裹在显式的不可信数据横幅中。将其视为 MCP 客户端向您展示的数据,而不是模型应遵循的指令:通过 WhatsApp 到达的任何内容都不能指示您的助手该做什么。
发送门控
这是 verygoodplugins/whatsapp-mcp 所没有的部分。每个出站操作——文本、媒体、语音消息、反应、编辑、删除、投票、屏蔽、解除屏蔽或已读回执——都经过同一条路径,由服务器强制执行,而不是通过提示模型“要小心”:
先草稿。 对您尚未信任的收件人调用发送工具,不会实际发送任何内容。您会收到一个预览(收件人解析为名称 + JID,以及确切的出站内容)和一个
draft_token。确认提交。 使用该
draft_token重新发出相同的调用,即可发送。草稿在 5 分钟后过期;重新提交的内容有任何字节差异都会使令牌失效。有意识地信任。
whatsapp-connect-mcp trust --add <jid>将联系人或群组标记为受信任,这样向其发送时将在第一次调用时直接提交,而无需草稿。这是一个仅限 CLI 的开关——没有 MCP 工具可以授予信任,因此模型无法绕过草稿步骤。正在运行的serve进程在启动时读取信任列表一次,因此更改将在下次serve启动时生效,而不是立即生效。对于当前会话,有一个更轻量级的授权:whatsapp-connect-mcp trust --session --add <jid>仅在当前serve进程的生命周期内提升收件人——它立即生效,不会写入config.json,并在下次serve启动时自动清除。当您正在积极与一个人或群组进行对话草稿,并且已经手动确认了前几次发送时,请使用此选项;它减少了该收件人的草稿-确认往返次数,而无需授予任何永久权限。与持久信任一样,它也是仅限 CLI(没有 MCP 工具可以授予),并且屏蔽/解除屏蔽仍然会在每次调用时草稿。始终限速。 每次发送——无论是草稿、信任还是其他——都会从所有五个发送工具共享的一个速率限制器中消耗一个令牌。间隔时间有 5 秒的硬性下限,任何配置都不能低于此值。被限速的提交会使草稿保持有效;一旦限制解除,使用相同的令牌重试相同的调用即可。
mark_read 是草稿机制的一个例外:已读回执不是创作内容,因此它总是在第一次调用时发送(仍然受速率限制,仍然受门控)。
发送可以附加哪些文件
上述门控授权的是收件人。它没有说明发送命名的文件,因此仅凭它本身,被操纵的模型可以将此程序可读取的任何内容(SSH 密钥、密码存储)附加到您已经信任的收件人。
因此,出站文件被限制在允许的目录列表中。默认是一个专用的目录,在首次运行时创建:
操作系统 | 默认发件箱 |
Linux |
|
macOS |
|
Windows |
|
在发送文件之前将其移动到那里,或者通过在 config.json 中设置 media_roots 为绝对目录路径来扩大列表:
{ "media_roots": ["/home/you/Pictures", "/home/you/Documents"] }路径在检查之前会被解析,因此允许目录内的符号链接会根据其实际指向的位置来判断,而不是其所在位置。命名列表外文件的发送将在第一次调用时被拒绝——在生成草稿和消耗速率限制令牌之前——并且拒绝信息不会包含路径,就像此服务器返回的所有其他错误一样。
与 verygoodplugins/whatsapp-mcp 的比较
当前最知名的替代方案虽然可用,但采用起来很麻烦,并且没有发送安全性:
verygoodplugins/whatsapp-mcp | whatsapp-connect-mcp | |
所需运行时 | Go 和 Python,两个进程 | 单个静态二进制文件,零依赖 |
安装 | 克隆仓库,手动运行桥接,手动编辑客户端配置,重启 | 一行安装 → |
配对 | 在您自己保持打开的终端中显示二维码 | 向导管理的二维码配对;会话由二进制文件监督 |
发送安全性 | 无——模型可以立即发送 | 草稿优先的发送门控 + 速率限制器 |
提示注入防御 | 无 | 每个 WhatsApp 来源的结果上都有不可信数据横幅 |
诊断 | 无 |
|
分发方式 | 仅限 Git 克隆 | GitHub Releases、安装脚本、MCP Registry、MCPB 包、npm 包装器 |
封号风险
Meta 通过两种独立的方式检测第三方客户端,其中只有一种与行为有关。
1. 客户端可被识别。 链接设备在注册时会宣告自身。whatsmeow 的默认设置会宣告一个操作系统字符串为 whatsmeow,并带有未知的平台类型,仅通过读取配对负载即可将其与官方客户端区分开来。本项目覆盖了这一点,并宣告为 Chrome 浏览器身份(internal/bridge/bridge.go),这也是您的手机在“已链接设备”下为此设备显示的内容。
不要将该覆盖当作修复。它只击破了最简陋的版本检查,而未触及根本问题。serve 和 setup 确实会在连接前刷新报告的 WhatsApp Web 版本,因此版本及其派生的构建哈希会追踪真实的发布版,而非构建时打包的任意版本——但用户代理仍然携带 whatsmeow 的占位运营商和设备制造商字段,且会话在传输层的行为与 whatsmeow 一致,而非 Chrome。使用 whatsapp-web.js(它驱动真实的 Chrome 浏览器并携带真实的指纹)的用户也收到了下文描述的相同警告,这表明所声明的身份从来不是决定性信号。更改它对于已配对的会话也毫无作用:身份信息在配对时发送,因此现有会话会保留其注册时的身份,直到您重新配对。
2. 行为。 报告的触发因素,大致按出现频率排列:向从未主动联系过您的人发送消息、发送速度过高、配对后不久即高频发送、重复发送相同消息、自动状态更新以及频繁重连循环。
令人不安之处在于,公开证据指向 (1) 是主导因素。在 whatsmeow#810 —— 2025 年 5 月的“您的账户可能存在风险”浪潮(2026 年 7 月关闭并标记为 not planned)—— 用户报告警告出现在从未发送过消息、仅保持连接的空闲账户上,以及已断开连接数周的账户上。使用完全不同的实现 whatsapp-web.js 的用户也收到了该警告。同一条讨论中的 Baileys 维护者持相反观点,称其“主要是行为问题”。无人确定究竟是哪种原因,该讨论在未给出答案的情况下被关闭。
因此:此处的发送门控和速率限制是针对 (2) 的实际缓解措施,但对 (1) 毫无作用。根据现有证据,行为良好影响的是轮到您的时间,而非是否轮到您。
配对前值得阅读的报道,附日期供您判断其时效性:
报道 | 打开时间 | 最后活动 |
whatsmeow#810 —— “账户可能存在风险”浪潮 | 2025 年 5 月 | 2026 年 7 月(已关闭) |
Baileys#2309 —— 自动化状态更新后永久封禁 | 2026 年 1 月 | 2026 年 5 月(未关闭) |
Baileys#1869 —— 一周内五次暂停,涉及运行三年以上的实例 | 2025 年 10 月 | 2026 年 5 月 |
将供应商博客中的封禁统计数据(如“68% 的企业在 12 个月内被封禁”、“滚动 30 天无回复阈值”)视为付费 Business API 转售商的无源营销信息。没有任何一手来源支持这些数据,因此这两个数字均不出现在本文档中。
限制(明确说明)
您的号码可能被封禁,且本项目无法阻止。 请参阅封禁风险。这是最重要的限制。
历史深度由手机决定。 与所有 WhatsApp Web 客户端一样,配对的手机控制同步到本服务器的聊天历史量。此处没有任何设置可以获取超出手机提供范围的历史。
setup --full-history请求协议允许的最大历史量,而非默认的几个月,但这只是一个请求,而非设置——且仅在配对时生效。对于已配对的安装,fetch_older_messages工具会在不重新配对的情况下向手机请求更多单个聊天的历史。两者都是请求,手机可以回应较少的内容或不回应;也无法恢复手机已删除的消息。语音消息需要 Ogg Opus 输入。
send_voice_note不执行转码。如果您的源音频不是.ogg/Opus 格式,请先转换(例如ffmpeg -i in.mp3 -c:a libopus out.ogg)。不支持呼出电话。 通话历史可读,但不支持发起呼叫。
每个安装只支持一个配对号码。 v1 版本不支持多账户。
whatsmeow 跟踪 WhatsApp 协议变更,而非相反。WhatsApp 端的变更可能中断配对或发送,直到 whatsmeow(以及本项目的后续更新)赶上。
数据与隐私
所有内容——会话密钥、消息、媒体、联系人、通话记录——均存储在此程序数据目录下的本地 SQLite 数据库中。本服务器不会将您的任何消息、联系人或媒体数据发送到任何地方。
除了 WhatsApp 连接本身之外,仅存在两个出站网络调用。两者均为尽力而为,均在 2 秒后超时,且不携带消息内容、JID、电话号码或任何会话凭据:
doctor/check向 GitHub 的公开发布 API 查询此程序是否存在更新版本。当 GitHub 不可达时,它绝不会阻塞或导致检查失败。serve和setup在连接前从web.whatsapp.com获取当前的 WhatsApp Web 客户端版本,以便此客户端报告的版本追踪真实的发布版,而非构建时打包的任意版本。失败会被报告并忽略;过时的版本仍能连接。
数据目录:
操作系统 | 路径 |
Linux |
|
macOS |
|
Windows |
|
诊断
whatsapp-connect-mcp check运行与 doctor MCP 工具相同的检查:会话配对/连接状态、事件流活性(已连接但超过 30 分钟未收到任何 WhatsApp 事件的会话会收到警告——即套接字看似健康但数据摄取已静默停滞的状态)、消息数据库完整性、已注入的 MCP 客户端配置、数据目录权限(POSIX)以及上述版本检查。每项发现均经过清理——状态行中绝不出现 JID、电话号码、消息内容或文件系统路径;损坏的客户端配置通过客户端名称标识,而非其在磁盘上的路径。
其他命令
whatsapp-connect-mcp setup [--full-history] # pair (again) and configure MCP clients
whatsapp-connect-mcp status # pairing state, row counts, injected clients
whatsapp-connect-mcp clients [--remove] # list or uninject MCP client entries
whatsapp-connect-mcp trust [--session] [--add jid|--remove jid|--list]
whatsapp-connect-mcp serve [--http addr] # run the MCP server directly (stdio by default)
--http需要 Bearer 令牌和回环 Host。 首次使用时,它会生成一个 256 位令牌,写入数据目录中的.http-token文件(仅限所有者),并打印一次——请将其放入客户端的Authorization: Bearer <token>标头中。每个请求还必须指向回环 Host(localhost、127.0.0.1、[::1]),这可通过将 DNS 重新绑定到回环地址来阻止网页通过浏览器访问服务器。仍需绑定127.0.0.1:令牌可防止端口被访问,但绑定公共接口会将其暴露在整个网络中;如果必须如此,请在前端设置自己的访问控制(反向代理、VPN、防火墙规则)。
卸载 / 重置
whatsapp-connect-mcp remove删除本地 WhatsApp 会话(在本地解除本服务器与它的配对——再次运行setup需要重新配对)。此操作仅限本地:它不会通知 WhatsApp 服务器,因此您的手机将在“已链接的设备”下继续显示此设备已链接,直到您自行在手机上取消链接。执行任何操作前会要求输入yes确认。whatsapp-connect-mcp reset执行remove的所有操作,外加删除已存储的消息、媒体和设置——完全擦除至全新安装状态。同样要求输入yes确认。whatsapp-connect-mcp clients --remove从已添加的任意 MCP 客户端配置中移除本程序的条目,不影响已配对的会话。要移除二进制文件本身,请从安装程序放置的位置(
~/.local/bin、%LOCALAPPDATA%\Programs\whatsapp-connect-mcp或npx缓存的位置)删除它,并删除上述数据目录。
许可证
MIT — 请参阅 LICENSE。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-quality-maintenanceEnables WhatsApp automation through MCP protocol, allowing users to manage sessions, send messages, handle groups/communities, and access contacts through natural language interactions with AI agents.11
- Alicense-qualityDmaintenanceEnables sending messages, managing templates, uploading media, and configuring webhooks for WhatsApp Business via the MCP protocol.105MIT
- Alicense-qualityBmaintenanceEnables MCP clients to list, read, search, and send WhatsApp messages via a persistent WebSocket connection with local SQLite storage.58AGPL 3.0
- Alicense-qualityCmaintenanceIntegrates WhatsApp with AI agents, enabling message sending, chat search, media sharing, approval workflows, and activity summaries via any MCP client.1Apache 2.0
Related MCP Connectors
Give AI agents real phone numbers, messages, and voice calls via MCP.
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Remote MCP for AI Studio Android release gate MCP, structured receipts, audit logs, and reviewer-rea
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Idle-Sync/whatsapp-connect-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server