使用说明
📱 WhatsApp MCP——远程HTTP/SSE服务器
WhatsApp的模型上下文协议(MCP)服务器,用
whatsapp-web.js以及TypeScript。
支持两者 本地stdio (克劳德桌面)和 远程HTTP/SSE (第ai条远程MCP)模式。
⚠️ WhatsApp服务条款-重要提示
在使用此项目之前,请阅读此内容。
WhatsApp的 服务条款 和 可接受使用政策 禁止 在个人或企业账户上使用非官方自动化工具。
🚫 将使您的号码被禁止的操作:
| 违规 | 风险等级 |
|---|---|
| 发送批量/垃圾邮件 | 🔴 即时禁令 |
| 将消息自动转换为未知数字 | 🔴 即时禁令 |
使用非官方WhatsApp客户端(如 whatsapp-web.js) |
🟠 高风险 |
| 大规模删除联系人或组数据 | 🟠 高风险 |
| 未经用户同意发送消息 | 🔴 即时禁令 |
| 在个人号码上全天候运行机器人 | 🟡 中等风险 |
| 批量发送媒体/文件 | 🟠 高风险 |
✅ 更安全的做法:
- 使用一个 专用/测试电话号码,不是你的个人号码
- 只有消息 已选择加入的联系人
- 保持低消息频率和人性化
- 做 不 暴露你的
/sse或REST端点公开,无需API_KEY保护 - 做 不 将其用于营销、推销或任何大规模的商业信息传递
- 使用 WhatsApp商务API(官方) 用于生产/商业用途
🔒 本项目仅用于个人自动化和开发/测试。
作者不对因滥用而导致的任何账户禁令或法律后果负责。
🗂️ 项目结构
whatsapp-mcp/
├── src/
│ ├── index.ts # stdio MCP server (Claude Desktop)
│ ├── remote.ts # HTTP/SSE MCP server (Remote MCP + REST API)
│ └── send_message.ts # CLI script to send a single message
├── dist/ # Compiled JavaScript (auto-generated, do not edit)
├── .wwebjs_auth/ # WhatsApp session data (⚠️ keep this gitignored!)
├── .wwebjs_cache/ # Puppeteer browser cache (gitignored)
├── package.json
├── tsconfig.json
├── render.yaml # Render.com deployment config
├── start-remote.bat # Windows quick-start script
└── README.md
🚀 快速开始
先决条件
- Node.js v18+和 npm
- WhatsApp帐户(使用测试号!)
- 安装了谷歌Chrome或Chromium(由Puppeteer内部使用)
1.安装依赖项
npm install
2.构建TypeScript
npm run build
3.启动服务器
远程HTTP/SSE模式 (第ai条远程MCP):
npm run start:remote
开发模式 (无需构建,使用 ts-node):
npm run dev:remote
stdio模式 (克劳德桌面):
npm start
4.扫描二维码
打开浏览器并转到:
http://localhost:3000/qr
使用WhatsApp扫描二维码→ 已关联设备→ 链接设备.
🔌 API终点
| 方法 | 路径 | 描述 |
|---|---|---|
GET |
/ 或 /health |
健康检查+WhatsApp状态 |
GET |
/qr |
二维码HTML页面(扫描验证) |
GET |
/qr?format=json |
JSON格式的原始QR数据 |
GET |
/tools |
列出所有可用的MCP工具 |
GET |
/tools/status |
WhatsApp连接状态 |
POST |
/tools/send-message |
发送WhatsApp消息 |
GET |
/tools/chats |
列出最近的聊天记录 |
GET |
/tools/contacts |
列出联系人 |
GET |
/tools/messages/:chatId |
从聊天中获取消息 |
POST |
/tools/invoke |
通用MCP工具调用 |
GET |
/sse |
MCP SSE端点 (克劳德远程MCP) |
POST |
/messages |
MCP POST端点(与 /sse) |
🛠️ 可用的MCP工具
| 工具 | 说明 |
|---|---|
whatsapp_status |
检查连接状态 |
whatsapp_send_message |
发送短信 |
whatsapp_send_media |
发送图像/视频/文档 |
whatsapp_get_contacts |
列出所有联系人 |
whatsapp_get_groups |
列出所有组 |
whatsapp_get_group_info |
获取组详细信息和成员 |
whatsapp_create_group |
创建新组 |
whatsapp_get_chats |
获取最近的聊天记录 |
whatsapp_get_messages |
从特定聊天中获取消息 |
🔐 可选:承载令牌认证
通过设置 API_KEY 环境变量:
API_KEY=mysecretkey npm run start:remote
在所有请求中包含令牌:
curl -H "Authorization: Bearer mysecretkey" http://localhost:3000/tools/status
🌐 使用ngrok(公共HTTPS)进行测试
- 安装ngrok
- 启动服务器:
npm run start:remote - 在新终端中:
ngrok http 3000 - 复制生成的URL(例如。,
https://xxxx.ngrok-free.app)
在Claude.ai中→ 设置→ 集成→ 远程MCP,粘贴:
https://xxxx.ngrok-free.app/sse
☁️ 部署以渲染
- 将此仓库推送到GitHub(请参阅下面的Git步骤)
- 首选 render.com → New → Web服务
- 连接您的GitHub存储库
- 配置:
- 构建命令:
npm install && npm run build - 启动命令:
npm run start:remote - 环境:
NODE_ENV=production - 可选:
API_KEY=yoursecretkey
- 构建命令:
- 部署和复制您的
https://your-app.onrender.com统一资源定位符
粘贴到Claude Remote MCP:
https://your-app.onrender.com/sse
⚠️ 注: WhatsApp会话数据(
.wwebjs_auth)确实如此 不 在渲染部署中保持不变。使用一个 渲染磁盘 或在每次部署后重新扫描二维码。
📦 npm脚本
| 命令 | 描述 |
|---|---|
npm run build |
将TypeScript编译为 dist/ |
npm start |
启动stdio MCP服务器 |
npm run start:remote |
启动HTTP/SSE远程服务器 |
npm run dev |
开发stdio服务器(ts节点,无构建) |
npm run dev:remote |
开发远程服务器(ts节点,无构建) |
npm run send |
CLI:发送一条消息 |
npm run qr |
在终端显示二维码 |
📄 .gitignore建议
确保你的 .gitignore 包括:
node_modules/
dist/
.wwebjs_auth/
.wwebjs_cache/
.env
*.bat
🔒 永不承诺
.wwebjs_auth/--它包含您的WhatsApp会话凭据。
🔧 环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT |
3000 |
HTTP服务器端口 |
HOST |
0.0.0.0 |
服务器绑定地址 |
API_KEY |
(空) | REST身份验证的可选承载令牌 |
NODE_ENV |
development |
设置为 production 渲染上 |
🤝 贡献
欢迎拉取请求!对于重大更改,请先打开一个问题。
📜 许可证
麻省理工学院-负责任地使用并遵守WhatsApp的服务条款。
💡 提示: 安装 GitLens扩展 在VS Code中,您将获得更丰富的Git体验——提交历史、责备、比较等。
