chatkazi-mcp
Provides tools to manage WhatsApp sessions (start, stop, check status, get QR/pairing code) and send text and media messages through the ChatKazi API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@chatkazi-mcp send a text message to 254712345678 saying Hello from the AI"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ChatKazi MCP
An implementation of the Model Context Protocol (MCP) designed to act as a bridge between an MCP-compliant client and the ChatKazi WhatsApp API gateway.
This server exposes a series of tools that enable an AI model to interact with WhatsApp instances, programmatically managing sessions, monitoring connection states, and dispatching text and media messages.
Architectural Overview
This server functions as a local translation layer running over Standard Input/Output (Stdio) transport:
[ MCP Client / Host ] <--- Stdio (JSON-RPC) ---> [ chatkazi-mcp Server ] <--- HTTPS (fetch) ---> [ ChatKazi API ]Client / Host Handshake: The host launches this server as a subprocess. The server registers its capabilities and schemas.
Dynamic Tool Execution: When the AI model decides to call a tool, the host routes a JSON-RPC request over Stdio.
API Forwarding: The server translates the arguments, formats the HTTPS headers, executes the fetch call to ChatKazi, parses the result, and returns a clean text context block to the model.
Related MCP server: MCP WhatsApp
Environment Configuration
The server relies on the host environment to supply authentication variables. These must be defined when spawning the process:
CHATKAZI_API_KEY(Required): Your live API key retrieved from your ChatKazi dashboard.CHATKAZI_BASE_URL(Optional): The base URL of the API. Defaults tohttps://api.chatkazi.app/api/v1if omitted.
WhatsApp Session Lifecycle
The AI model can track and manage the lifecycle of connected WhatsApp numbers. Under the hood, sessions transition through the following states, which are returned by the session status tools:
State | Meaning | Required Action |
| The session has been created but not initialized. | Call |
| ChatKazi is preparing the connection. | Wait and poll status |
| A QR code pairing link is active. | Retrieve QR and scan in WhatsApp |
| A text pairing code has been generated. | Retrieve code |
| The session is online and ready. | Proceed to send messages |
| The connection dropped or failed. | Re-authenticate or restart session |
| The session was explicitly terminated. | Run |
Detailed Tool Reference
The following tools are dynamically exposed to the AI model:
Session Management Tools
list_sessions
Description: Retrieve a list of all WhatsApp session instances owned by the ChatKazi account.
Parameters: None.
start_session
Description: Prepares and starts a session instance.
Parameters:
sessionId(string, optional): A unique identifier. Defaults to"default".
get_session_status
Description: Queries the current state of a session.
Parameters:
sessionId(string, required): The target session identifier.
get_session_qr
Description: Retrieves the QR code link to link a device.
Parameters:
sessionId(string, required): The target session identifier.
logout_session
Description: Logs out and disconnects a session, clearing all state.
Parameters:
sessionId(string, required): The target session identifier.
Messaging Tools
send_whatsapp_text
Description: Dispatches a plain text WhatsApp message.
Parameters:
to(string, required): Recipient number in international format without spaces or+(e.g.,"254712345678").text(string, required): The text content of your message.sessionId(string, optional): The session identifier to send from. Defaults to"default".
send_whatsapp_media
Description: Dispatches an image, video, audio, or document file.
Parameters:
to(string, required): Recipient number in international format without spaces or+.url(string, required): Publicly reachable URL of the direct file asset (e.g., a direct link ending in.pngor.jpg).type(string, optional): One ofimage,video,audio, ordocument. Defaults toimage.caption(string, optional): Optional caption text.fileName(string, optional): Display name for document attachments.mimetype(string, optional): Explicit MIME type.sessionId(string, optional): The session identifier to send from. Defaults to"default".
Error Mapping & Resilience
When the ChatKazi API returns an error, the server intercepts the HTTP status and surfaces semantic guidance to the AI model rather than throwing unhandled exceptions. This allows the model to alter its behavior and advise the user:
HTTP 401 (Unauthorized): Surfaced as a credential configuration error, advising the user to check their
CHATKAZI_API_KEY.HTTP 402 (Payment Required / Limit Reached): Surfaced as a plan limitation error (e.g., "WhatsApp instance limit reached"), informing the model to stop trying to create instances or sending messages and advise the user to upgrade their plan.
HTTP 409 (Conflict): Surfaced when trying to start an active or conflicted session.
Empty Media Payload: Intercepts files that fail to download (e.g., file sizes of
0bytes) and warns the model that the URL is likely invalid or blocked.
General Integration (MCP Client Setup)
To integrate this server into an MCP client or host platform, add the server to your host's configuration settings:
{
"mcpServers": {
"chatkazi-mcp": {
"command": "npx",
"args": [
"-y",
"@lxmwaniky/chatkazi-mcp"
],
"env": {
"CHATKAZI_API_KEY": "your_chatkazi_api_key_here",
"CHATKAZI_BASE_URL": "https://api.chatkazi.app/api/v1"
}
}
}
}Client Integration Guides
Find instructions below to connect this MCP server to your favorite developer tool.
Add the configuration to your claude_desktop_config.json:
File Path (macOS):
~/Library/Application Support/Claude/claude_desktop_config.jsonFile Path (Windows):
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"chatkazi-mcp": {
"command": "npx",
"args": [
"-y",
"@lxmwaniky/chatkazi-mcp"
],
"env": {
"CHATKAZI_API_KEY": "YOUR_CHATKAZI_API_KEY_HERE"
}
}
}
}Dynamically register this server with the Claude CLI:
claude mcp add chatkazi-mcp npx -y @lxmwaniky/chatkazi-mcp --env CHATKAZI_API_KEY="YOUR_CHATKAZI_API_KEY_HERE"Connect this server visually in your editor settings:
Open Cursor Settings > Features > MCP.
Click + Add New MCP Server.
Configure the following fields:
Name:
chatkazi-mcpType:
commandCommand:
npx -y @lxmwaniky/chatkazi-mcp
Click + Add Env to configure your
CHATKAZI_API_KEY.
Add this to your Codeium MCP server configuration file:
File Path:
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"chatkazi-mcp": {
"command": "npx",
"args": [
"-y",
"@lxmwaniky/chatkazi-mcp"
],
"env": {
"CHATKAZI_API_KEY": "YOUR_CHATKAZI_API_KEY_HERE"
}
}
}
}Configure this server directly inside your central configuration:
"chatkazi-mcp": {
"command": "npx",
"args": [
"-y",
"@lxmwaniky/chatkazi-mcp"
],
"env": {
"CHATKAZI_API_KEY": "YOUR_CHATKAZI_API_KEY_HERE"
}
}Local Development
To compile and verify this project locally:
Prerequisites
Node.js (v18 or higher is recommended)
pnpm (preferred package manager)
Step-by-Step Setup
Install dependencies: Installs node modules and setup definitions:
pnpm installCompile TypeScript code: Compiles the TypeScript source files from the
src/directory into JavaScript inside thebuild/directory:pnpm run buildGrant executable permissions to the output binary: Makes the built JS file directly executable since it starts with a Node shebang:
chmod +x build/index.jsVerify using the MCP Inspector: Inspect tools dynamically and test real-time payloads:
CHATKAZI_API_KEY="your_api_key" pnpm dlx @modelcontextprotocol/inspector node build/index.js
Disclaimers
1. WhatsApp Terms of Service (ToS) Compliance
Using third-party, unofficial WhatsApp gateway interfaces carries an inherent risk of account suspension by WhatsApp. WhatsApp strictly prohibits bulk messaging, automated spamming, and unsolicited outreach. You are solely responsible for ensuring your messaging workflows comply with WhatsApp's official Terms of Service. The developers and contributors of this MCP server are not liable for any suspended, blocked, or permanently banned WhatsApp numbers resulting from the use of this software.
2. No Official Affiliation
This project is an independent, community-driven open-source integration. It is not officially affiliated with, endorsed by, sponsored by, or associated with ChatKazi, Meta Platforms, Inc., or WhatsApp. All product names, trademarks, and registered trademarks are the property of their respective owners.
3. Financial and Usage Liability
While this MCP server software is distributed for free under an open-source license, utilizing the ChatKazi API may incur financial costs depending on your ChatKazi subscription tier. You are entirely responsible for monitoring your own platform usage, API call quotas, billing, and any rate limits associated with your ChatKazi account.
4. Warranty and Support
This software is provided "as is," without warranty of any kind, express or implied. The underlying ChatKazi API endpoints, request/response formats, or authentication methods may change over time without notice, which could temporarily or permanently impact the functionality of this server.
License
This project is licensed under the ISC License.
Available Tools
7 toolsget_session_qrA
Retrieve the QR code pairing link for an initialized session.
Inputs: sessionId (required).
get_session_statusA
Check the current state of a specific WhatsApp session (e.g., connected, qr_ready).
Inputs: sessionId (required).
list_sessionsA
List all WhatsApp sessions connected to the ChatKazi account.
Inputs: no named parameters.
logout_sessionA
Disconnect and log out a WhatsApp session, clearing its authentication state.
Inputs: sessionId (required).
send_whatsapp_mediaA
Send a media message (image, video, audio, or document) to a recipient.
Inputs: to (required), url (required), type, caption, +3 more.
send_whatsapp_textA
Send a plain text WhatsApp message to a recipient.
Inputs: to (required), text (required), sessionId.
start_sessionB
Initialize a new WhatsApp session connection.
Inputs: sessionId.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool targets a distinct action: session management (list, start, status, QR, logout) versus messaging (text, media). No two tools have overlapping purposes, and the descriptors clearly differentiate them.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_sessions, start_session, send_whatsapp_text). The pattern is uniform and predictable across the set.
Seven tools is well-scoped for a WhatsApp MCP server covering session lifecycle and message sending. Each tool serves a necessary function without redundancy or bloat.
The tool set covers the full session lifecycle (initiate, check status, retrieve QR, log out, list) and both primary message types (text and media). No obvious gaps for the stated domain.
Maintenance
Related MCP Connectors
WhatsMCP connects Claude and other MCP-compatible AI agents directly to WhatsApp. Send and receive text, images, documents, and voice notes; manage groups (create, add/remove members, promote admins); look up contacts and profiles; follow channels; and read call and message history — all through a standard MCP interface. For voice use cases, WhatsMCP offers SIP-based calling plans (inbound-only, or full inbound/outbound) so AI voice agents can answer and place WhatsApp calls, plus low-latency WebSocket integrations with voice agent providers like ElevenLabs. Multiple WhatsApp accounts can be paired and managed per workspace, with webhook support for real-time inbound message delivery to your own infrastructure.
Drive WhatsApp from any MCP client: pair devices, send text and media, manage contacts and groups.
Ask questions across your WhatsApp inbox from Claude, ChatGPT, Cursor or any MCP client.
WhatsApp for Claude, ChatGPT or any AI agent: search, reply and send. Personal or Business API.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables WhatsApp automation through MCP protocol, allowing users to manage sessions, send messages, handle groups/communities, and access contacts through natural language interactions with AI agents.5 npm-
- AlicenseBqualityBmaintenanceEnables sending messages, images, documents and more on WhatsApp directly from any MCP-compatible AI, with tools for chat management, groups, and webhooks.371MIT
- AlicenseNot gradedqualityCmaintenanceIntegrates WhatsApp with AI agents, enabling message sending, chat search, media sharing, approval workflows, and activity summaries via any MCP client.1Apache 2.0
- FlicenseNot gradedqualityDmaintenanceBridge WhatsApp Business Cloud API to MCP-compatible clients, enabling AI assistants to read, search, and send WhatsApp messages.4 npm2-