返回 MCP 目录
public公开dns本地运行

waha-mcp

WAHA MCP服务器是一个连接WhatsApp HTTP API与Claude Desktop等AI助手的工具,通过MCP协议实现WhatsApp自动化控制,提供63个工具涵盖会话管理、消息收发、群组操作等功能。

article

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."
}

工作原理

  1. Claude 遇到问题 → 通过 WhatsApp 提问
  2. 你从手机回复
  3. Claude 立即继续工作
  4. 零停机!⚡

📖 另请参阅

其他 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 进行实现

工作原理

  1. 通过 WhatsApp 发送问题
  2. 轮询用户的新消息
  3. 收到回复后返回文本
  4. 包含超时处理(默认: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 文件夹:

🤝 贡献

欢迎贡献代码!请随时提交问题或拉取请求。

  1. 分叉仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开拉取请求

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

🙏 致谢


为 MCP 社区用心打造 ❤️

⭐ 给此仓库加星🐛 报告 Bug💡 请求新功能

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端