Token导航 LogoToken导航TokenDH.com
Whatsapp MCP 2 0 logo
音视频stdio官方级别未说明来源级核验

Whatsapp MCP 2 0

MCP Server

tsc

一个通过Baileys连接WhatsApp的模型上下文协议(MCP)服务器,提供AI管理WhatsApp的能力。

工具数

16

提示词数

0

GitHub Stars

2

资源数

0
TypeScriptClaude语音音频Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

karlfoster

提供方

karlfoster

最后核验

2026/5/17 20:21

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx tsc --noEmit

详细介绍

WhatsApp MCP 2.0

通过以下方式连接到WhatsApp的模型上下文协议(MCP)服务器 百利甜酒,为人工智能提供管理WhatsApp的能力。

Architecture Diagram

特性

  • 列出和搜索聊天记录、联系人和消息
  • 发送短信和文件(图像、视频、文档、音频)
  • 从收到的消息中下载媒体
  • 通过兼容Whisper的API(Groq,OpenAI)转录语音笔记
  • 回复带有阿联酋DNCR违规警告的垃圾邮件
  • 在所有聊天或特定聊天中搜索全文消息
  • 首次配对时自动历史同步(二维码扫描)
  • 多实例安全:只有一个进程连接到WhatsApp;extra从SQLite以只读方式运行
  • 通过VCF文件从电话通讯簿导入联系人姓名

先决条件

  • Node.js 18+
  • 具有活动电话号码的WhatsApp帐户

设置

# Install dependencies
npm install

# Build
npm run build

# Start the server
npm start

第一次运行时,二维码会打印到stderr。用手机上的WhatsApp扫描:

WhatsApp>设置>链接设备>链接设备

扫描后,服务器会同步您的聊天记录,并开始监听新消息。身份验证凭据保存到 auth_info/ 因此后续开始会自动重新连接。

MCP客户端配置

将服务器添加到MCP客户端配置中(例如Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "whatsapp": {
      "command": "node",
      "args": ["/absolute/path/to/whatsapp-mcp/dist/index.js"],
      "env": {
        "WHISPER_API_URL": "https://api.groq.com/openai/v1/audio/transcriptions",
        "WHISPER_API_KEY": "gsk_your_key_here"
      }
    }
  }
}

env 块是可选的,只需要用于语音笔记转录(见下文)。

语音笔记转录

transcribe_voice_note 该工具使用Whisper兼容的语音转文本API来转录语音笔记。音频从WhatsApp下载到内存中,发送到API,然后丢弃-任何东西都不会保存到磁盘。转录被缓存在数据库中,因此重复调用是即时的。

配置

在MCP客户端配置中设置这些环境变量 env 块:

变量必填描述
WHISPER_API_URLAPI端点URL
WHISPER_API_KEYAPI密钥
WHISPER_MODEL型号名称(默认值: whisper-large-v3)

Groq(推荐-免费等级)

"env": {
  "WHISPER_API_URL": "https://api.groq.com/openai/v1/audio/transcriptions",
  "WHISPER_API_KEY": "gsk_..."
}

在获取免费API密钥 console.groq.com.

开放人工智能

"env": {
  "WHISPER_API_URL": "https://api.openai.com/v1/audio/transcriptions",
  "WHISPER_API_KEY": "sk-...",
  "WHISPER_MODEL": "whisper-1"
}

可用工具

工具说明
list_chats按上次活动排序的聊天记录列表,可选择按名称筛选
get_chat获取包含最新消息的聊天详细信息
list_messages从聊天中获取消息(最新消息优先)
search_messages在所有聊天或特定聊天中进行全文搜索
search_contacts按姓名或电话号码查找联系人
get_message_context获取围绕特定消息的消息
get_my_profile获取经过身份验证的用户的JID、姓名和电话号码
update_contact更新或设置联系人的显示名称(也更新聊天列表)
sync_contacts将电话联系人从VCF文件导入数据库
send_message发送短信(发送前需要确认)
send_file发送图像、视频、音频或文档文件
reply_spam对任何未经请求的营销活动(房地产经纪人、保险、汽车销售等)发送阿联酋DNCR违规回复。(需要确认)
delete_message删除所有人的邮件(删除前需要确认)
delete_chat从WhatsApp和本地数据库中删除整个聊天记录(需要确认)
download_media将收到的消息中的媒体下载到磁盘
transcribe_voice_note通过语音转换文本API将语音备忘转换为文本(结果缓存)

确认流程

send_message, reply_spam, delete_message,以及 delete_chat 工具使用两步确认流程来防止意外操作。调用时,它们首先返回一个预览,显示:

  • 收件人姓名 (来自您的联系人数据库)
  • 电话号码
  • 消息内容 (用于发送)或 消息id (用于删除)

只有在您确认后才会执行该操作。人工智能助手必须再次调用该工具 confirmed: true 继续。

导入电话联系人

WhatsApp不会将您手机的地址簿名称同步到链接/配套设备。要查看联系人姓名而不是电话号码,请从VCF(vCard)文件导入:

从手机导出联系人

苹果手机: iCloud.com>通讯录>全选>导出vCard

安卓: 通讯录应用程序>设置>导出>导出到.vcf文件

导入数据库

# Place the VCF file in the contacts/ directory (git-ignored)
mkdir -p contacts
cp ~/Downloads/contacts.vcf contacts/

# Preview matches without making changes
npm run import-contacts -- contacts/contacts.vcf --dry-run

# Run the import
npm run import-contacts -- contacts/contacts.vcf

导入程序使用以下方法将您地址簿中的电话号码与数据库中现有的WhatsApp JID进行匹配:

  1. 精确匹配 --标准化电话号码直接匹配已知的JID
  2. 模糊匹配 --最后9位数字匹配,捕捉本地与国际格式差异(例如。 05xxxxxxxx 对比 9715xxxxxxxx)

模糊匹配单独列出,以便您进行验证。与一起跑步 --dry-run 第一。

项目结构

src/
  index.ts          Entry point, lock file, MCP server setup
  whatsapp.ts       Baileys client, event handling, high-level API
  db.ts             SQLite database layer (better-sqlite3)
  tools.ts          MCP tool definitions
  transcribe.ts     Whisper API client for voice note transcription
  utils.ts          Shared helpers (JID conversion, MIME types)
  import-contacts.ts  VCF contact import script

auth_info/          WhatsApp authentication credentials (git-ignored)
store/              SQLite database (git-ignored)
downloads/          Downloaded media files (git-ignored)
contacts/           Imported contact files (git-ignored)
patches/            Baileys patches applied via patch-package

事件处理

Baileys在历史同步期间缓冲事件,并将其作为合并地图刷新。服务器使用 sock.ev.process() (非个人 .on() 监听器)正确接收缓冲和实时事件。

多实例安全

文件锁(store/.whatsapp.lock)确保一次只有一个进程连接到WhatsApp。其他实例(例如,来自Claude Desktop的生成多个MCP服务器的实例)以只读模式运行,在不打开第二个WebSocket连接的情况下提供SQLite的数据。

历史同步

在首次配对(二维码扫描)时,WhatsApp会在多个同步事件中提供您的聊天历史记录。服务器将所有聊天记录、联系人和消息保存到SQLite。历史同步仅在第一次配对时发生——重新连接会重用现有数据库。

故障排除

二维码未出现: 确保您直接运行服务器(而不是通过MCP客户端),这样您就可以看到stderr输出。使用 npm run dev 为了发展。

初始同步后状态515断开连接: 这很正常。WhatsApp发送 restartRequired 初始数据转储后的信号。服务器会自动以指数回退方式重新连接。

手机上“无法完成同步”: 在第一次配对时短暂出现的装饰性消息。连接稳定后,它会自行清除。

状态401(已注销): 您的会话已无效。删除 auth_info/ 并重新扫描二维码。

显示电话号码而不是姓名的聊天: WhatsApp不会将通讯簿名称同步到链接的设备。使用上述VCF联系人导入功能。

发展

# Run with hot-reload
npm run dev

# Type-check without emitting
npx tsc --noEmit

# Build for production
npm run build

免责声明

本软件按原样提供,不提供任何形式的保修。作者对如何使用此代码不承担任何责任。使用风险由您自行承担,并遵守WhatsApp的服务条款和所有适用法律。

许可证

麻省理工学院

目录标签

目录标签

TypeScriptClaude语音音频WhatsApp管理本地部署AI集成消息自动化语音转文字多实例安全

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

tsc

工具数量(toolCount,工具数)

16

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP