WhatsApp AI助手协议服务器

一个基于WhatsApp HTTP API平台的模型上下文协议服务器,支持AI助手通过MCP协议与WhatsApp交互。

  • by seejux
  • TypeScript
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 seejux/waha-mcp

使用说明

WAHA MCP服务器

模型上下文协议(MCP)服务器,使人工智能助手能够通过WAHA(WhatsApp HTTP API)平台与WhatsApp进行交互。

特性

  • 聊天管理:获取最近WhatsApp聊天的概述
  • 消息操作:检索、发送消息并将其标记为已读
  • MCP资源:通过缓存将WhatsApp数据作为上下文感知资源访问
  • MCP集成:与MCP客户端完全兼容(stdio传输)

安装

  1. 克隆此仓库

  2. 安装依赖项:

    npm install
    
  3. 配置WAHA API连接:

    cp .env.example .env
    

    然后编辑 .env 使用您的WAHA实例详细信息。

配置

中所需的环境变量 .env:

  • WAHA_BASE_URL:您的WAHA服务器URL(例如。, http://localhost:3000)
  • WAHA_API_KEY:用于身份验证的WAHA API密钥
  • WAHA_SESSION:WhatsApp会话名称(默认值: default)

发展

构建项目

npm run build

在开发模式下运行并自动重新加载

npm run dev

使用MCP检查员进行测试

MCP检查器是一个基于网络的工具,用于交互式测试您的MCP服务器:

npm run inspector

这将:

  1. 启动WAHA MCP服务器
  2. 启动MCP检查器web UI
  3. 自动打开浏览器

使用检查器:

  • 交互式测试所有工具
  • 查看工具架构
  • 查看请求/响应数据
  • 调试工具调用

生产运行

npm start

使用Claude Desktop

将此添加到您的Claude Desktop MCP配置中:

窗户:

{
  "mcpServers": {
    "waha": {
      "command": "node",
      "args": ["C:\\Users\\YourUsername\\path\\to\\waha\\dist\\index.js"],
      "env": {
        "WAHA_BASE_URL": "http://localhost:3000",
        "WAHA_API_KEY": "your-api-key-here",
        "WAHA_SESSION": "default"
      }
    }
  }
}

Mac/Linux:

{
  "mcpServers": {
    "waha": {
      "command": "node",
      "args": ["/absolute/path/to/waha-mcp-server/dist/index.js"],
      "env": {
        "WAHA_BASE_URL": "http://localhost:3000",
        "WAHA_API_KEY": "your-api-key-here",
        "WAHA_SESSION": "default"
      }
    }
  }
}

注: Windows用户应使用双反斜杠(\\)在道路上。

可用工具

聊天管理

工具 说明
waha_get_chats 获取最近WhatsApp聊天的概述
waha_get_messages 从特定聊天中获取消息
waha_mark_chat_read 将聊天中的消息标记为已读
waha_mark_chat_unread 将聊天记录标记为未读
waha_clear_chat_messages 清除聊天中的所有消息(破坏性)
waha_delete_chat 完全删除聊天(破坏性)
waha_archive_chat 存档聊天记录
waha_unarchive_chat 存档聊天记录
waha_get_chat_picture 获取聊天的个人资料图片URL

消息传递

工具 说明
waha_send_message 向聊天室发送短信
waha_send_media 发送图像、视频或文档
waha_send_audio 发送音频/语音信息
waha_send_location 发送位置坐标
waha_send_contact 使用vCard格式发送联系人卡片
waha_edit_message 编辑已发送的消息(仅限自己的消息)
waha_delete_message 删除特定消息(破坏性)
waha_pin_message 在聊天中固定消息
waha_unpin_message 在聊天中取消发送消息
waha_react_to_message 添加或删除表情符号反应
waha_star_message 标记或取消标记消息

群组

工具 说明
waha_get_groups 列出所有具有筛选和分页功能的组
waha_get_groups_count 获取组总数
waha_get_group_info 获取特定组的详细信息
waha_get_group_picture 获取群组资料图片URL
waha_set_group_picture 设置或更新组配置文件图片
waha_delete_group_picture 删除组配置文件图片
waha_create_group 创建新的WhatsApp群组
waha_update_group_subject 更改组名/主题
waha_update_group_description 更新组描述
waha_leave_group 离开群组
waha_get_group_participants 列出组中的所有成员
waha_add_group_participants 将成员添加到组(需要管理员)
waha_remove_group_participants 从组中删除成员(需要管理员)
waha_promote_group_admin 将参与者提升为管理员(需要管理员)
waha_demote_group_admin 删除管理员权限(需要管理员权限)
waha_get_group_invite_code 获取群组邀请链接
waha_revoke_group_invite_code 撤销邀请链接并生成新的邀请链接(需要管理员)
waha_join_group 使用邀请码/链接加入群
waha_get_group_join_info 无需加入即可从邀请链接获取群信息
waha_set_group_messages_admin_only 切换仅管理员消息(需要管理员)
waha_set_group_info_admin_only 切换仅管理员组信息编辑(需要管理员)

联系人

工具 说明
waha_get_contact 通过ID获取联系信息
waha_get_all_contacts 按页码列出所有联系人
waha_check_contact_exists 检查WhatsApp上是否注册了电话号码
waha_get_contact_about 获取联系人的关于/状态文本
waha_get_contact_profile_picture 获取联系人的个人资料图片URL
waha_block_contact 阻止联系人
waha_unblock_contact 解除联系人锁定

存在

工具 说明
waha_get_presence 获取聊天的在线/离线/键入状态
waha_subscribe_presence 订阅状态更新进行聊天
waha_get_all_presence 获取所有已订阅的状态信息
waha_set_presence 设置自己的在线状态(在线、离线、打字等)

MCP资源

除了工具,服务器还公开 MCP资源 对于上下文感知数据访问:

可用资源

  • waha://chats/overview -最近的聊天记录和最新消息预览
  • waha://chat/{chatId}/messages -特定聊天的消息历史记录

资源支持用于过滤和分页的查询参数。数据缓存5分钟以提高性能。

项目结构

waha-mcp-server/
├── src/
│   ├── index.ts              # Server entry point
│   ├── config.ts             # Configuration management
│   ├── types/                # TypeScript type definitions
│   ├── tools/                # MCP tool implementations
│   ├── resources/            # MCP resource implementations
│   │   ├── base/             # Base resource class
│   │   ├── implementations/  # Concrete resources
│   │   ├── cache/            # LRU caching layer
│   │   └── manager/          # Resource registry
│   └── client/               # WAHA API client
├── dist/                     # Built JavaScript output
├── .env                      # Your configuration (not in git)
├── .env.example              # Configuration template
├── package.json
└── tsconfig.json

聊天ID格式

WhatsApp聊天ID有特定的格式:

  • 个人聊天: <phone_number>@c.us (例如。, 1234567890@c.us)
  • 群聊: <group_id>@g.us (例如。, 123456789012345678@g.us)

您可以通过以下方式获取聊天ID waha_get_chats 工具第一。

许可证

ISC