whatsapp mcp server

Local 2025-09-01 00:59:11 0

A Python server that enables language models like Claude to interact with WhatsApp Business API through GreenAPI, supporting features like sending messages and managing groups.


A server that provides a Model Context Protocol (MCP) interface to interact with WhatsApp Business API using FastMCP.

Introduction

WhatsApp MCP Server is a Python implementation that enables language models like Claude to interact with WhatsApp functionality through GreenAPI. It leverages FastMCP for improved performance, better developer experience, and a cleaner implementation.

Features

  • Messaging: Send text messages to WhatsApp contacts
  • Group Management: Create groups, list members, add/remove participants
  • Session Handling: Manage WhatsApp API sessions
  • Chat History: Retrieve chat lists and message history

WhatsApp API Client

This project uses the whatsapp-api-client-python library to interact with WhatsApp. The client provides access to the WhatsApp Cloud API, which requires a GreenAPI account to use.

Environment Variables

This project uses environment variables for configuration:

  • GREENAPI_ID_INSTANCE: Your GreenAPI ID instance
  • GREENAPI_API_TOKEN: Your GreenAPI API token

You can either set these in your environment or use the provided .env file (see Installation instructions).

Installation

# Clone the repository
git clone https://github.com/yourusername/whatsapp-mcp-server.git
cd whatsapp-mcp-server

# Install dependencies
pip install -e .

# Set up environment variables
cp .env-template .env
# Edit the .env file with your GreenAPI credentials

Usage

Run the MCP server:

# Run the MCP server on default host (127.0.0.1) and port (8000)
whatsapp-mcp

# Specify host and port
whatsapp-mcp --host 0.0.0.0 --port 9000

For debugging:

whatsapp-mcp --debug

The server communicates using the Model Context Protocol (MCP) and can be accessed via HTTP or WebSockets when running with FastMCP.

Available Tools

  • open_session: Open a new WhatsApp session
  • send_message: Send a message to a chat
  • get_chats: Get a list of chats
  • create_group: Create a new WhatsApp group
  • get_group_participants: Get the participants of a group

FastMCP API Reference

The WhatsApp MCP Server uses FastMCP to provide both WebSocket and HTTP endpoints:

  • WebSocket: ws://localhost:8000/mcp
  • HTTP: http://localhost:8000/mcp

You can test the API directly using tools like curl:

# List available tools
curl -X POST http://localhost:8000/mcp/listTools

# Call a tool
curl -X POST http://localhost:8000/mcp/callTool 
  -H "Content-Type: application/json" 
  -d '{"name": "open_session", "arguments": {}}'

How to add it to Claude Code

To add a WhatsApp server to Claude, use the claude mcp add command:

# Add the WhatsApp MCP server
$ claude mcp add whatsapp -- whatsapp-mcp

# List existing MCP servers - Validate that the server is running
claude mcp list

# Start claude code
claude

Using with Claude

Once the WhatsApp MCP server is running, you can interact with it using Claude in your conversations:

Authenticating with WhatsApp

Login to WhatsApp

Sending a message

Send the "Hello" message to John Doe

Using with Claude Desktop

To use the WhatsApp MCP server with Claude Desktop, you need to add it to your claude_desktop_config.json file:

"mcpServers": {
  "whatsapp": {
    "command": "python",
    "args": ["-m", "whatsapp_mcp"]
  }
}

Using the executable

"mcpServers": {
  "whatsapp": {
    "command": "whatsapp-mcp"
  }
}

Using Docker

"mcpServers": {
  "whatsapp": {
    "command": "docker",
    "args": ["run", "--rm", "-i", "-e", "GREENAPI_ID_INSTANCE=your_instance_id", "-e", "GREENAPI_API_TOKEN=your_api_token", "whatsapp-mcp-server"]
  }
}

Remember to set your GreenAPI credentials either as environment variables or in your .env file before starting Claude Desktop.

Command-line options

The WhatsApp MCP server accepts these command-line arguments: - --debug: Increase verbosity level for debugging - --host: Host to bind the server to (default: 127.0.0.1) - --port: Port to bind the server to (default: 8000)

Debugging

For debugging the MCP server: - Use MCP inspector: npx @modelcontextprotocol/inspector whatsapp-mcp - View logs in your Claude Desktop logs directory (typically ~/Library/Logs/Claude/ on macOS) - Access the FastMCP web interface at http://localhost:8000 for interactive API documentation

Development

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run linting
flake8 src/

# Run type checking
mypy src/

The project uses a modern pyproject.toml configuration which includes: - Core dependencies needed for running the application - Development dependencies available with pip install -e ".[dev]"

License

This project is licensed under the MIT License - see the LICENSE file for details.

[
  {
    "description": "Open a new WhatsApp session.",
    "inputSchema": {
      "properties": {},
      "title": "open_sessionArguments",
      "type": "object"
    },
    "name": "open_session"
  },
  {
    "description": "     Send a message to a chat.      Parameters:     - phone_number: The phone number of the recipient     - content: The content of the message to send     - reply_to: ID of the message to reply to (optional)     ",
    "inputSchema": {
      "properties": {
        "content": {
          "title": "Content",
          "type": "string"
        },
        "phone_number": {
          "title": "Phone Number",
          "type": "string"
        },
        "reply_to": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Reply To"
        }
      },
      "required": [
        "phone_number",
        "content"
      ],
      "title": "send_messageArguments",
      "type": "object"
    },
    "name": "send_message"
  },
  {
    "description": "     Get a list of chats.      Parameters:     - limit: Maximum number of chats to return (default: 50)     - offset: Offset for pagination (default: 0)     ",
    "inputSchema": {
      "properties": {
        "limit": {
          "default": 50,
          "title": "Limit",
          "type": "integer"
        },
        "offset": {
          "default": 0,
          "title": "Offset",
          "type": "integer"
        }
      },
      "title": "get_chatsArguments",
      "type": "object"
    },
    "name": "get_chats"
  },
  {
    "description": "     Create a new WhatsApp group.      Parameters:     - group_name: Name of the group to create     - participants: List of participant phone numbers     ",
    "inputSchema": {
      "properties": {
        "group_name": {
          "title": "Group Name",
          "type": "string"
        },
        "participants": {
          "items": {
            "type": "string"
          },
          "title": "Participants",
          "type": "array"
        }
      },
      "required": [
        "group_name",
        "participants"
      ],
      "title": "create_groupArguments",
      "type": "object"
    },
    "name": "create_group"
  },
  {
    "description": "     Get the participants of a WhatsApp group.      Parameters:     - group_id: The WhatsApp ID of the group     ",
    "inputSchema": {
      "properties": {
        "group_id": {
          "title": "Group Id",
          "type": "string"
        }
      },
      "required": [
        "group_id"
      ],
      "title": "get_group_participantsArguments",
      "type": "object"
    },
    "name": "get_group_participants"
  }
]