WhatsApp MCP 服务器 (TypeScript/Baileys)
这是 WhatsApp 的模型上下文协议 (MCP) 服务器,使用 TypeScript 构建并使用@whiskeysockets/baileys
库。
它允许您将您的个人 WhatsApp 帐户连接到 AI 代理(例如通过其桌面应用程序或 Cursor 的 Anthropic Claude),从而使其能够:
- 搜索您的个人 WhatsApp 消息。
- 搜索您的联系人(个人,而非群组)。
- 列出您最近的聊天。
- 检索特定聊天的消息历史记录。
- 向个人或群组发送消息。
它使用 WhatsApp Web 多设备 API 直接连接到您的个人 WhatsApp 帐户。您的所有消息和身份验证详细信息都本地存储在 SQLite 数据库 ( ./data/
) 和身份验证缓存 ( ./auth_info/
) 中。只有当连接的 AI 代理明确使用提供的 MCP 工具(您可以通过代理界面控制)时,数据才会发送到该代理。
(可选:考虑添加与此处参考示例类似的屏幕截图或 GIF)
例子
**用户:**向 WhatsApp 中的“Meu amor”发送一条消息,内容是“Te amo”
**助理:**好的,我需要先找到联系人。使用工具: whatsapp.search_contacts
工具结果:
**助手:**已找到联系人。正在发送消息。使用工具: whatsapp.send_message
工具结果:
主要功能(MCP 工具)
服务器向连接的AI代理公开以下工具:
search_contacts
:按姓名或电话号码部分(JID)搜索联系人。list_messages
:检索特定聊天的消息历史记录,并分页。list_chats
:列出您的聊天记录,可按活动或名称排序,可过滤、可分页,可选择包含最后一条消息的详细信息。get_chat
:获取有关特定聊天的详细信息。get_message_context
:检索特定消息 ID 之前和之后立即发送的消息的上下文。send_message
:向指定的收件人 JID(用户或组)发送短信。
安装
通过 Smithery 安装
要通过Smithery自动为 Claude Desktop 安装 WhatsApp MCP 服务器:
先决条件
- **Node.js:**版本 23.10.0 或更高版本(如
package.json
中所述)。您可以使用node -v
检查版本。(已初步支持 typescript 和 sqlite 内置功能) - npm (或 yarn/pnpm):通常随 Node.js 提供。
- AI 客户端: Anthropic Claude 桌面应用程序、Cursor、Cline 或 Roo Code(或另一个与 MCP 兼容的客户端)。
步骤
- 克隆此存储库:
- 安装依赖项:
- **首次运行服务器:**使用
node
直接运行主脚本。- 第一次运行时,它可能会使用
quickchart.io
生成一个二维码链接,并尝试在您的默认浏览器中打开它。 - 使用您的 WhatsApp 移动应用程序扫描此二维码(设置 > 链接设备 > 链接设备)。
- 身份验证凭证将本地保存在
auth_info/
目录中(git 会忽略此目录)。 - 消息将开始同步并存储在
./data/whatsapp.db
中。这可能需要一些时间,具体取决于您的历史记录大小。请检查wa-logs.txt
和控制台输出以了解进度。 - 保持此终端窗口运行。同步后即可关闭。
- 第一次运行时,它可能会使用
AI客户端配置
您需要告诉您的 AI 客户端如何启动这个 MCP 服务器。
- 准备配置 JSON:复制以下 JSON 结构。您需要将
{{PATH_TO_REPO}}
替换为您克隆此代码库的目录的绝对路径。- **获取绝对路径:**在终端中导航到
whatsapp-mcp-ts
目录并运行pwd
。将此输出用作{{PATH_TO_REPO}}
。
- **获取绝对路径:**在终端中导航到
- 保存配置文件:
- 对于**Claude Desktop:**将 JSON 保存为
claude_desktop_config.json
在其配置目录中:- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
(可能的路径,如有必要请验证) - Linux:
~/.config/Claude/claude_desktop_config.json
(可能的路径,如有必要请验证)
- macOS:
- 对于**Cursor:**将 JSON 保存为
mcp.json
在其配置目录中:~/.cursor/mcp.json
- 对于**Claude Desktop:**将 JSON 保存为
- **重启 Claude Desktop/Cursor:**关闭并重新打开您的 AI 客户端。现在它应该能够检测到“whatsapp”MCP 服务器并允许您使用其工具。
用法
一旦服务器运行(手动通过node src/main.ts
启动,或由 AI 客户端通过配置文件启动),并连接到您的 AI 客户端,您就可以通过代理的聊天界面与您的 WhatsApp 数据进行交互。您可以要求它搜索联系人、列出最近的聊天记录、阅读消息或发送消息。
架构概述
此应用程序是一个单一的 Node.js 进程,它:
- 使用
@whiskeysockets/baileys
连接到 WhatsApp Web API,处理身份验证和实时事件。 - 使用
node:sqlite
将 WhatsApp 聊天和消息本地存储在 SQLite 数据库 (./data/whatsapp.db
) 中。 - 使用
@modelcontextprotocol/sdk
运行 MCP 服务器,该服务器通过标准输入/输出 (stdio) 监听来自 AI 客户端的请求。 - 提供查询本地 SQLite 数据库或使用 Baileys 套接字发送消息的 MCP 工具。
- 使用
pino
记录活动(wa-logs.txt
记录 WhatsApp 事件,mcp-logs.txt
记录 MCP 服务器活动)。
数据存储与隐私
- **身份验证:**您的 WhatsApp 连接凭据本地存储在
./auth_info/
目录中。 - **消息和聊天:**您的消息历史记录和聊天元数据本地存储在
./data/whatsapp.db
SQLite 文件中。 - 本地数据:
auth_info/
和data/
均包含在.gitignore
文件中,以防止意外提交。请将这些目录视为敏感目录。 - **LLM 交互:**仅当 AI 代理主动使用提供的 MCP 工具之一(例如
list_messages
、send_message
)时,数据才会发送到连接的大型语言模型 (LLM)。服务器本身不会主动将您的数据发送到其他任何地方。
技术细节
- 语言: TypeScript
- 运行时: Node.js(>=v23.10.0)
- WhatsApp API:
@whiskeysockets/baileys
- MCP SDK:
@modelcontextprotocol/sdk
- 数据库:
node:sqlite
(捆绑的 SQLite) - 伐木:
pino
- 模式验证:
zod
(用于 MCP 工具输入)
故障排除
- QR码问题:
- 如果二维码链接没有自动打开,请检查控制台输出中的
quickchart.io
URL 并手动打开。 - 确保您使用手机的 WhatsApp 应用程序及时扫描二维码。
- 如果二维码链接没有自动打开,请检查控制台输出中的
- 身份验证失败/已注销:
- 如果连接因
DisconnectReason.loggedOut
错误而关闭,则需要重新进行身份验证。停止服务器,删除./auth_info/
目录,然后重新启动服务器 (node src/main.ts
) 以获取新的二维码。
- 如果连接因
- 消息同步问题:
- 初始同步可能需要一些时间。请查看
wa-logs.txt
了解活动情况。 - 如果消息似乎不同步或丢失,您可能需要完全重置。停止服务器,删除
./auth_info/
和./data/
目录,然后重新启动服务器以重新进行身份验证并同步历史记录。
- 初始同步可能需要一些时间。请查看
- MCP 连接问题 (Claude/Cursor):
- 仔细检查
claude_desktop_config.json
或mcp.json
中的command
和args
(尤其是{{PATH_TO_REPO}}
)。确保路径是绝对路径且正确。 - 验证 Node.js 是否正确安装并位于系统的 PATH 中。
- 检查 AI 客户端的日志中是否存在与启动 MCP 服务器相关的错误。
- 检查此服务器的日志(
mcp-logs.txt
)中是否存在与 MCP 相关的错误。
- 仔细检查
- 发送消息时出错:
- 确保收件人 JID 正确(例如,用户为
number@s.whatsapp.net
,群组为groupid@g.us
)。 - 检查
wa-logs.txt
以了解 Baileys 的具体错误。
- 确保收件人 JID 正确(例如,用户为
- **一般问题:**检查
wa-logs.txt
和mcp-logs.txt
以获取详细的错误消息。
有关更多 MCP 集成问题,请参阅 官方 MCP 文档。
致谢
- https://github.com/lharries/whatsapp-mcp与此代码库执行相同操作,但使用 go 和 python。
执照
该项目根据 ISC 许可证获得许可(请参阅package.json
)。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
模型上下文协议服务器将您的个人 WhatsApp 帐户连接到 Claude 等 AI 代理,使它们能够通过 WhatsApp 搜索消息、查看联系人、检索聊天历史记录和发送消息。
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that enables AI assistants like Claude to interact with Zulip workspaces, supporting capabilities such as posting messages, listing channels, sending direct messages, and accessing conversation history.Last updated -JavaScriptApache 2.0
- AsecurityAlicenseAqualityA Python server that enables language models like Claude to interact with WhatsApp Business API through GreenAPI, supporting features like sending messages and managing groups.Last updated -54PythonMIT License
- -securityAlicense-qualityA bridge that connects WhatsApp Web to AI models using the Model Context Protocol, enabling Claude and other AI systems to interact with WhatsApp through a standardized interface.Last updated -194TypeScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that enables Claude to interact with WhatsApp through the Evolution API, allowing for message sending, contact management, group operations, and WhatsApp instance administration.Last updated -110TypeScriptMIT License