README
🚀 WAHA MCP 服务器
WAHA MCP 服务器将强大的 WAHA(WhatsApp HTTP API) 与 Claude Desktop 等 AI 助手相连接,通过模型上下文协议(MCP)实现无缝的 WhatsApp 自动化。
🚀 快速开始
WAHA MCP 服务器能将 WAHA (WhatsApp HTTP API) 与 Claude Desktop 等 AI 助手连接起来,借助模型上下文协议(MCP)实现 WhatsApp 的自动化操作。
✨ 主要特性
- 📱 全面的 WhatsApp 控制 - 发送/接收消息、管理聊天、创建群组
- 🎯 63 种工具 - 涵盖会话、消息、联系人、群组和交互式工作流的全面 API
- 🔄 智能媒体处理 - 语音/视频自动转换,支持 URL 和本地文件
- 🤖 原生 AI 支持 - 专为通过 MCP 集成大语言模型而构建
- 🔒 安全可靠 - 基于环境的 API 密钥管理
- ⚡ 快速稳定 - 由 TypeScript 驱动,具备强大的错误处理能力
📦 安装指南
1. 克隆并安装
git clone https://github.com/dudu1111685/waha-mcp.git
cd waha-mcp
npm install
npm run build
2. 设置环境变量
创建一个 .env 文件或导出变量:
export WAHA_API_KEY="your-api-key-here"
export WAHA_URL="http://localhost:3001" # 可选,默认为 localhost:3001
⚙️ 配置
Claude Desktop
添加到 claude_desktop_config.json:
- Linux:
~/.config/claude/claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"waha": {
"command": "node",
"args": ["/absolute/path/to/waha-mcp/dist/index.js"],
"env": {
"WAHA_API_KEY": "your-api-key-here",
"WAHA_URL": "http://localhost:3001"
}
}
}
}
Cline / VS Code
添加到你的 Cline MCP 设置(~/.vscode/mcp.json 或工作区设置):
{
"mcpServers": {
"waha": {
"command": "node",
"args": ["/absolute/path/to/waha-mcp/dist/index.js"],
"env": {
"WAHA_API_KEY": "your-api-key-here"
}
}
}
}
Claude Code(自主开发)
🤖 开启真正的自主 AI 开发: Claude 无需在需要用户输入时停止,而是可以通过 WhatsApp 提问并继续工作!
🚀 完整设置指南:CLAUDE_CODE_SETUP.md
快速配置示例:
{
"mcpServers": {
"waha": {
"command": "node",
"args": ["/path/to/waha-mcp/dist/index.js"],
"env": {
"WAHA_API_KEY": "your-key",
"USER_WHATSAPP_CHAT_ID": "1234567890@c.us"
}
}
},
"globalInstructions": "When you need user input during development, use ask_user_via_whatsapp tool. Never stop and wait for manual console input."
}
工作原理:
- Claude 遇到问题 → 通过 WhatsApp 提问
- 你从手机回复
- Claude 立即继续工作
- 零停机!⚡
📖 另请参阅:
CLAUDE_CODE_SETUP.md- 完整设置指南CLAUDE_CODE_INSTRUCTIONS.md- AI 助手使用示例
其他 MCP 客户端
使用 mcporter CLI 进行快速测试:
mcporter call 'waha-mcp.waha_list_sessions()'
mcporter call 'waha-mcp.waha_send_text(chatId: "1234567890@c.us", text: "Hello from MCP!")'
🧰 工具参考
📂 类别
会话管理(8 种工具)
| 工具 | 描述 |
|------|-------------|
| waha_list_sessions | 列出所有会话及其状态 |
| waha_get_session | 获取会话的详细信息 |
| waha_create_session | 创建新会话 |
| waha_start_session | 启动已停止的会话 |
| waha_stop_session | 停止正在运行的会话 |
| waha_restart_session | 重启会话 |
| waha_delete_session | 永久删除会话 |
| waha_logout_session | 将会话中的 WhatsApp 账号断开连接 |
身份验证(3 种工具)
| 工具 | 描述 |
|------|-------------|
| waha_get_qr_code | 获取 WhatsApp 身份验证的二维码 |
| waha_request_pairing_code | 请求手机号码配对码 |
| waha_check_auth_status | 检查会话的身份验证状态 |
消息发送(14 种工具)
| 工具 | 描述 |
|------|-------------|
| waha_send_text | 发送文本消息 |
| waha_send_image | 发送图片(本地文件或 URL) |
| waha_send_video | 发送视频并自动转换格式 |
| waha_send_voice | 发送语音消息并自动转换格式 |
| waha_send_file | 发送任何文档/文件 |
| waha_send_location | 发送位置标记 |
| waha_send_contact | 发送联系人 vCard |
| waha_send_poll | 创建并发送投票 |
| waha_react_to_message | 用表情符号进行消息反应 👍❤️😂 |
| waha_forward_message | 转发消息 |
| waha_get_messages | 分页获取消息 |
| waha_delete_message | 删除消息 |
| waha_edit_message | 编辑已发送的消息 |
| waha_mark_as_read | 将消息标记为已读 |
| waha_star_message | 标记/取消标记消息 |
📤 媒体上传功能:
- ✅ 支持本地文件和 URL
- ✅ 自动检测 MIME 类型
- ✅ 自动将视频/语音转换为 WhatsApp 格式
- ✅ 支持 50 多种文件类型
- ✅ 自动处理 Base64 编码
聊天管理(7 种工具)
| 工具 | 描述 |
|------|-------------|
| waha_list_chats | 列出所有聊天 |
| waha_get_chat | 获取聊天的详细信息 |
| waha_archive_chat | 存档/取消存档聊天 |
| waha_pin_chat | 固定/取消固定聊天 |
| waha_mute_chat | 静音/取消静音聊天 |
| waha_delete_chat | 删除聊天 |
| waha_clear_chat | 清除所有消息 |
联系人(5 种工具)
| 工具 | 描述 |
|------|-------------|
| waha_get_contacts | 获取所有联系人 |
| waha_get_contact | 获取联系人的信息 |
| waha_check_number_exists | 检查号码是否在 WhatsApp 上 |
| waha_block_contact | 阻止/取消阻止联系人 |
| waha_get_profile_picture | 获取联系人的头像 URL |
群组(13 种工具)
| 工具 | 描述 |
|------|-------------|
| waha_create_group | 创建新群组 |
| waha_list_groups | 列出所有群组 |
| waha_get_group | 获取群组的详细信息 |
| waha_get_group_participants | 列出群组参与者 |
| waha_add_group_participants | 添加参与者 |
| waha_remove_group_participants | 移除参与者 |
| waha_promote_group_participant | 提升为管理员 |
| waha_demote_group_participant | 降为普通成员 |
| waha_update_group_subject | 更新群组名称 |
| waha_update_group_description | 更新群组描述 |
| waha_update_group_picture | 设置群组头像 |
| waha_leave_group | 离开群组 |
| waha_get_group_invite_code | 获取邀请链接 |
| waha_revoke_group_invite | 撤销并重新生成邀请链接 |
在线状态与动态(5 种工具)
| 工具 | 描述 |
|------|-------------|
| waha_set_presence | 设置在线/离线状态 |
| waha_get_presence | 获取联系人的在线状态 |
| waha_start_typing | 显示正在输入的指示器 |
| waha_stop_typing | 停止显示正在输入的指示器 |
| waha_send_status | 发布文本动态/故事 |
标签(5 种工具)
| 工具 | 描述 |
|------|-------------|
| waha_get_labels | 获取所有标签 |
| waha_create_label | 创建新标签 |
| waha_delete_label | 删除标签 |
| waha_add_label_to_chat | 为聊天添加标签 |
| waha_remove_label_from_chat | 从聊天中移除标签 |
🆕 交互式工作流(1 种工具)
| 工具 | 描述 |
|------|-------------|
| ask_user_via_whatsapp | 🚀 新功能! 发送问题并等待用户回复(阻塞操作)。非常适合 Claude Code 在执行过程中需要用户输入的工作流。 |
使用案例示例:
// Claude Code 正在构建一个功能,需要澄清问题
const reply = await ask_user_via_whatsapp({
question: "Should I use REST or GraphQL for the API?",
chatId: "1234567890@c.us",
timeoutMinutes: 30
});
// 用户从手机回复:"Use GraphQL"
// Claude Code 继续使用 GraphQL 进行实现
工作原理:
- 通过 WhatsApp 发送问题
- 轮询用户的新消息
- 收到回复后返回文本
- 包含超时处理(默认:60 分钟)
适用场景:
- 🤖 Claude Code 在工作流中提问
- 💡 当你离开电脑时获取用户输入
- 🔄 构建真正的交互式 AI 自动化
- 📱 在 AI 继续工作时从手机回复
📚 聊天 ID 格式
了解 WhatsApp ID 格式:
| 类型 | 格式 | 示例 |
|------|--------|---------|
| 用户 | {phone}@c.us | 1234567890@c.us |
| 群组 | {id}@g.us | 1234567890-1234567890@g.us |
| 频道 | {id}@newsletter | 1234567890@newsletter |
| 动态 | status@broadcast | status@broadcast |
注意:电话号码应去掉
+前缀。
💻 使用示例
发送文本消息
mcporter call 'waha-mcp.waha_send_text(
chatId: "1234567890@c.us",
text: "Hello from WAHA MCP!"
)'
从 URL 发送图片
mcporter call 'waha-mcp.waha_send_image(
chatId: "1234567890@c.us",
imageUrl: "https://example.com/photo.jpg",
caption: "Check this out!"
)'
创建群组并添加参与者
# 创建群组
mcporter call 'waha-mcp.waha_create_group(
name: "Team Chat",
participants: ["1111111111@c.us", "2222222222@c.us"]
)'
# 添加更多参与者
mcporter call 'waha-mcp.waha_add_group_participants(
chatId: "{group_id}@g.us",
participants: ["3333333333@c.us"]
)'
列出所有聊天
mcporter call 'waha-mcp.waha_list_chats()'
🧪 开发
以监听模式运行
npm run dev # 文件更改时重新编译
运行测试
npm test
生产环境构建
npm run build
📚 详细文档
如需详细文档,请参阅 docs 文件夹:
🤝 贡献
欢迎贡献代码!请随时提交问题或拉取请求。
- 分叉仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
🙏 致谢
- WAHA (WhatsApp HTTP API) - 此集成的核心
- 模型上下文协议 - 支持原生 AI 工具集成
- Anthropic - 提供 Claude Desktop 和 MCP SDK
微信扫一扫