使用说明
WAHA WhatsApp MCP服务器
TypeScript 模型上下文协议 标准 WhatsApp服务器通过统一的WAHA后端。它公开了28个工具 消息、联系人、媒体、转录、语音生成、自动语音备忘 回复、消息存储搜索和每次对话的媒体自动化。
建筑学
MCP client → this package → unified backend /api (:8200)
├─ PostgreSQL message store
├─ WAHA live proxy
├─ transcription and TTS providers
└─ media analysis/archive worker
MCP服务器只与经过身份验证的 /api 外观。它无法连接
直接发送到WAHA、数据库、Nextcloud或模型提供商。仅局域网管理
有意排除档案审查和LLM提供者管理的途径。
本次发布的目标 waha-backend 承诺 46acc32 或兼容的较新版本。
安装
Claude 代码
claude mcp add waha-whatsapp -- \
env WAHA_API_URL=http://your-server:8200/api \
WAHA_API_KEY=your-backend-api-key \
npx -y @marcos-heidemann/waha-mcp-server
MCP JSON配置
{
"mcpServers": {
"waha-whatsapp": {
"command": "npx",
"args": ["-y", "@marcos-heidemann/waha-mcp-server"],
"env": {
"WAHA_API_URL": "http://your-server:8200/api",
"WAHA_API_KEY": "your-backend-api-key"
}
}
}
}
配置
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
WAHA_API_URL |
没有 | http://localhost:8200/api |
统一后端API URL |
WAHA_API_KEY |
yes | -- | 发送的值为 X-API-Key |
WAHA_SESSION |
没有 | default |
WAHA会话名称 |
WAHA_SEND_DELAY_MS |
没有 | 1000 |
出站发送之间的最小延迟;非负整数 |
较老的 WAHA_STORE_* 和 WAHA_TRANSCRIPTION_* 不再使用变量。
这些服务在统一后端后面配置。
联系人标识符
聊天定位工具使用稳定 contactId:
- 人:带有国家代码的电话号码,例如
5521999999999. - 组:稳定组JID结束于
@g.us. - 遗产
@c.us和@lid后端所在的路由上仍接受别名 支持他们。 - 导入的聊天ID以结尾
@import使用消息读取/搜索,但不使用 后端聊天摘要路由。
使用 whatsapp_list_contacts 以发现标识符。
工具(28)
| 区域 | 工具 | 目的 |
|---|---|---|
| 会议 | whatsapp_session_status |
连接和帐户存在 |
| 会议 | whatsapp_account_info |
经过身份验证的WhatsApp身份 |
| 聊天 | whatsapp_list_chats |
实时聊天概述及预览 |
| 聊天 | whatsapp_read_messages |
具有实时回退和可选标记读取的持久历史记录 |
| 消息传递 | whatsapp_send_text |
限时短信发送 |
| 消息传递 | whatsapp_react |
添加或删除反应 |
| 消息传递 | whatsapp_edit_message |
编辑外发短信 |
| 消息传递 | whatsapp_delete_message |
取消发送消息 |
| 消息传递 | whatsapp_forward_message |
将存储的文本复制到另一个聊天中 |
| 媒体中心 | whatsapp_download_media |
在线返回高达10 MiB的图像/音频;将较大/其他文件保存在 /tmp |
| 媒体中心 | whatsapp_transcribe_audio |
使用语言和提示进行转录 |
| 媒体中心 | whatsapp_generate_speech |
生成内联TTS音频;不将其发送到WhatsApp |
| 联系人 | whatsapp_check_number |
检查手机是否已注册 |
| 联系人 | whatsapp_list_contacts |
统一的个人和团体地址簿 |
| 联系人 | whatsapp_get_contact |
个人或团体详细信息 |
| 商店 | whatsapp_search_messages |
搜索文本以及索引标题、OCR、摘要、标签和文档 |
| 商店 | whatsapp_contact_graph |
共享群组和相互联系 |
| 商店 | whatsapp_chat_summary |
最近可读的历史记录,最多100条消息 |
| 商店 | whatsapp_stats |
活动总数和热门聊天/联系人 |
| 商店 | whatsapp_import_chat |
导入本地 .zip/.txt WhatsApp导出,最高100 MiB |
| 自动回复 | whatsapp_auto_reply_enable |
启用个人/群组语音备忘回复;可选上下文模式 |
| 自动回复 | whatsapp_auto_reply_disable |
禁用自动语音备忘回复 |
| 自动回复 | whatsapp_auto_reply_status |
检查启用/找到状态 |
| 自动回复 | whatsapp_auto_reply_list |
已启用列表的人员和组 |
| 自动化 | whatsapp_media_settings_get |
按对话阅读媒体政策 |
| 自动化 | whatsapp_media_settings_update |
部分更新捕获/分析/回复/归档策略 |
| 自动化 | whatsapp_media_settings_disable |
关闭对话的每个媒体自动化标志 |
| 自动化 | whatsapp_automation_health |
后端/侦听器/媒体/工作程序组合诊断 |
媒体自动化设置
whatsapp_media_settings_update 支持:
captureEnabledanalyzeImagesanalyzeDocumentswhatsappReplyEnabledincludeMediaInRecaparchiveMode:off,review,或autofixedNextcloudFolderId:整数或nullarchiveConfirmationEnabledallowSensitiveProcessingaskOnReview
对话设置与后端范围的终止开关相结合。始终检查
返回警告或呼叫 whatsapp_automation_health 在假设某个特征之前
活跃。当前的公共卫生/警告合同没有暴露全球大门
用于回顾纳入或审查问题。
当前后端限制
- 公共后端发送路由不实现手动报价回复。
供应
replyTo返回MCP错误,不发送任何内容。 whatsapp_forward_message重新发送存储的文本。它不保存媒体, 发件人归因或WhatsApp的Forwarded标签。- 一些当前的GOWS媒体仍然以存储类型公开
chat;类型过滤器可能 直到后台公共API切换到normalized_type. - 公共聊天摘要不完整
@lid别名感知。阅读/搜索更安全 迁移历史的选择。 - 导入的发件人身份仅为历史记录,从中省略
whatsapp_list_contacts;进口*@import聊天支持阅读/搜索,但不支持实时 阅读收据或聊天摘要。 - 持久的分阶段媒体预览、Nextcloud文件夹发现、存档审查/操作, 并且电机/LLM配置仍然是仅限操作员的管理功能。
开发和验证
npm ci
npm test # hermetic unit + backend-contract tests
npm run build
npm pack --dry-run
通过推送与包版本完全匹配的标签来部署发布,
例如 v2.4.0发布工作流重复单元测试和之前的构建
使用存储库密钥发布到npm。
现场测试需要 WAHA_API_URL 和 WAHA_API_KEY:
npm run test:live # read-only suites
WAHA_TEST_LEVEL=2 npm run test:live # includes self-chat writes
WAHA_TEST_LEVEL=3 npm run test:live # includes configured contact writes
默认的测试和CI路径从不与WhatsApp联系。
安全
- 将后端API密钥视为密码;永远不要承诺。
- 通过非官方的WhatsApp API发送可以触发防空控制。保持 自动化范围狭窄,速度有限。
- 媒体和聊天导出可能包含敏感数据。之前审查自动化策略 实现分析、回复或存档。
- 旋转Git历史记录中以前出现的任何凭据。