Give AI assistants access to your WhatsApp conversations
Built with whatsmeow and mcp-go
Features β’ Quick Start β’ Architecture β’ MCP Integration
A Model Context Protocol (MCP) server that bridges WhatsApp and AI assistants like Claude. It exposes your WhatsApp messages through standardized MCP tools, prompts, and resources - allowing AI to read, search, and send messages on your behalf.
The Vision: Let AI handle your WhatsApp conversations intelligently, with full context and natural language understanding.
You: "Summarize what JoΓ£o said about the budget meeting"
AI: *searches all your chats* β "JoΓ£o mentioned in the Tech Team group..."
You: "Reply to Maria's last message and schedule lunch"
AI: *reads context, sends reply* β "Sent! I've proposed Thursday at noon"
- π± Full WhatsApp Integration - Connect to WhatsApp Web using your existing account
- πΎ Local-First Storage - All messages stored in SQLite, synced in real-time
- π Powerful Search - Pattern matching, cross-chat queries, sender filtering
- β±οΈ Timezone Support - Messages displayed in your local timezone
- π₯ On-Demand Loading - Fetch older messages from WhatsApp servers as needed
- π Secure by Design - API key authentication, local data storage, HTTPS ready
This server implements the full MCP specification with:
- 7 Tools for WhatsApp operations
- 4 Prompts for common workflows
- 4 Resources for interactive guides
- Server Instructions for optimal AI interactions
| Tool | Purpose | Highlights |
|---|---|---|
list_chats |
Browse conversations | Ordered by recent activity |
get_chat_messages |
Read specific chat | Pagination, sender filtering |
search_messages |
Search across all chats | Pattern matching, wildcards |
find_chat |
Locate chat by name | Fuzzy search support |
send_message |
Send WhatsApp messages | To any chat or group |
load_more_messages |
Fetch older history | On-demand from servers |
get_my_info |
Get your profile info | JID, name, status, picture |
Pre-built workflows that guide AI assistants:
search_person_messages- Find ALL messages from someone across all chatsget_context_about_person- Comprehensive analysis of someone's messagesanalyze_conversation- Summarize recent chat activitysearch_keyword- Find specific topics across conversations
Interactive documentation embedded in the MCP server:
- Cross-Chat Search Guide - Master advanced search workflows
- Workflow Guide - Common operations and best practices
- JID Format Guide - Understanding WhatsApp identifiers
- Search Patterns Guide - Wildcards and pattern matching
graph TB
subgraph "AI Client"
A[AI Assistant <br/> e.g., Claude Web]
end
subgraph "WhatsApp MCP Server"
B[MCP HTTP Server :8080]
C[MCP Layer]
D[WhatsApp Client]
E[(SQLite Database)]
B -->|/mcp endpoint| C
B -->|/health| B
C -->|Tools| C1[list_chats<br/>get_chat_messages<br/>search_messages<br/>find_chat<br/>send_message<br/>load_more_messages<br/>get_my_info]
C -->|Prompts| C2[search_person_messages<br/>get_context_about_person<br/>analyze_conversation<br/>search_keyword]
C -->|Resources| C3[Workflow Guides<br/>Search Patterns<br/>JID Format]
C1 -.->|read/write| E
C1 -.->|send| D
D -->|sync messages| E
D <-->|WhatsApp Protocol| F
end
subgraph "WhatsApp"
F[WhatsApp Servers]
end
A <-->|Streamable HTTP<br/>API Key Auth| B
style A fill:#4A90E2,stroke:#2E5C8A,stroke-width:2px,color:#000
style B fill:#F5A623,stroke:#C67E1B,stroke-width:2px,color:#000
style C fill:#9013FE,stroke:#6B0FC7,stroke-width:2px,color:#fff
style C1 fill:#50E3C2,stroke:#3AAA94,stroke-width:2px,color:#000
style C2 fill:#BD10E0,stroke:#9012FE,stroke-width:2px,color:#fff
style C3 fill:#F5A623,stroke:#C67E1B,stroke-width:2px,color:#000
style D fill:#50E3C2,stroke:#3AAA94,stroke-width:2px,color:#000
style E fill:#E85D75,stroke:#B5475C,stroke-width:2px,color:#fff
style F fill:#25D366,stroke:#1DA851,stroke-width:2px,color:#000
- Initial Sync - WhatsApp sends message history on first connection
- Real-Time Updates - All new messages automatically stored in SQLite
- MCP Exposure - Tools, prompts, and resources expose functionality to AI
- On-Demand Loading - Fetch older messages from WhatsApp when needed
- AI Integration - Claude (or any MCP client) accesses WhatsApp through standardized protocol
- Go 1.25.5+ (for local setup) or Docker (recommended)
- WhatsApp account (will be linked via QR code)
- MCP-compatible AI client (Claude, Cursor, etc.)
-
Clone and configure
git clone https://github.com/felipeadeildo/whatsapp-mcp cd whatsapp-mcp cp .env.example .env # Edit .env with your settings (API key, timezone, etc.)
-
Start the server
docker compose up -d
-
Link WhatsApp
# View logs to see QR code docker compose logs -f whatsapp-mcp # Scan QR code with WhatsApp mobile app: # Settings β Linked Devices β Link a Device
-
Verify it's running
curl http://localhost:8080/health # Expected: "OK"
-
Install dependencies
git clone https://github.com/felipeadeildo/whatsapp-mcp cd whatsapp-mcp go mod download -
Configure environment
cp .env.example .env # Edit .env with your settings -
Run the server
go run main.go
-
Link WhatsApp (scan QR code shown in terminal)
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"whatsapp": {
"url": "http://localhost:8080/mcp/your-secret-api-key",
"transport": "http"
}
}
}The server exposes an HTTP+SSE endpoint compatible with any MCP client:
- URL:
http://localhost:8080/mcp/{API_KEY} - Transport: Streamable HTTP
- Authentication: API key in URL path
Once connected, your AI assistant can:
You: "Find all messages from Arthur across all my chats"
AI: [Uses search_person_messages prompt]
β Finds messages in DMs, groups, everywhere
β Analyzes communication patterns
β Provides context about Arthur
You: "What did we discuss in the Tech Team group this week?"
AI: [Uses analyze_conversation prompt]
β Reads recent messages
β Summarizes key topics
β Lists action items and deadlines
You: "Tell Maria I'll be 10 minutes late"
AI: [Uses find_chat + send_message]
β Finds Maria's chat
β Sends contextual message
β Confirms delivery
You: "Find all mentions of 'budget meeting' in any chat"
AI: [Uses search_keyword prompt]
β Searches across all conversations
β Shows context around each mention
β Orders by relevance/date
All data is stored in ./data/:
db/- Database filesmessages.db- SQLite database with messages and chatswhatsapp_auth.db- WhatsApp session credentials
media/- Downloaded media fileswhatsapp.log- WhatsApp client logs
600) and backed up.
- WhatsApp Web integration via whatsmeow
- Real-time message sync to SQLite
- MCP server with Streamable HTTP transport
- Pattern matching and wildcards
- Sender filtering and cross-chat search
- Timestamp-based pagination
- Timezone support
- On-demand message loading from servers
- Docker deployment (with healthcheck!)
-
Media Support
- Voice message transcription
- Image OCR and analysis
- Video metadata extraction
- Document parsing
- Contact card handling
-
GraphRAG Integration
- Entity extraction from conversations
- Relationship mapping between contacts
- Semantic search capabilities
- Context-aware recommendations
-
Enhanced Tools
- Mark messages as read
- React to messages (emoji reactions)
- Send media files
- Group management (create, members)
- Status updates
- Account management (profile picture, name)
-
Analytics (maybe)
- Message statistics
- Conversation insights
- Response time tracking
The server includes interactive guides accessible through MCP:
- Workflow Guide - Common operations and patterns
- Cross-Chat Search - Master advanced search techniques
- JID Format Guide - Understanding WhatsApp identifiers
- Search Patterns - Wildcards and pattern matching
AI assistants can access these guides through the MCP Resources API.
See .env.example and be happy!
This is a personal project I maintain for daily use. Contributions are welcome!
See CONTRIBUTING.md for:
- Development setup and workflow
- Project structure (main server vs migration CLI)
- Database migration system
- Code style guidelines
Quick start:
- Fork the repository
- Create your feature branch
- Follow the guidelines in CONTRIBUTING.md
- Submit a pull request
This project is not affiliated with WhatsApp or Meta. It uses the unofficial WhatsApp Web API through the whatsmeow library. Use at your own risk.
Important Notes:
- WhatsApp may change their API at any time
- Using unofficial APIs may violate WhatsApp's Terms of Service
- This is provided as-is with no warranties
- Keep your session data secure
Built with β€οΈ for the MCP community