WhatsApp MCP Server
一个 Node.js 应用程序,它可以通过 AppleScript 自动化实现与 macOS 上的 WhatsApp 桌面版的程序化交互,允许用户发送消息和检查 WhatsApp 状态,而无需直接的 UI 交互。 (Alternatively, a slightly more formal translation:) 一个 Node.js 应用程序,旨在通过 AppleScript 自动化,实现与 macOS 桌面版 WhatsApp 的程序化交互。该应用允许用户发送消息并检查 WhatsApp 状态,无需直接操作用户界面。
Tools
send-whatsapp-message
Send a message to a contact on WhatsApp
check-whatsapp-status
Check if WhatsApp is currently running
list-recent-contacts
List recently contacted people on WhatsApp (simplified)
README
WhatsApp MCP 服务器
概述
WhatsApp MCP(模型上下文协议)服务器是一个 Node.js 应用程序,它支持与 macOS 上的 WhatsApp 桌面应用程序进行程序化交互。通过使用 AppleScript 自动化,它提供了一个简单的接口来发送消息和检查 WhatsApp 状态,而无需直接与 WhatsApp UI 交互。
功能
1. 向联系人发送消息
向 WhatsApp 联系人列表中的特定联系人发送文本消息:
- 消息通过您连接的 WhatsApp 桌面应用程序传递
- 支持消息的正确格式,包括换行符
- 使用 AppleScript 自动化 WhatsApp 桌面界面
2. 检查 WhatsApp 状态 (WIP)
验证 WhatsApp 应用程序当前是否正在运行:
- 返回 WhatsApp 的当前运行状态
- 帮助防止尝试发送消息时出错
3. 列出最近联系人 (WIP)
由于 WhatsApp 的隐私保护,此功能提供有限的功能:
- 向用户告知 WhatsApp 的隐私限制
- 需要确切的联系人姓名才能发送消息
技术实现
构建工具
- @modelcontextprotocol/sdk - MCP 服务器和 stdio 传输
- Zod - Schema 验证
- Node.js 内置模块 (child_process, util, fs)
- AppleScript 用于 macOS 自动化
架构
- 使用模型上下文协议 (MCP) 进行标准化工具通信
- 采用 stdio 传输进行通信
- 执行 AppleScript 命令与 WhatsApp 桌面应用程序交互
- 实施全面的错误日志记录以进行调试
要求
- macOS 操作系统
- 已安装 WhatsApp 桌面应用程序
- Node.js v14.0.0 或更高版本
- 互联网连接
安装
# 克隆存储库
git clone https://github.com/yourusername/whatsapp-mcp-server.git
# 导航到项目目录
cd whatsapp-mcp-server
# 安装依赖项
npm install
用法
启动服务器
node index.js
与 Claude 集成
要使 Claude 能够使用 WhatsApp MCP 服务器,请按照以下步骤操作:
-
设置您的 MCP 服务器
- 按照上述说明安装和配置 WhatsApp MCP 服务器
- 确保服务器在您的本地计算机上正常运行
-
使用您的 MCP 工具配置 Claude Desktop
- 修改您的
claude_desktop_config.json文件以包含 WhatsApp MCP 工具 - 此文件通常位于您的 Claude Desktop 应用程序配置目录中
- 添加以下配置以注册您的 WhatsApp MCP 工具:
- 修改您的
{
"mcpServers": [
{
"name": "whatsapp-mcp",
"transport": {
"command": "node",
"args": ["path/to/your/index.js"]
}
}
]
}
- 测试集成
- 与 Claude 创建一个测试对话
- 要求 Claude 向测试联系人发送 WhatsApp 消息
- 验证消息是否通过 WhatsApp 桌面应用程序成功发送
可用的 MCP 工具
1. send-whatsapp-message
向指定的 WhatsApp 联系人发送消息。
参数:
contactName:联系人在 WhatsApp 中显示的完整姓名message:要发送的消息的内容
示例用法(通过 MCP 客户端):
const response = await client.invoke("send-whatsapp-message", {
contactName: "John Doe",
message: "Hello, how are you today?"
});
2. check-whatsapp-status
检查 WhatsApp 应用程序当前是否正在运行。
无需参数。
示例用法(通过 MCP 客户端):
const response = await client.invoke("check-whatsapp-status", {});
3. list-recent-contacts
提供有关 WhatsApp 联系人列表隐私限制的信息。
无需参数。
示例用法(通过 MCP 客户端):
const response = await client.invoke("list-recent-contacts", {});
实现细节
AppleScript 自动化
服务器使用 AppleScript 自动化 WhatsApp 桌面应用程序:
- 激活 WhatsApp 应用程序
- 使用键盘快捷键导航界面
- 按姓名搜索联系人
- 使用向下箭头导航选择联系人
- 输入并发送消息
错误处理
全面的错误处理和日志记录:
- 控制台错误输出
- 基于文件的日志记录在
~/Library/Logs/whatsapp-mcp/中 - 优雅地处理 AppleScript 执行错误
- 进程级异常处理
将 WhatsApp MCP 工具与 Claude 结合使用
将 WhatsApp MCP 工具与 Claude 集成后,您可以使用自然语言指示 Claude:
发送消息
示例提示:
- "Send a WhatsApp message to John saying I'll be 10 minutes late for our meeting" (给 John 发送一条 WhatsApp 消息,说我开会要迟到 10 分钟)
- "Message Sarah on WhatsApp with the following text: Here's the document you requested" (在 WhatsApp 上给 Sarah 发送以下文本:这是您请求的文档)
- "Send 'Happy birthday!' to Mom on WhatsApp" (在 WhatsApp 上给妈妈发送“生日快乐!”)
检查 WhatsApp 状态
示例提示:
- "Is WhatsApp running on my computer?" (我的电脑上 WhatsApp 正在运行吗?)
- "Check if WhatsApp is active" (检查 WhatsApp 是否处于活动状态)
- "Verify WhatsApp status before sending a message" (在发送消息之前验证 WhatsApp 状态)
获取联系人信息
示例提示:
- "Can you list my recent WhatsApp contacts?" (你能列出我最近的 WhatsApp 联系人吗?)
- "Show me who I've messaged recently on WhatsApp" (向我展示我最近在 WhatsApp 上给谁发过消息)
Claude 将根据您的请求使用适当的 MCP 工具,并提供有关结果的反馈。
局限性
- 由于 AppleScript 依赖性,仅适用于 macOS
- 需要安装 WhatsApp 桌面应用程序
- 联系人选择可能会受到 WhatsApp UI 更改的影响
- 由于隐私保护,对 WhatsApp 联系人列表的访问受到限制
- 需要正确配置 Claude 才能访问您的本地 MCP 工具
安全注意事项
- 服务器与您的个人 WhatsApp 帐户交互
- 消息从您的帐户发送,并显示为您发送
- 仅在受信任的环境中使用
许可证
MIT
免责声明
本项目与 WhatsApp Inc. 或 Meta Platforms, Inc. 无关。请自行决定使用,并遵守 WhatsApp 的服务条款。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。