Skip to main content
Glama

WhatsApp Web MCP

by pnizer

WhatsApp 网页版 MCP

PR 检查

一个 Node.js 应用程序,通过模型上下文协议 (MCP) 将 WhatsApp Web 与 AI 模型连接起来。该项目提供了一个标准化接口,用于与 WhatsApp 进行编程交互,并通过 AI 驱动的工作流实现自动消息传递、联系人管理和群聊功能。

概述

WhatsApp Web MCP 通过以下方式实现 WhatsApp Web 与 AI 模型之间的无缝集成:

  • 通过模型上下文协议(MCP)创建标准化接口

  • 为 MCP 服务器提供对 WhatsApp 功能的访问

  • 通过 SSE 或命令模式提供灵活的部署选项

  • 支持直接 WhatsApp 客户端集成和基于 API 的连接

免责声明

重要提示:此工具仅用于测试目的,不应在生产环境中使用。

WhatsApp Web 项目的免责声明:

本项目与 WhatsApp 或其任何子公司或关联公司均无关联、关联、授权、认可或任何形式的官方联系。WhatsApp 官方网站为 whatsapp.com。“WhatsApp”及其相关名称、标志、徽标和图像均为其各自所有者的注册商标。此外,我们无法保证您使用此方法不会被屏蔽。WhatsApp 不允许在其平台上使用机器人或非官方客户端,因此此方法并非完全安全。

学习资源

要了解有关在实际场景中使用 WhatsApp Web MCP 的更多信息,请查看以下文章:

安装

  1. 克隆存储库:

    git clone https://github.com/pnizer/wweb-mcp.git cd wweb-mcp
  2. 全局安装或与 npx 一起使用:

    # Install globally npm install -g . # Or use with npx directly npx .
  3. 使用 Docker 构建:

    docker build . -t wweb-mcp:latest

配置

命令行选项

选项

别名

描述

选择

默认

--mode

-m

运行模式

mcp

whatsapp-api

mcp

--mcp-mode

-c

MCP连接方式

standalone

api

standalone

--transport

-t

MCP传输模式

sse

command

sse

--sse-port

-p

SSE 服务器端口

-

3002

--api-port

-

WhatsApp API 服务器的端口

-

3001

--auth-data-path

-a

存储身份验证数据的路径

-

.wwebjs_auth

--auth-strategy

-s

认证策略

local

none

local

--api-base-url

-b

使用 API 模式时 MCP 的 API 基 URL

-

http://localhost:3001/api

--api-key

-k

使用 API 模式时 WhatsApp Web REST API 的 API 密钥

-

''

API 密钥认证

在 API 模式下运行时,WhatsApp API 服务器需要使用 API 密钥进行身份验证。启动 WhatsApp API 服务器时,API 密钥会自动生成,并显示在日志中:

WhatsApp API key: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

要将 MCP 服务器连接到 WhatsApp API 服务器,您需要使用--api-key-k选项提供此 API 密钥:

npx wweb-mcp --mode mcp --mcp-mode api --api-base-url http://localhost:3001/api --api-key 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

API 密钥存储在身份验证数据目录中(由--auth-data-path指定),并在 WhatsApp API 服务器重启后仍然存在。

身份验证方法

本地身份验证(推荐)

  • 扫描一次二维码

  • 凭据在会话之间持续存在

  • 长期运行更稳定

无需身份验证

  • 默认方法

  • 每次启动时都需要扫描二维码

  • 适用于测试和开发

Webhook 配置

您可以通过在身份验证数据目录(由--auth-data-path指定)中创建webhook.json文件来配置 webhook 以接收传入的 WhatsApp 消息。

Webhook JSON 格式

{ "url": "https://your-webhook-endpoint.com/incoming", "authToken": "your-optional-authentication-token", "filters": { "allowedNumbers": ["+1234567890", "+0987654321"], "allowPrivate": true, "allowGroups": false } }

配置选项

选项

类型

描述

url

细绳

将发送消息数据的 webhook 端点 URL

authToken

字符串(可选)

身份验证令牌将作为 Bearer 令牌包含在授权标头中

filters.allowedNumbers

数组(可选)

接收短信的电话号码列表。如果提供,则只有来自这些号码的短信才会触发 webhook

filters.allowPrivate

布尔值(可选)

是否向 webhook 发送私信。默认值:

true

filters.allowGroups

布尔值(可选)

是否将群组消息发送到 webhook。默认值:

true

Webhook 有效负载

当收到消息并通过过滤器时,将向配置的 URL 发送一个 POST 请求,其中包含以下 JSON 有效负载:

{ "from": "+1234567890", "name": "Contact Name", "message": "Hello, world!", "isGroup": false, "timestamp": 1621234567890, "messageId": "ABCDEF1234567890" }

用法

运行模式

WhatsApp API 服务器

运行独立的 WhatsApp API 服务器,通过 REST 端点公开 WhatsApp 功能:

npx wweb-mcp --mode whatsapp-api --api-port 3001

MCP 服务器(独立)

运行直接连接到 WhatsApp Web 的 MCP 服务器:

npx wweb-mcp --mode mcp --mcp-mode standalone --transport sse --sse-port 3002

MCP 服务器(API 客户端)

运行连接到 WhatsApp API 服务器的 MCP 服务器:

# First, start the WhatsApp API server and note the API key from the logs npx wweb-mcp --mode whatsapp-api --api-port 3001 # Then, start the MCP server with the API key npx wweb-mcp --mode mcp --mcp-mode api --api-base-url http://localhost:3001/api --api-key YOUR_API_KEY --transport sse --sse-port 3002

可用工具

工具

描述

参数

get_status

检查 WhatsApp 客户端连接状态

没有任何

send_message

向 WhatsApp 联系人发送消息

number

:要发送的电话号码

message

:要发送的文本内容

search_contacts

按姓名或号码搜索联系人

query

:搜索词来查找联系人

get_messages

从特定聊天中检索消息

number

:用于获取消息的电话号码

limit

(可选):要检索的消息数量

get_chats

获取所有 WhatsApp 聊天列表

没有任何

create_group

创建新的 WhatsApp 群组

name

:群组名称

participants

:要添加的电话号码数组

add_participants_to_group

将参与者添加到现有组

groupId

:群组

participants

的 ID:要添加的电话号码数组

get_group_messages

从群组中检索消息

groupId

:群组 ID

limit

(可选):要检索的消息数量

send_group_message

向群组发送消息

groupId

:群组ID

message

:要发送的文本内容

search_groups

按名称、描述或成员名称搜索群组

query

:搜索词来查找群组

get_group_by_id

获取特定组的详细信息

groupId

:要获取的组的 ID

download_media_from_message

从消息中下载媒体

messageId

:包含要下载的媒体的消息的 ID

send_media_message

向 WhatsApp 联系人发送媒体消息

number

:要发送到的电话号码

source

:具有 URI 方案的媒体源(对 URL 使用

http://

https://

,对本地文件使用

file://

caption

(可选):媒体的文本标题

可用资源

资源 URI

描述

whatsapp://contacts

所有 WhatsApp 联系人列表

whatsapp://messages/{number}

来自特定聊天的消息

whatsapp://chats

所有 WhatsApp 聊天列表

whatsapp://groups

所有 WhatsApp 群组列表

whatsapp://groups/search

按名称、描述或成员名称搜索群组

whatsapp://groups/{groupId}/messages

来自特定群组的消息

REST API 端点

联系方式和信息

端点

方法

描述

参数

/api/status

得到

获取 WhatsApp 连接状态

没有任何

/api/contacts

得到

获取所有联系人

没有任何

/api/contacts/search

得到

搜索联系人

query

:搜索词

/api/chats

得到

获取所有聊天记录

没有任何

/api/messages/{number}

得到

从聊天中获取消息

limit

(查询):消息数量

/api/send

邮政

发送消息

number

:收件人

message

:信息内容

/api/send/media

邮政

发送媒体消息

number

:接收者

source

:具有 URI 方案的媒体源(对于 URL 使用

http://

https://

,对于本地文件使用

file://

caption

(可选):文本标题

/api/messages/{messageId}/media/download

邮政

从消息中下载媒体

没有任何

集团管理

端点

方法

描述

参数

/api/groups

得到

获取所有组

没有任何

/api/groups/search

得到

搜索群组

query

:搜索词

/api/groups/create

邮政

创建新组

name

:组名

participants

:数字数组

/api/groups/{groupId}

得到

获取特定组的详细信息

没有任何

/api/groups/{groupId}/messages

得到

从群组获取消息

limit

(查询):消息数量

/api/groups/{groupId}/participants/add

邮政

向群组添加成员

participants

:数字数组

/api/groups/send

邮政

向群组发送消息

groupId

:群组ID

message

:消息内容

人工智能集成

Claude 桌面集成

选项 1:使用 NPX
  1. 启动 WhatsApp API 服务器:

    npx wweb-mcp -m whatsapp-api -s local
  2. 使用 WhatsApp 移动应用扫描二维码

  3. 请注意日志中显示的 API 密钥:

    WhatsApp API key: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
  4. 将以下内容添加到您的 Claude Desktop 配置中:

    { "mcpServers": { "whatsapp": { "command": "npx", "args": [ "wweb-mcp", "-m", "mcp", "-s", "local", "-c", "api", "-t", "command", "--api-base-url", "http://localhost:3001/api", "--api-key", "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" ] } } }
选项 2:使用 Docker
  1. 在 Docker 中启动 WhatsApp API 服务器:

    docker run -i -p 3001:3001 -v wweb-mcp:/wwebjs_auth --rm wweb-mcp:latest -m whatsapp-api -s local -a /wwebjs_auth
  2. 使用 WhatsApp 移动应用扫描二维码

  3. 请注意日志中显示的 API 密钥:

    WhatsApp API key: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
  4. 将以下内容添加到您的 Claude Desktop 配置中:

    { "mcpServers": { "whatsapp": { "command": "docker", "args": [ "run", "-i", "--rm", "wweb-mcp:latest", "-m", "mcp", "-s", "local", "-c", "api", "-t", "command", "--api-base-url", "http://host.docker.internal:3001/api", "--api-key", "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" ] } } }
  5. 重启Claude桌面

  6. WhatsApp 功能将通过 Claude 的界面提供

建筑学

该项目的结构清晰,关注点分离:

成分

  1. WhatsAppService :与 WhatsApp 交互的核心业务逻辑

  2. WhatsAppApiClient :用于连接 WhatsApp API 的客户端

  3. API 路由器:REST API 的快速路由

  4. MCP 服务器:模型上下文协议实现

部署选项

  1. WhatsApp API 服务器:独立 REST API 服务器

  2. MCP 服务器(独立) :直接连接到 WhatsApp Web

  3. MCP 服务器(API 客户端) :连接到 WhatsApp API 服务器

该架构允许灵活的部署场景,包括:

  • 在不同的机器上运行 API 服务器和 MCP 服务器

  • 使用 MCP 服务器作为现有 API 服务器的客户端

  • 为了简单起见,在单台机器上运行所有内容

发展

项目结构

src/ ├── whatsapp-client.ts # WhatsApp Web client implementation ├── whatsapp-service.ts # Core business logic ├── whatsapp-api-client.ts # Client for the WhatsApp API ├── api.ts # REST API router ├── mcp-server.ts # MCP protocol implementation └── main.ts # Application entry point

从源代码构建

npm run build

测试

该项目使用 Jest 进行单元测试。要运行测试,请执行以下操作:

# Run all tests npm test # Run tests in watch mode during development npm run test:watch # Generate test coverage report npm run test:coverage

代码检查和格式化

该项目使用 ESLint 和 Prettier 来保证代码质量和格式:

# Run linter npm run lint # Fix linting issues automatically npm run lint:fix # Format code with Prettier npm run format # Validate code (lint + test) npm run validate

代码检查配置强制执行 TypeScript 最佳实践并在整个项目中保持一致的代码风格。

出版

该项目使用 GitHub Actions 自动发布到 npm。工作流程处理:

  1. 版本递增( patchminormajor

  2. Git 标记版本以“v”为前缀(例如,v0.2.1)

  3. 使用 GitHub secrets 发布到 npm

要发布新版本:

  1. 前往 GitHub 存储库的“Actions”选项卡

  2. 选择“发布包”工作流程

  3. 点击“运行工作流程”

  4. 选择版本增量类型(补丁、次要版本或主要版本)

  5. 点击“运行工作流程”开始发布过程

此工作流程需要在您的 GitHub 存储库中配置 NPM_TOKEN 机密。

故障排除

Claude 桌面集成问题

  • 在 Claude 上,无法以命令独立模式启动 wweb-mcp,因为 Claude 会多次打开多个进程,并且每个 wweb-mcp 都需要打开一个 Puppeteer 会话,而这些会话无法共享相同的 WhatsApp 身份验证。由于此限制,我们将应用拆分为 MCP 和 API 模式,以便与 Claude 正确集成。

特征

  • 发送和接收消息

  • 发送媒体信息(仅限图像)

  • 从消息中下载媒体(图像、音频、文档)

  • 群聊管理

  • 联系人管理和搜索

  • 消息历史记录检索

即将推出的功能

  • 支持发送所有媒体文件类型(视频、音频、文档)

  • 增强常见场景的消息模板

  • 高级群组管理功能

  • 联系人管理(添加/删除联系人)

  • 增强错误处理和恢复

贡献

  1. 分叉存储库

  2. 创建功能分支

  3. 提交你的更改

  4. 推送到你的分支

  5. 创建拉取请求

请确保您的 PR:

  • 遵循现有的代码风格

  • 包括适当的测试

  • 根据需要更新文档

  • 详细描述变化

依赖项

WhatsApp Web.js

本项目使用whatsapp-web.js ,这是一个非官方的 WhatsApp Web JavaScript 客户端库,可通过 WhatsApp Web 浏览器应用进行连接。更多信息,请访问whatsapp-web.js GitHub 代码库

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。

日志记录

WhatsApp Web MCP 包含一个由 Winston 构建的强大日志系统。该日志系统提供以下功能:

  • 多个日志级别(错误、警告、信息、http、调试)

  • 带有彩色日志的控制台输出

  • API 端点的 HTTP 请求/响应日志记录

  • 结构化错误处理

  • 环境感知日志级别(开发与生产)

  • 在 MCP 命令模式下运行时,所有日志都定向到 stderr

日志级别

该应用程序支持以下日志级别(按详细程度排序):

  1. 错误- 导致应用程序无法运行的严重错误

  2. 警告- 不会停止应用程序但需要注意的警告

  3. 信息- 有关应用程序状态和事件的一般信息

  4. http - HTTP 请求/响应日志记录

  5. debug - 详细的调试信息

配置日志级别

您可以在启动应用程序时使用--log-level-l标志配置日志级别:

npm start -- --log-level=debug

或者使用全局安装时:

wweb-mcp --log-level=debug

命令模式日志记录

在 MCP 命令模式 ( --mode mcp --transport command ) 下运行时,所有日志都会定向到 stderr。这对于命令行工具来说非常重要,因为 stdout 可能用于数据输出,而 stderr 则用于日志记录和诊断。这确保了通过 stdout 进行的 MCP 协议通信不会受到日志消息的干扰。

测试环境

在测试环境中(当NODE_ENV=test或使用 Jest 运行时),记录器会自动调整其行为以适合测试环境。

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

一个 Node.js 应用程序,通过模型上下文协议将 WhatsApp Web 与 AI 模型连接起来,通过 AI 驱动的工作流程实现自动消息传递、联系人管理和群聊功能。

  1. 概述
    1. 免责声明
      1. 学习资源
        1. 安装
          1. 配置
            1. 命令行选项
            2. API 密钥认证
            3. 身份验证方法
            4. Webhook 配置
          2. 用法
            1. 运行模式
            2. 可用工具
            3. 可用资源
            4. REST API 端点
            5. 人工智能集成
          3. 建筑学
            1. 成分
            2. 部署选项
          4. 发展
            1. 项目结构
            2. 从源代码构建
            3. 测试
            4. 代码检查和格式化
            5. 出版
          5. 故障排除
            1. Claude 桌面集成问题
          6. 特征
            1. 即将推出的功能
              1. 贡献
                1. 依赖项
                  1. WhatsApp Web.js
                2. 执照
                  1. 日志记录
                    1. 日志级别
                    2. 配置日志级别
                    3. 命令模式日志记录
                    4. 测试环境

                  Related MCP Servers

                  • -
                    security
                    A
                    license
                    -
                    quality
                    A bridge that connects WhatsApp Web to AI models using the Model Context Protocol, enabling Claude and other AI systems to interact with WhatsApp through a standardized interface.
                    Last updated -
                    1
                    6
                    MIT License
                    • Linux
                    • Apple
                  • A
                    security
                    A
                    license
                    A
                    quality
                    A Model Context Protocol server that enables Claude to interact with WhatsApp through the Evolution API, allowing for message sending, contact management, group operations, and WhatsApp instance administration.
                    Last updated -
                    1
                    29
                    20
                    MIT License
                    • Apple
                  • A
                    security
                    F
                    license
                    A
                    quality
                    A Node.js application that enables programmatic interaction with WhatsApp desktop on macOS, allowing users to send messages and check WhatsApp status through AppleScript automation without direct UI interaction.
                    Last updated -
                    3
                    4
                    • Apple
                  • A
                    security
                    F
                    license
                    A
                    quality
                    A Model Context Protocol server that connects your personal WhatsApp account to AI agents like Claude, enabling them to search messages, view contacts, retrieve chat history, and send messages via WhatsApp.
                    Last updated -
                    7
                    37
                    • Apple
                    • Linux

                  View all related MCP servers

                  MCP directory API

                  We provide all the information about MCP servers via our MCP API.

                  curl -X GET 'https://glama.ai/api/mcp/v1/servers/pnizer/wweb-mcp'

                  If you have feedback or need assistance with the MCP directory API, please join our Discord server