OpenWA MCP Server
Bridges AI agents to the OpenWA WhatsApp API, providing 40 tools for managing sessions, sending messages (text, images, video, documents, audio, stickers, location, contacts, polls), message actions (reply, forward, react, edit, delete), reading chat history and messages, managing contacts and groups, and configuring webhooks.
Click on "Install 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., "@OpenWA MCP Serversend a WhatsApp message to mom saying I'll be home by 8pm"
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.
OpenWA MCP Server
Model Context Protocol (MCP) server that bridges AI agents to the OpenWA WhatsApp API. Built with Bun + Hono and the official @hono/mcp transport.
Exposes 40 tools across sessions, messages, contacts, groups, and webhooks — so an agent (MaxKB, Claude, Cursor, any MCP client) can read and send WhatsApp messages through your self-hosted OpenWA gateway.
Features
40 curated tools mapped 1:1 from the OpenWA REST API spec
Streamable HTTP transport at
/mcp(single port, no extra process)Zod-validated inputs on every tool
Optional bearer-token auth on the MCP endpoint (
MCP_TOKEN)Zero config — one env var (API key), works with the default OpenWA setup
Docker-ready multi-stage build (oven/bun)
Related MCP server: wa-bridge
Requirements
Node 22+ (or just use the included Dockerfile)
A running OpenWA instance
An OpenWA API key (
owa_k1_...) — create one in the dashboard under API Keys (OPERATOR role for send tools)
Quick Start
cp .env.example .env # set OPENWA_URL + OPENWA_API_KEY
bun install
bun run dev # → http://localhost:3000/mcpDocker
cp .env.example .env
docker compose up -d --buildConfiguration
Env var | Default | Description |
|
| Base URL of your OpenWA instance |
| — | OpenWA API key (required) |
| (empty) | Bearer token MCP clients must send. If set, requests without |
|
| Port the MCP server listens on |
Connecting a client
Point any MCP client at the Streamable HTTP endpoint. If MCP_TOKEN is set, include it in headers:
{
"mcpServers": {
"openwa": {
"type": "http",
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Bearer <MCP_TOKEN>"
}
}
}
}Verify the handshake (include the token if MCP_TOKEN is set):
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer <MCP_TOKEN>" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'Tools (40)
Sessions — list_sessions · session_status · session_qr · session_start · session_stop
Send — send_text · send_image · send_video · send_document · send_audio · send_sticker · send_location · send_contact · send_poll
Message actions — reply_message · forward_message · react_message · edit_message · delete_message
Read — chat_history (live from WhatsApp) · list_messages (from local DB) · list_chats
Contacts — contact_check · list_contacts · get_contact · block_contact · unblock_contact
Groups — list_groups · get_group · create_group · group_add_participants · group_remove_participants · group_set_subject · group_set_description · group_join · group_get_invite
Webhooks — list_webhooks · create_webhook · delete_webhook
Project Structure
openwa-mcp/
├── src/
│ ├── index.ts # Hono app + StreamableHTTP transport at /mcp
│ └── mcp.ts # MCP server definition + 40 tools (Zod schemas)
├── Dockerfile # multi-stage oven/bun build
├── docker-compose.yml
├── package.json
├── .env.example
└── README.mdNotes
Two auth layers: the optional
MCP_TOKENgates the MCP endpoint itself (clients sendAuthorization: Bearer <token>); theOPENWA_API_KEYis held server-side and forwarded as theX-API-Keyheader to OpenWA on every call. Clients never see the OpenWA key.Send tools return
201= accepted by the gateway, not delivered. Checkcontacts/checkfirst for new numbers.chat_historyrequires the Baileys engine on OpenWA (whatsapp-web.js does not support it — returns 501).Media sends accept either
urlorbase64(+mimetype); decoded size capped at 50 MiB by OpenWA.If you expose the server publicly: set
MCP_TOKEN, and use a dedicated session-scoped OpenWA key (OPERATOR at most) rather than a master key.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityCmaintenanceWhatsApp MCP server that exposes messaging, groups, contacts, and profile management as tools and resources for AI agents, supporting Baileys and Meta Cloud API.Last updated19
- Alicense-qualityAmaintenanceA self-hosted WhatsApp bridge that exposes a stdio MCP server with ~20 tools for reading conversations, sending messages, managing groups, contacts, and aliases, enabling AI agents to operate WhatsApp directly.Last updated2MIT
- Alicense-qualityCmaintenanceMCP server that connects AI agents to WhatsApp using the multi-device API, enabling messaging, group management, and more as a regular user.Last updated7MIT
- Alicense-qualityBmaintenanceMCP server exposing WhatsApp Cloud API operations as tools for AI agents like Claude Code, Cursor, and Codex.Last updatedMIT
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LoopyOratory/openwa-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server