green-api-mcp-gateway

Support Links

Guides & News

MCP gateway for GREEN-API WhatsApp. Lets AI agents (Claude Desktop, OpenClaw, Cursor, and others) send messages, manage instances, and receive notifications via WhatsApp using the Model Context Protocol.
What it does
Send text messages, files by URL, locations, contacts, polls. Forward and edit messages. Manage groups (create, fetch data, add/remove participants). Check phone numbers for WhatsApp, fetch contacts and their info. Get instance state and settings, QR code for authorization. Receive incoming notifications via polling or an HTTP receiver. Partner API for creating/deleting instances. Multi-instance support in a single gateway. Prompt templates for common scenarios (customer support, broadcasts). Prometheus metrics and OpenTelemetry.
Instructions for connecting the MCP server can be found on our website
Architecture
Clean Architecture (Ports & Adapters):
cmd/server/main.go β entry point, DI wiring
internal/
domain/ β business entities, errors, constants (zero dependencies)
application/ β ports (interfaces)
infrastructure/
auth.go β CredentialManager (in-memory credential store)
config/config.go β YAML + env configuration
greenapi/client.go β WhatsApp client via Go SDK
mcp/
server.go β MCP server (stdio/sse)
tools.go β MCP tools registration
resources.go β MCP resources
prompts.go β MCP prompts
webhook/
bridge.go β polling bridge
receiver.go β HTTP receiver
Build
go build -o green-api-mcp-gateway ./cmd/server
Requires Go 1.25+.
Transports & endpoints
The server supports four transports, selected via server.transport (or the GREEN_API_TRANSPORT env var):
| Transport | Endpoints (relative to host:port) | Use case |
|---|
stdio | stdin/stdout | Local CLIs (Claude Desktop, Cursor) launching the binary. |
sse | GET / (stream) + POST /message | Legacy MCP clients (SSE only). |
http | POST/GET /mcp | Streamable HTTP (MCP 2025-03-26+) β preferred for new clients. |
hybrid | /sse + /message and /mcp on one port | Public server: serves both legacy SSE and Streamable HTTP. |
All HTTP-based transports also expose:
GET /health, GET /healthz β health probes (no auth)
GET /favicon.ico, GET /favicon.png β GREEN-API icon
When auth.mode: proxy is enabled, the OAuth 2.0 PKCE endpoints are added too:
GET /.well-known/oauth-authorization-server β RFC 8414 metadata
GET /.well-known/oauth-protected-resource β RFC 9728 metadata
GET /authorize β browser-facing authorization form
POST /token β token exchange
Configuration
Via YAML
server:
transport: stdio
port: 8090
auth:
mode: config
cache_ttl: 300
green_api:
instances:
- id: 1101000001
api_token: "YOUR_TOKEN"
api_url: "https://api.green-api.com"
webhook:
mode: polling
polling_timeout: 20
rate_limit:
requests_per_second: 10
burst: 20
logging:
level: info
format: text
Via environment variables
Environment variables take precedence over the YAML config:
The variables below cover both deployment modes. Credentials variables (GREEN_API_INSTANCE_ID, GREEN_API_TOKEN, GREEN_API_URL) apply only to local stdio runs with auth.mode: config. For HTTP transports (sse on /sse + /message, http on /mcp, or hybrid) use auth.mode: proxy instead β credentials arrive in HTTP headers or via the built-in OAuth flow and the env credentials are ignored.
GREEN_API_INSTANCE_ID β instance ID
GREEN_API_TOKEN β API token
GREEN_API_URL β API base URL (defaults to https://api.green-api.com)
GREEN_API_TRANSPORT β transport: stdio, sse, http, or hybrid
GREEN_API_PORT β HTTP port (defaults to 8090)
GREEN_API_BASE_URL β public base URL (used for OAuth issuer/redirects, e.g. https://mcp.example.com)
GREEN_API_WIDGET_DOMAIN β unique widget origin for ChatGPT Apps submission metadata (defaults to GREEN_API_BASE_URL, then https://mcp.green-api.com)
GREEN_API_AUTH_MODE β config or proxy
GREEN_API_AUTH_CACHE_TTL β proxy-auth credential cache TTL (seconds)
GREEN_API_WEBHOOK_MODE β polling or receiver
LOG_LEVEL β log level
LOG_FORMAT β text or json
Run
export GREEN_API_INSTANCE_ID=1101000001
export GREEN_API_TOKEN=your_token
./green-api-mcp-gateway
./green-api-mcp-gateway --config config.yaml
Integration
Claude Desktop (local stdio)
Add to claude_desktop_config.json:
{
"mcpServers": {
"whatsapp": {
"command": "/path/to/green-api-mcp-gateway",
"args": ["--config", "/path/to/config.yaml"]
}
}
}
OpenClaw
mcp:
servers:
- name: whatsapp
command: /path/to/green-api-mcp-gateway
args: ["--config", "/path/to/config.yaml"]
Docker
docker build -t green-api-mcp-gateway .
docker run --rm -i \
-e GREEN_API_INSTANCE_ID=1101000001 \
-e GREEN_API_TOKEN=your_token \
green-api-mcp-gateway
Messaging
Link to documentation
whatsapp_send_message β text message
whatsapp_send_file β file by URL
whatsapp_send_location β location
whatsapp_send_contact β contact (vCard)
whatsapp_send_poll β poll
whatsapp_forward_messages β forward
whatsapp_edit_message β edit
whatsapp_delete_message β delete
Instance
Link to documentation
whatsapp_get_state β authorization state
whatsapp_get_settings β current settings
whatsapp_set_settings β update settings
whatsapp_get_qr β authorization QR code
whatsapp_connect β connect instance
whatsapp_disconnect β disconnect instance
Link to documentation
whatsapp_get_contacts β contact list
whatsapp_get_contact_info β contact information
whatsapp_check_whatsapp β phone number check
Groups
Link to documentation
whatsapp_create_group β create a group
whatsapp_get_group_data β group data
whatsapp_add_group_participant β add a participant
whatsapp_remove_group_participant β remove a participant
whatsapp_leave_group β leave a group
Notifications
Link to documentation
whatsapp_receive_notification β receive an incoming notification (long-poll)
Partner API
Link to documentation
whatsapp_create_instance β create an instance
whatsapp_delete_instance β delete an instance
whatsapp_get_instances β list instances
MCP Resources
whatsapp://instance/{id}/state β instance state
whatsapp://instance/{id}/settings β instance settings
MCP Prompts
whatsapp_customer_support β template for customer support
whatsapp_broadcast β template for broadcast messaging
Dependencies
Development
go test ./...
gofmt -w .
GOOS=linux GOARCH=amd64 go build -o green-api-mcp-gateway-linux ./cmd/server
License
MIT β see LICENSE.