MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

MCP server connecting to WhatsApp via Baileys – read group messages, stats, and send messages from Claude Code

Created 2/9/2026
Updated about 9 hours ago
Repository documentation and setup instructions

whatsapp-mcp

An MCP (Model Context Protocol) server that connects Claude to WhatsApp. Read messages, search conversations, get group stats, and send messages — all through Claude Code or any MCP client.

Built on Baileys (WhatsApp Web API) and the MCP SDK.

Features

  • Read group messages with flexible time ranges (24h, 7d, 2w, or ISO dates)
  • Full-text search across all messages, optionally filtered by group
  • Group stats — activity breakdown, top contributors, hourly/daily patterns, media counts
  • Per-member stats — message counts, media usage, active hours
  • Send messages to any WhatsApp group
  • History sync — request older messages from WhatsApp servers
  • Persistent store — messages are saved to disk and survive restarts

Quick Setup

1. Install dependencies

npm install

2. Pair WhatsApp (first time only)

npm run dev

A QR code will appear in your terminal. Scan it with WhatsApp on your phone (Settings > Linked Devices > Link a Device). Auth state is saved in auth_info/, so you only need to do this once. You can stop the process after pairing.

3. Configure MCP

Add to your Claude Code MCP config (.mcp.json in your project or ~/.claude.json):

{
  "mcpServers": {
    "whatsapp": {
      "type": "stdio",
      "command": "npx",
      "args": ["tsx", "/path/to/whatsapp-mcp/src/index.ts"]
    }
  }
}

Claude Code will start the server automatically when it needs WhatsApp tools — you don't need to run it separately.

Available Tools

| Tool | Description | |------|-------------| | connection_status | Check WhatsApp connection state, store size, group count | | list_groups | List all groups with name, JID, participant count, message count | | get_group_info | Group details: members, admins, description, creation date | | fetch_messages | Get messages from a group with time range filtering | | search_messages | Full-text search across messages, optionally scoped to a group | | get_group_stats | Activity stats: message counts, top contributors, hourly/daily patterns | | get_member_stats | Per-member breakdown: messages, media, active hours | | request_history | Request older messages from WhatsApp servers (async) | | send_message | Send a text message to a group |

Architecture

src/
├── index.ts          # Entry point — starts WhatsApp + MCP server
├── whatsapp.ts       # Baileys connection, message store, history sync
├── mcp-server.ts     # MCP tool registrations
├── store.ts          # Message querying and stats computation
└── tools/
    ├── groups.ts     # list_groups, get_group_info
    ├── messages.ts   # fetch_messages, search_messages
    ├── stats.ts      # get_group_stats, get_member_stats
    └── send.ts       # send_message

Messages are stored in-memory and flushed to store/message-store.json every 30 seconds. History sync messages from WhatsApp are automatically ingested on connection.

Scripts

  • scripts/cron-summary.sh — Daily summary cron job. Uses Claude CLI to fetch and summarize all active group conversations.
  • scripts/find-group.ts — Utility to look up a group JID by name.

Skills

The .claude/skills/ directory contains reusable Claude Code skills:

  • summarize-group — Fetches messages and stats for a group, then produces a concise summary of activity. Usage: /summarize-group [group name] [time range]

Development

npm run dev      # Run with tsx (hot reload)
npm run build    # Compile TypeScript
npm run start    # Run compiled output

License

MIT

Quick Setup
Installation guide for this server

Install Package (if required)

npx @modelcontextprotocol/server-whatsapp-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "kotevcode-whatsapp-mcp": { "command": "npx", "args": [ "kotevcode-whatsapp-mcp" ] } } }