README.md•6.02 kB
# WhatsApp MCP Server
## Overview
The WhatsApp MCP (Model Context Protocol) server is a Node.js application that enables programmatic interaction with the WhatsApp desktop application on macOS. Using AppleScript automation, it provides a simple interface for sending messages and checking WhatsApp status without requiring direct interaction with the WhatsApp UI.
## Features
### 1. Send Messages to Contacts
Send text messages to specific contacts in your WhatsApp contact list:
- Messages are delivered through your connected WhatsApp desktop application
- Supports proper formatting of messages including line breaks
- Uses AppleScript to automate the WhatsApp desktop interface
### 2. Check WhatsApp Status (WIP)
Verify if the WhatsApp application is currently running:
- Returns the current running status of WhatsApp
- Helps prevent errors when attempting to send messages
### 3. List Recent Contacts (WIP)
Due to WhatsApp's privacy protections, this feature provides limited functionality:
- Informs users about WhatsApp's privacy limitations
- Requires exact contact names for messaging
## Technical Implementation
### Built With
- [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk) - MCP server and stdio transport
- [Zod](https://github.com/colinhacks/zod) - Schema validation
- Node.js built-in modules (child_process, util, fs)
- AppleScript for macOS automation
### Architecture
- Uses the Model Context Protocol (MCP) for standardized tool communication
- Employs stdio transport for communication
- Executes AppleScript commands to interact with the WhatsApp desktop application
- Implements comprehensive error logging for debugging
## Requirements
- macOS operating system
- WhatsApp desktop application installed
- Node.js v14.0.0 or higher
- Internet connection
## Installation
```bash
# Clone the repository
git clone https://github.com/yourusername/whatsapp-mcp-server.git
# Navigate to the project directory
cd whatsapp-mcp-server
# Install dependencies
npm install
```
## Usage
### Starting the Server
```bash
node index.js
```
## Integrating with Claude
To enable Claude to use the WhatsApp MCP server, follow these steps:
1. **Set up your MCP server**
- Install and configure the WhatsApp MCP server as described above
- Ensure the server is running properly on your local machine
2. **Configure Claude Desktop with your MCP tools**
- Modify your `claude_desktop_config.json` file to include the WhatsApp MCP tools
- This file is typically located in your Claude Desktop application configuration directory
- Add the following configuration to register your WhatsApp MCP tools:
```json
{
"mcpServers": [
{
"name": "whatsapp-mcp",
"transport": {
"command": "node",
"args": ["path/to/your/index.js"]
}
}
]
}
```
3. **Test the Integration**
- Create a test conversation with Claude
- Ask Claude to send a WhatsApp message to a test contact
- Verify that the message is sent successfully through the WhatsApp desktop app
### MCP Tools Available
#### 1. send-whatsapp-message
Sends a message to a specified WhatsApp contact.
Parameters:
- `contactName`: Full name of the contact as it appears in WhatsApp
- `message`: Content of the message to send
Example usage (via MCP client):
```javascript
const response = await client.invoke("send-whatsapp-message", {
contactName: "John Doe",
message: "Hello, how are you today?"
});
```
#### 2. check-whatsapp-status
Checks if the WhatsApp application is currently running.
No parameters required.
Example usage (via MCP client):
```javascript
const response = await client.invoke("check-whatsapp-status", {});
```
#### 3. list-recent-contacts
Provides information about WhatsApp's privacy limitations for contact listing.
No parameters required.
Example usage (via MCP client):
```javascript
const response = await client.invoke("list-recent-contacts", {});
```
## Implementation Details
### AppleScript Automation
The server uses AppleScript to automate the WhatsApp desktop application:
- Activates the WhatsApp application
- Uses keyboard shortcuts to navigate the interface
- Searches for contacts by name
- Selects contacts using down arrow navigation
- Types and sends messages
### Error Handling
Comprehensive error handling and logging:
- Console error output
- File-based logging in `~/Library/Logs/whatsapp-mcp/`
- Graceful handling of AppleScript execution errors
- Process-level exception handling
## Using WhatsApp MCP Tools with Claude
Once you've integrated the WhatsApp MCP tools with Claude, you can use natural language to instruct Claude to:
### Send Messages
Example prompts:
- "Send a WhatsApp message to John saying I'll be 10 minutes late for our meeting"
- "Message Sarah on WhatsApp with the following text: Here's the document you requested"
- "Send 'Happy birthday!' to Mom on WhatsApp"
### Check WhatsApp Status
Example prompts:
- "Is WhatsApp running on my computer?"
- "Check if WhatsApp is active"
- "Verify WhatsApp status before sending a message"
### Get Contact Information
Example prompts:
- "Can you list my recent WhatsApp contacts?"
- "Show me who I've messaged recently on WhatsApp"
Claude will use the appropriate MCP tool based on your request and provide feedback on the result.
## Limitations
- Works only on macOS due to AppleScript dependency
- Requires WhatsApp desktop application to be installed
- Contact selection may be affected by WhatsApp UI changes
- Limited access to WhatsApp's contact list due to privacy protections
- Requires proper configuration of Claude to access your local MCP tools
## Security Considerations
- The server interacts with your personal WhatsApp account
- Messages are sent from your account and appear as sent by you
- Use in trusted environments only
## License
MIT
## Disclaimer
This project is not affiliated with WhatsApp Inc. or Meta Platforms, Inc. Use at your own discretion and in accordance with WhatsApp's terms of service.