# WhatsApp MCP Server A WhatsApp server implementation using the Model Context Protocol (MCP) SDK. This server provides a standardized interface for interacting with WhatsApp through the GreenAPI service. ## Features - WhatsApp session management - Integration with GreenAPI service - Standardized MCP protocol implementation - TypeScript support ## Prerequisites - Node.js (v14 or higher) - npm or yarn - GreenAPI account and credentials ## Installation 1. Clone the repository: ```bash git clone cd whatsapp-mcp-server ``` 2. Install dependencies: ```bash npm install ``` ## Configuration The server requires the following environment variables: - `GREENAPI_API_URL`: The base URL for GreenAPI service - `GREENAPI_API_TOKEN`: Your GreenAPI API token ## Usage 1. Start the server: ```bash npm start ``` 2. The server will start listening for MCP protocol messages through standard input/output. ## Available Tools ### Open Session Opens a new WhatsApp session using GreenAPI credentials. Parameters: - `sessionId`: A unique session ID - `instanceId`: GreenAPI instance ID - `apiTokenInstance`: GreenAPI API token ### Send Message Sends a message to a specified chat. Parameters: - `sessionId`: Session ID from open_session - `chatId`: Recipient chat ID (e.g., 1234567890@c.us or group@g.us) - `message`: The message to send ### Get Chats Retrieves the list of available chats. Parameters: - `sessionId`: Session ID from open_session ### Create Group Creates a new WhatsApp group. Parameters: - `sessionId`: Session ID from open_session - `groupName`: Name of the group to create - `participants`: Array of phone numbers with domain (e.g. 12345@c.us) ### Get Chat History Retrieves recent messages from a specified chat (personal or group). Parameters: - `sessionId`: Session ID from open_session - `chatId`: Chat ID to retrieve messages from (e.g., 1234567890@c.us or group@g.us) - `count`: Number of messages to retrieve (default: 50) > **Important**: To receive incoming messages in the chat history, you need to enable the "Receive webhooks on incoming messages and files" setting using the SetSettings method or through the GreenAPI console. Without this setting enabled, the chat history will only show outgoing messages. ### Send File Sends a file to a specified chat. Parameters: - `sessionId`: Session ID from open_session - `chatId`: WhatsApp chat ID (e.g., 1234567890@c.us) - `fileUrl`: Public URL of the file to send - `fileName`: (Optional) Name of the file as seen by recipient - `caption`: (Optional) Caption text to display below the file ### Add Participant Adds a participant to an existing WhatsApp group. Parameters: - `sessionId`: Session ID from open_session - `groupId`: ID of the WhatsApp group (e.g., group@g.us) - `participantChatId`: Chat ID of the participant to add (e.g., 1234567890@c.us) ### Remove Participant Removes a participant from an existing WhatsApp group. Parameters: - `sessionId`: Session ID from open_session - `groupId`: ID of the WhatsApp group (e.g., group@g.us) - `participantChatId`: Chat ID of the participant to remove (e.g., 1234567890@c.us)