项目简介 该项目是一个WhatsApp MCP服务器实现,它允许Model Context Protocol(MCP)兼容的LLM客户端访问WhatsApp数据(如聊天历史、联系人)并发送消息。它由一个负责与WhatsApp API通信、存储数据的Go语言桥接程序和一个将这些功能封装为MCP工具的Python服务器程序组成。

主要功能点

  • 连接和维护与WhatsApp账户的连接(需要首次扫描二维码登录)。
  • 将WhatsApp聊天和消息历史同步并存储在本地数据库中。
  • 允许LLM通过调用公开的功能:
    • 搜索WhatsApp联系人。
    • 检索特定聊天或联系人的消息历史,并可按日期、发送者或内容筛选。
    • 获取特定消息的上下文(前几条和后几条消息)。
    • 列出和查询有关聊天的信息。
    • 向指定的联系人或群组发送文本消息。

安装步骤

  1. 准备环境: 确保您的系统已安装Go语言环境和Python 3。
  2. 克隆仓库: 将项目仓库克隆到您的本地机器。
    git clone https://github.com/Gh4stware/whatsapp-mcp.git
    cd whatsapp-mcp
  3. 安装Go桥接: 进入 'whatsapp-bridge' 目录,编译Go程序。
    cd whatsapp-bridge
    go build
    这将在当前目录下生成一个可执行文件(在Linux/macOS上通常是 'main',在Windows上是 'main.exe')。
  4. 安装Python依赖: 进入 'whatsapp-mcp-server' 目录,安装所需的Python库('fastmcp', 'requests', 'dataclasses-json' 等,具体请参考项目实际依赖,通常在 'requirements.txt' 中列出,如果文件不存在则可能需要手动安装 'fastmcp' 和 'requests')。
    cd ../whatsapp-mcp-server
    # 如果有 requirements.txt 文件
    # pip install -r requirements.txt
    # 如果没有,手动安装核心依赖:
    pip install fastmcp requests
  5. 启动Go桥接: 返回 'whatsapp-bridge' 目录,运行编译好的Go程序。
    cd ../whatsapp-bridge # 或者直接运行完整路径
    ./main # 或 main.exe on Windows
    首次运行时,它会生成一个二维码。请使用您的WhatsApp手机应用扫描此二维码以链接设备。程序将连接WhatsApp并开始同步历史记录。Go程序需要保持运行。
  6. 启动Python MCP服务器: 在Go桥接程序成功连接并运行后,进入 'whatsapp-mcp-server' 目录,运行Python MCP服务器脚本。
    cd ../whatsapp-mcp-server # 或者直接运行完整路径
    python main.py
    Python脚本将作为MCP服务器启动,通过标准输入/输出与MCP客户端通信。

服务器配置 MCP客户端(如支持MCP的LLM推理引擎)需要配置启动此MCP服务器进程的方式。典型的配置信息如下:

{
  "name": "WhatsApp Access",
  "command": "/path/to/your/repo/whatsapp-mcp/whatsapp-mcp-server/main.py",
  "args": [],
  "description": "Provides WhatsApp data and functions (messaging, history) via MCP."
}
  • 'name': 服务器在客户端界面显示的名称。
  • 'command': Python MCP服务器主脚本 ('main.py') 的绝对路径。请替换为您系统中实际的文件路径。请确保Go桥接程序 ('whatsapp-bridge/main') 在此Python脚本启动前已成功运行并保持运行状态。
  • 'args': 传递给Python脚本的命令行参数列表(当前项目不需要额外参数)。
  • 'description': 对该服务器功能的简要描述。

基本使用方法 当您在MCP客户端中成功配置并连接到此WhatsApp MCP服务器后,客户端(尤其是LLM)将能够“发现”服务器公开的各种功能。LLM可以理解并调用这些功能来执行任务,例如:

  • 当用户提到某个联系人名字时,LLM可以调用 'search_contacts' 工具查找对应的WhatsApp联系人信息。
  • 当用户询问“我上次和[联系人名字]聊了什么?”时,LLM可以调用 'list_messages' 或 'get_last_interaction' 工具来检索相关消息历史。
  • 当用户要求“给[联系人名字]发送一条消息说‘...’”时,LLM可以调用 'send_message' 工具,将收件人和消息内容作为参数传递,从而通过WhatsApp发送消息。
  • 通过组合使用 'list_chats' 和 'list_messages',LLM可以探索用户的聊天记录。

LLM通过标准的MCP JSON-RPC调用与服务器交互,无需用户直接操作命令行或代码。

信息

分类

通信与社交