mcpField
W
Whatsapp Business Mcp

Whatsapp Business Mcp

本地服务
github.com/nakulben通信协作430 周前更新

关于 Whatsapp Business Mcp

面向 MCP 客户端的 WhatsApp Business 服务,可通过 Meta Cloud API 管理模板并发送模板消息,涵盖模板校验及完整生命周期操作。

主要功能

  1. 01校验模板负载
  2. 02创建、列出、查看和删除模板
  3. 03检查模板审批状态
  4. 04向单个或多个号码发送模板消息
  5. 05支持 stdio、SSE 和 Streamable HTTP

适用场景

  1. 01提交给 Meta 前校验模板
  2. 02创建并跟踪 WhatsApp Business 模板
  3. 03向客户发送已批准的模板
  4. 04向多个收件人群发模板消息

MCP 相关

向 MCP 客户端提供八种 WhatsApp Business 模板与消息工具,支持 stdio、SSE 和 Streamable HTTP 传输方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"nakulben-whatsapp": {
"command": "uvx",
"args": [
"jina-whatsapp-mcp"
],
"env": {
"META_ACCESS_TOKEN": "<META_ACCESS_TOKEN>",
"META_WABA_ID": "<META_WABA_ID>",
"META_PHONE_NUMBER_ID": "<META_PHONE_NUMBER_ID>",
"META_APP_ID": "<META_APP_ID>",
"META_API_VERSION": "<META_API_VERSION>"
}
}
}
}
启动命令uvx jina-whatsapp-mcp
需要配置的环境变量
META_ACCESS_TOKEN密钥Meta API access token with whatsapp_business_messaging and whatsapp_business_management permissions
META_WABA_IDWhatsApp Business Account ID
META_PHONE_NUMBER_IDWhatsApp phone number ID
META_APP_IDMeta app ID (for media uploads)
META_API_VERSIONMeta Graph API version (defaults to v24.0)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypijina-whatsapp-mcp0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

WhatsApp MCP 服务

借助 Meta Cloud API,通过 Claude、ChatGPT、Cursor、VS Code Copilot 或任何兼容 MCP 的客户端管理 WhatsApp Business 模板并发送消息。

兼容 MCP Meta API v24.0 MIT 许可证 Python 3.10+

功能

工具描述
validate_template在提交给 Meta 之前验证模板负载
create_template提交模板以供 Meta 审批
list_templates列出模板,可选筛选条件(状态、类别、名称)
get_template_detail根据 ID 获取模板的完整详情
check_template_status快速检查模板状态
delete_template按名称删除模板
send_template_message向电话号码发送已批准的模板
send_bulk_template_messages向多个电话号码发送已批准的模板

8 个工具涵盖完整的模板生命周期:创建 → 验证 → 审批 → 发送。

快速开始

1. 克隆并安装
git clone https://github.com/nakulben/whatsapp-mcp.git
cd whatsapp-mcp
python -m venv venv
source venv/bin/activate   # Windows: venv\Scripts\activate
pip install -r requirements.txt
2. 配置凭据
cp .env.example .env
META_ACCESS_TOKEN=your_access_token
META_WABA_ID=your_whatsapp_business_account_id
META_PHONE_NUMBER_ID=your_phone_number_id
META_APP_ID=your_app_id              # Optional, for media uploads
META_API_VERSION=v24.0               # Optional, defaults to v24.0

所有模式(本地 stdio 和托管远程模式)都会使用环境变量。

如何获取这些信息? 前往 Meta for Developers,创建或选择你的应用,然后进入 WhatsApp > API Setup。

3. 连接到 MCP 客户端

该服务支持 3 种传输模式:

传输方式命令使用者
stdio(默认)python -m whatsapp_mcpClaude Desktop、Cursor、VS Code、Windsurf
ssepython -m whatsapp_mcp --transport sse旧版远程客户端
streamable-httppython -m whatsapp_mcp --transport streamable-httpClaude.ai、ChatGPT、较新的 MCP 客户端

对于 HTTP 传输方式,你可以自定义主机/端口:

python -m whatsapp_mcp --transport streamable-http --host 0.0.0.0 --port 8000

Claude Desktop(stdio — 本地)

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "whatsapp": {
      "command": "/path/to/whatsapp-mcp/venv/bin/python",
      "args": ["-m", "whatsapp_mcp"],
      "env": {
        "META_ACCESS_TOKEN": "your_access_token",
        "META_WABA_ID": "your_waba_id",
        "META_PHONE_NUMBER_ID": "your_phone_number_id",
        "META_APP_ID": "your_app_id"
      }
    }
  }
}
Claude.ai Web(远程 — streamable-http)

Claude.ai 通过自定义连接器连接到远程 MCP 服务。连接由 Anthropic 的云服务器发起,而不是由你的计算机发起。

  1. 配置好环境变量后,通过 HTTPS 托管该服务:
    python -m whatsapp_mcp --transport streamable-http --host 0.0.0.0 --port 8001
    
  2. 通过 nginx、Caddy 或隧道(ngrok、Cloudflare Tunnel)为其配置 HTTPS
  3. 在 Claude.ai 中:前往 Customize > Connectors → 添加自定义连接器
  4. 输入你的服务 URL(例如 https://your-domain.com/mcp/)
  5. Claude 支持无需身份验证或基于 OAuth 的服务。最简单的设置方式是将身份验证留空——服务将使用你在第 1 步配置的环境变量。

注意: Claude.ai 不支持自定义请求头。必须通过环境变量预先为服务配置 Meta 凭据。每个托管服务对应一个 WhatsApp Business Account。

nginx 配置示例
location /mcp/ {
    proxy_pass http://127.0.0.1:8001/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_read_timeout 86400;
}
ChatGPT(远程 — Responses API)

ChatGPT 通过 Responses API 支持远程 MCP 服务。它同时支持 Streamable HTTP 和 SSE 传输方式。

选项 1 — 使用环境变量预先配置服务(最简单):

from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
    model="gpt-4.1",
    tools=[{
        "type": "mcp",
        "server_label": "whatsapp",
        "server_url": "https://your-domain.com/mcp/",
        "require_approval": "never",
    }],
    input="List all my approved templates",
)

选项 2 — 通过 Bearer 令牌提供单次请求凭据:

将 Meta 凭据编码为 base64 JSON,并在 authorization 字段中传递。 OpenAI 会将此值作为 Authorization 请求头转发到你的 MCP 服务:

# Create the token
echo -n '{"access_token":"EAA...","phone_number_id":"123","waba_id":"456"}' | base64
# Output: eyJhY2Nlc3NfdG9rZW4iOiJFQUEuLi4iLCJwaG9uZV9udW1iZXJfaWQiOiIxMjMiLCJ3YWJhX2lkIjoiNDU2In0=
resp = client.responses.create(
    model="gpt-4.1",
    tools=[{
        "type": "mcp",
        "server_label": "whatsapp",
        "server_url": "https://your-domain.com/mcp/",
        "authorization": "eyJhY2Nlc3NfdG9rZW4iOiJFQUEuLi4iLCJwaG9uZV9udW1iZXJfaWQiOiIxMjMiLCJ3YWJhX2lkIjoiNDU2In0=",
        "require_approval": "never",
    }],
    input="List all my approved templates",
)

注意: ChatGPT 仅支持远程 MCP 服务(不支持本地 stdio)。你的服务必须可通过 HTTPS 从公网访问。

Cursor(stdio)

在项目的 .cursor/mcp.json 中添加:

{
  "mcpServers": {
    "whatsapp": {
      "command": "/path/to/whatsapp-mcp/venv/bin/python",
      "args": ["-m", "whatsapp_mcp"]
    }
  }
}
VS Code Copilot(stdio)

添加到 .vscode/mcp.json:

{
  "servers": {
    "whatsapp": {
      "type": "stdio",
      "command": "/path/to/whatsapp-mcp/venv/bin/python",
      "args": ["-m", "whatsapp_mcp"]
    }
  }
}
按请求提供凭据(直接 HTTP / curl / 脚本)

对于程序化访问或自定义 MCP 客户端,你可以按请求传递凭据,而不必依赖服务端环境变量。支持两种方式:

方法 1 — Bearer 令牌(推荐):

将包含 Meta 凭据的 JSON 对象进行 Base64 编码:

# Create the token
TOKEN=$(echo -n '{"access_token":"EAA...","phone_number_id":"123","waba_id":"456"}' | base64)

# Use it
curl -H "Authorization: Bearer $TOKEN" https://your-server.com/mcp/ ...

必填字段:access_token、phone_number_id、waba_id。可选字段:app_id、api_version。

方法 2 — X-Meta- 标头:*

标头必填描述
X-Meta-Access-Token是你的 Meta 访问令牌
X-Meta-Phone-Number-Id是你的 WhatsApp 电话号码 ID
X-Meta-Business-Account-Id是你的 WhatsApp Business Account ID
X-Meta-App-Id否你的 Meta 应用 ID(用于上传媒体)
X-Meta-Api-Version否API 版本(默认为 v24.0)

如果既没有 Bearer 令牌,也没有 X-Meta-* 标头,服务端将回退到使用环境变量。

使用示例

连接后,直接与 AI 助手对话:

“创建一个名为 summer_sale 的营销模板,包含标题图片、关于 5 折优惠的正文,以及一个‘立即选购’按钮”

“列出我所有已批准的模板”

“将 order_confirmation 模板发送给 +919876543210,订单号为 ORD-456”

“在提交前验证此模板:……”

“检查模板 ID 123456789 的状态”

支持的模板类型

Meta 的 API 有 2 种模板类别(不包括 Authentication)。每个类别中的模板可以有不同的结构变体,每种变体都有自己的组件布局和验证规则。

营销模板
结构变体创建发送关键组件
文本 / 图片 / 视频 / 文档✅✅标题(可选)+ 正文 + 页脚 + 按钮
轮播✅✅卡片,每张卡片包含标题、正文和按钮
商品目录✅✅正文 + CATALOG 按钮
限时优惠(LTO)✅✅正文 + limited_time_offer 组件 + 复制代码按钮
优惠码✅✅正文 + copy_code 按钮
多商品消息(MPM)✅✅正文 + 带分区的 product_list 操作
单商品消息(SPM)✅✅正文 + product 操作
商品卡片轮播✅✅正文 + 带按钮的商品卡片
通话权限✅—正文 + call_permission 按钮
实用模板
结构变体创建发送关键组件
文本 / 图片 / 视频 / 文档✅✅标题(可选)+ 正文 + 页脚 + 按钮
订单详情✅✅正文 + 带支付负载的 order_details 按钮
订单状态✅✅正文 + 订单状态参数

**路由方式:**调用 create_template 时,服务端会检查组件以自动检测结构变体(例如,存在 cards[] → 轮播,CATALOG 按钮 → 商品目录),并应用相应的验证器。你只需传入 category: "MARKETING" 或 "UTILITY"——变体将根据组件结构确定。

运行测试

pip install pytest pytest-asyncio
python -m pytest tests/ -v

项目结构

whatsapp-mcp/
├── whatsapp_mcp/
│   ├── __init__.py          # Package version
│   ├── __main__.py          # Entry point (python -m whatsapp_mcp)
│   ├── config.py            # Environment config loader
│   ├── meta_api.py          # Async Meta Graph API client
│   ├── middleware.py         # ASGI middleware for per-request credentials
│   ├── server.py            # MCP server with 8 tools
│   ├── models/              # Pydantic data models
│   │   ├── body.py          # Body component
│   │   ├── header.py        # Header component (text/image/video/document)
│   │   ├── footer.py        # Footer component
│   │   ├── buttons.py       # Button types (URL, phone, quick reply, etc.)
│   │   ├── buttons_component.py
│   │   ├── enums.py         # Template categories, types, formats
│   │   └── order_models.py  # Order-related models (checkout templates)
│   └── validators/
│       ├── create/          # 12 template creation validators
│       └── send/            # 11 template send validators
├── tests/
│   ├── test_validators.py   # Validator tests
│   ├── test_meta_api.py     # API client tests (mocked HTTP)
│   └── test_tools.py        # MCP tool registration & helper tests
├── .env.example
├── requirements.txt
├── LICENSE                  # MIT
└── ROADMAP.md

要求

  • Python 3.10+
  • Meta WhatsApp Business Account
  • 具有 whatsapp_business_messaging 和 whatsapp_business_management 权限的 System User 访问令牌
依赖项
软件包用途
mcpModel Context Protocol SDK
httpx用于 Meta API 的异步 HTTP 客户端
pydantic负载验证
python-dotenv环境配置

路线图

请参阅 ROADMAP.md 了解计划中的功能。

许可证

MIT — 请参阅 LICENSE。


由 Jina Connect 构建——WhatsApp Business CX 平台。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。