npm package: @maytapi/mcp-server
Description: MCP server for Maytapi WhatsApp Unofficial API
Author: Maytapi
Latest version: 1.0.2

# Maytapi MCP Server

MCP (Model Context Protocol) server for [Maytapi WhatsApp Unofficial API](https://maytapi.com). Connect your AI assistant to WhatsApp -- send messages, manage groups, channels, communities, catalogs, labels and more using natural language commands.

## What is MCP?

[Model Context Protocol (MCP)](https://modelcontextprotocol.io) is an open standard developed by Anthropic that enables AI assistants to connect with external tools and services. Think of it as a universal adapter between AI and your applications.

With the Maytapi MCP Server, your AI assistant can interact directly with the WhatsApp API -- sending messages, managing contacts, groups, channels, communities, catalogs, and more -- all through natural language commands.

## Quick Setup

### Prerequisites

- Node.js 18 or higher
- A Maytapi account with an active product ([Sign up for free trial](https://maytapi.com))
- Product ID and API Token from [Maytapi Console](https://console.maytapi.com)
- An MCP-compatible AI client (Claude Desktop, Claude Code, Cursor, etc.)

### Installation

#### Using npx (Recommended)

No installation required. Add the following configuration to your MCP client settings:

```json
{
  "mcpServers": {
    "maytapi": {
      "command": "npx",
      "args": ["-y", "@maytapi/mcp-server"],
      "env": {
        "MAYTAPI_PRODUCT_ID": "your-product-id",
        "MAYTAPI_API_TOKEN": "your-api-token"
      }
    }
  }
}
```

#### Manual Installation

```bash
npm install -g @maytapi/mcp-server
```

Then add to your MCP client settings:

```json
{
  "mcpServers": {
    "maytapi": {
      "command": "maytapi-mcp-server",
      "env": {
        "MAYTAPI_PRODUCT_ID": "your-product-id",
        "MAYTAPI_API_TOKEN": "your-api-token"
      }
    }
  }
}
```

### Configuration File Locations

| Client | Path |
|---|---|
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
| Claude Code | `~/.claude.json` |
| Cursor | Cursor Settings > MCP |

Replace `your-product-id` and `your-api-token` with your credentials from [Maytapi Console](https://console.maytapi.com).

## Environment Variables

| Variable | Required | Description |
|---|---|---|
| `MAYTAPI_PRODUCT_ID` | Yes | Your Maytapi Product ID |
| `MAYTAPI_API_TOKEN` | Yes | Your Maytapi API Token |

## Available Tools

Maytapi MCP Server provides 80+ tools covering the full WhatsApp API. Here is the complete list grouped by category.

### Product & Phone Management

| Tool | Description |
|---|---|
| `get_product` | Returns product information |
| `list_phones` | Lists all phones registered to the product |
| `add_phone` | Adds a new phone to the product |
| `get_status` | Returns the status of the current session |
| `get_screen` | Returns screenshot of the current session screen |
| `get_qr_code` | Returns QR code for phone pairing |
| `connect_with_phone_number` | Connect with phone number instead of QR code |
| `logout` | Logs out the number from current session |
| `get_phone_logs` | Returns logs for a specific phone (incoming/outgoing filter) |

### Messaging

| Tool | Description |
|---|---|
| `send_message` | Sends a message to any chat. Supports 30+ message types: text, media, poll, vcard, contact, location, sticker, link, buttons, list, forward, delete, reaction, unreact, edit, pin, star, product, catalog, group invite, channel messages (text/media/link/poll/sticker/audio/delete), story replies (text/media), short video, and event creation. |
| `get_message` | Retrieves a specific message by ID |
| `get_messages` | Retrieves messages from a conversation with pagination, author filter, and fromMe filter |

### Group Management

| Tool | Description |
|---|---|
| `create_group` | Creates a new WhatsApp group with participants |
| `get_groups` | Lists all groups with optional participant loading, sorting, invite links, and pagination |
| `get_group` | Gets specific group info with optional invite link |
| `group_add` | Adds participants to a group with optional invite |
| `group_remove` | Removes a participant from a group |
| `group_promote` | Promotes a participant to admin |
| `group_demote` | Demotes an admin to participant |
| `group_config` | Configures group settings: edit, send, disappear, membersCanAddMembers, approveNewMembers, name, description |
| `set_group_profile_image` | Sets group profile image (512x512 recommended) |
| `delete_group_profile_image` | Deletes group profile image |
| `group_accept_invite` | Accepts a group invite by code |
| `group_revoke_invite` | Revokes and regenerates group invite link |
| `group_approval_request_list` | Lists pending join requests for a group |
| `group_approve_request` | Approves pending join requests |
| `group_reject_request` | Rejects pending join requests |
| `get_group_info_by_invite_code` | Gets group info using invite code |
| `leave_group` | Leaves a WhatsApp group |

### Contact Operations

| Tool | Description |
|---|---|
| `get_contacts` | Lists all contacts |
| `get_contact` | Gets specific contact info |
| `check_phones` | Checks WhatsApp registration status of multiple phone numbers |
| `block_contact` | Blocks or unblocks a contact |
| `get_profile_image` | Gets profile image of a contact or group |
| `set_profile_image` | Sets your WhatsApp account profile image |
| `delete_profile_image` | Deletes your WhatsApp account profile image |
| `contact_add` | Adds a new contact to WhatsApp address book |
| `contact_edit` | Edits an existing contact in WhatsApp address book |
| `contact_remove` | Removes a contact from WhatsApp address book |

### Chat Operations

| Tool | Description |
|---|---|
| `get_conversations` | Lists all conversations/chats with pagination |
| `get_conversation` | Gets specific conversation details with messages |
| `favorite_conversation` | Favorites or unfavorites a conversation |
| `pin_conversation` | Pins or unpins a conversation |
| `archive_conversation` | Archives or unarchives a conversation |
| `mute_conversation` | Mutes or unmutes a conversation (8 hours, 1 week, or forever) |
| `clear_conversation` | Clears all messages in a conversation |

### Channel Operations

| Tool | Description |
|---|---|
| `create_channel` | Creates a new WhatsApp channel with name, description, and image |
| `get_channels` | Lists all channels with optional invite links |
| `get_channel` | Gets specific channel info |
| `delete_channel` | Deletes a channel you own |
| `channel_config` | Configures channel settings (name, description, image) |
| `channel_invite_code` | Gets invite code/link for a channel |
| `channel_subscribe` | Subscribes to a channel |
| `channel_unsubscribe` | Unsubscribes from a channel |
| `channel_subscribe_by_invite_code` | Subscribes to a channel using invite code |
| `channel_unsubscribe_by_invite_code` | Unsubscribes from a channel using invite code |
| `channel_get_messages` | Gets messages from a channel with pagination |
| `channel_search` | Searches channels by text |
| `channel_search_by_country` | Searches channels by country code (ISO 2-letter) |
| `channel_get_info_by_invite_code` | Gets channel info using invite code |
| `channel_statistics` | Gets channel statistics and analytics |
| `channel_demote` | Demotes an admin in a channel |
| `channel_accept_admin_invite` | Accepts a channel admin invite |
| `channel_revoke_admin_invite` | Revokes an admin invite for a number |

### Community Operations

| Tool | Description |
|---|---|
| `create_community` | Creates a new WhatsApp community with optional sub-groups |
| `get_communities` | Lists all communities with optional details and pagination |
| `get_community` | Gets specific community details |
| `community_add` | Adds participants to a community with optional invite |
| `community_remove` | Removes a participant from a community |
| `community_promote` | Promotes a participant to community admin |
| `community_demote` | Demotes a community admin to participant |
| `community_add_subgroup` | Adds existing groups as sub-groups to a community |
| `community_remove_subgroup` | Removes sub-groups from a community |
| `community_revoke_invite` | Revokes and regenerates community invite link |
| `deactivate_community` | Deactivates a community |

### Story Operations (Beta)

| Tool | Description |
|---|---|
| `get_stories` | Gets your own stories with pagination |
| `get_contacts_stories` | Gets all contacts' stories |
| `get_contact_stories` | Gets a specific contact's stories |
| `create_story` | Creates a new story (text with background color or media with caption) |

### Label Operations

| Tool | Description |
|---|---|
| `create_label` | Creates a new label in WhatsApp Business with name and color |
| `get_labels` | Lists all labels |
| `get_label_chats` | Gets all chats assigned to a specific label |
| `get_label_colors` | Gets all available color options for labels |
| `edit_label` | Edits an existing label (name and/or color) |
| `remove_labels` | Permanently deletes one or more labels |
| `add_label_to_chat` | Assigns a label to a chat |
| `remove_label_from_chat` | Removes a label from a chat |

### Business Catalog

| Tool | Description |
|---|---|
| `get_catalog` | Gets catalog products |
| `get_catalog_products` | Lists all catalog products |
| `get_catalog_product` | Gets a specific catalog product |
| `add_catalog_product` | Adds a new product (name, image, price, currency, description, URL) |
| `edit_catalog_product` | Edits an existing catalog product |
| `remove_catalog_product` | Removes a product from catalog |
| `add_product_image` | Adds an image to a catalog product |
| `remove_product_image` | Removes an image from a catalog product |
| `get_contact_catalog_products` | Lists catalog products of another WhatsApp Business contact |
| `get_catalog_collections` | Lists all catalog collections |
| `get_catalog_collection` | Gets a specific collection with its products |
| `add_catalog_collection` | Creates a new catalog collection |
| `edit_catalog_collection` | Edits a catalog collection name |
| `remove_catalog_collection` | Removes a catalog collection |
| `add_collection_products` | Adds products to a collection |
| `remove_collection_product` | Removes products from a collection |
| `get_catalog_orders` | Lists orders with pagination, sorting, and conversation filter |
| `get_catalog_order` | Gets detailed info about a specific order |

### Presence Operations

| Tool | Description |
|---|---|
| `get_presence` | Gets a contact's current online status (online, offline, last seen) |
| `subscribe_presence` | Subscribes to receive a contact's status updates via webhook |
| `send_presence` | Sends your presence status to a contact (typing, recording, online, offline) |

### Call Operations

| Tool | Description |
|---|---|
| `reject_call` | Rejects an incoming call (callId from webhook notification) |
| `create_call_link` | Creates a shareable call link for voice or video calls with scheduled timestamp |

### Webhook Configuration

| Tool | Description |
|---|---|
| `set_webhook` | Sets the product webhook URL for receiving incoming messages and events |
| `set_ack_preference` | Sets acknowledgment preference to enable/disable read receipt delivery via webhook |

## Usage Examples

Once connected, just tell your AI assistant what you want to do:

**Send a message:**
> "Send 'Hello, your order has been shipped!' to +1234567890 on WhatsApp"

**Create a group:**
> "Create a WhatsApp group called 'Project Team' and add +1234567890, +0987654321"

**Check status:**
> "Show me the status of my WhatsApp connection"

**Manage channels:**
> "Create a new WhatsApp channel called 'Company Updates'"

## How It Works

1. **Install the MCP Server** -- Clone or install the Maytapi MCP Server and configure it with your Product ID and API Token.
2. **Connect Your AI Tool** -- Add the MCP server configuration to Claude Desktop, Claude Code, Cursor, or your preferred MCP client.
3. **Start Using WhatsApp with AI** -- Ask your AI assistant to send messages, manage groups, create channels -- all with natural language.

The MCP server runs locally on your machine and communicates with the Maytapi API over HTTPS.

## Security

- The MCP server runs locally on your machine
- API credentials are stored in your local configuration and never sent to third parties
- All communication with Maytapi API is over HTTPS

## Links

- [Maytapi Website](https://maytapi.com)
- [Maytapi Console](https://console.maytapi.com)
- [Maytapi API Documentation](https://maytapi.com/docs)
- [MCP Protocol](https://modelcontextprotocol.io)

## License

MIT