项目简介 该项目是一个WhatsApp MCP服务器实现,它允许Model Context Protocol(MCP)兼容的LLM客户端访问WhatsApp数据(如聊天历史、联系人)并发送消息。它由一个负责与WhatsApp API通信、存储数据的Go语言桥接程序和一个将这些功能封装为MCP工具的Python服务器程序组成。
主要功能点
- 连接和维护与WhatsApp账户的连接(需要首次扫描二维码登录)。
- 将WhatsApp聊天和消息历史同步并存储在本地数据库中。
- 允许LLM通过调用公开的功能:
- 搜索WhatsApp联系人。
- 检索特定聊天或联系人的消息历史,并可按日期、发送者或内容筛选。
- 获取特定消息的上下文(前几条和后几条消息)。
- 列出和查询有关聊天的信息。
- 向指定的联系人或群组发送文本消息。
安装步骤
- 准备环境: 确保您的系统已安装Go语言环境和Python 3。
- 克隆仓库: 将项目仓库克隆到您的本地机器。
git clone https://github.com/Gh4stware/whatsapp-mcp.git cd whatsapp-mcp - 安装Go桥接: 进入 'whatsapp-bridge' 目录,编译Go程序。
这将在当前目录下生成一个可执行文件(在Linux/macOS上通常是 'main',在Windows上是 'main.exe')。cd whatsapp-bridge go build - 安装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 - 启动Go桥接: 返回 'whatsapp-bridge' 目录,运行编译好的Go程序。
首次运行时,它会生成一个二维码。请使用您的WhatsApp手机应用扫描此二维码以链接设备。程序将连接WhatsApp并开始同步历史记录。Go程序需要保持运行。cd ../whatsapp-bridge # 或者直接运行完整路径 ./main # 或 main.exe on Windows - 启动Python MCP服务器: 在Go桥接程序成功连接并运行后,进入 'whatsapp-mcp-server' 目录,运行Python MCP服务器脚本。
Python脚本将作为MCP服务器启动,通过标准输入/输出与MCP客户端通信。cd ../whatsapp-mcp-server # 或者直接运行完整路径 python main.py
服务器配置 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调用与服务器交互,无需用户直接操作命令行或代码。
信息
分类
通信与社交