@maytapi/mcp-server
v1.1.0
Published
MCP server for Maytapi WhatsApp Unofficial API
Maintainers
Readme
Maytapi MCP Server
MCP (Model Context Protocol) server for Maytapi WhatsApp Unofficial API. 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) 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)
- Product ID and API Token from Maytapi Console
- 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:
{
"mcpServers": {
"maytapi": {
"command": "npx",
"args": ["-y", "@maytapi/mcp-server"],
"env": {
"MAYTAPI_PRODUCT_ID": "your-product-id",
"MAYTAPI_API_TOKEN": "your-api-token"
}
}
}
}Manual Installation
npm install -g @maytapi/mcp-serverThen add to your MCP client settings:
{
"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.
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 (quick reply, URL, phone number, copy code), list, carousel (multi-card with buttons), 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. Buttons support media attachments. Carousel messages support up to 10 cards, each with title, body, footer, media, and up to 5 buttons. |
| 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
- Install the MCP Server -- Clone or install the Maytapi MCP Server and configure it with your Product ID and API Token.
- Connect Your AI Tool -- Add the MCP server configuration to Claude Desktop, Claude Code, Cursor, or your preferred MCP client.
- 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
License
MIT
