green-api-mcp-gateway
MCP gateway for GREEN-API WhatsApp that lets AI agents send messages, manage instances, and receive notifications via WhatsApp using the Model Context Protocol.
README
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 metadataGET /.well-known/oauth-protected-resource— RFC 9728 metadataGET /authorize— browser-facing authorization formPOST /token— token exchange
Configuration
Via YAML
server:
transport: stdio # stdio | sse | http | hybrid
port: 8090
auth:
mode: config # config | proxy
cache_ttl: 300 # seconds (proxy mode only)
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 IDGREEN_API_TOKEN— API tokenGREEN_API_URL— API base URL (defaults tohttps://api.green-api.com)GREEN_API_TRANSPORT— transport:stdio,sse,http, orhybridGREEN_API_PORT— HTTP port (defaults to8090)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 toGREEN_API_BASE_URL, thenhttps://mcp.green-api.com)GREEN_API_AUTH_MODE—configorproxyGREEN_API_AUTH_CACHE_TTL— proxy-auth credential cache TTL (seconds)GREEN_API_WEBHOOK_MODE—pollingorreceiverLOG_LEVEL— log levelLOG_FORMAT—textorjson
Run
# With environment variables
export GREEN_API_INSTANCE_ID=1101000001
export GREEN_API_TOKEN=your_token
./green-api-mcp-gateway
# With a config file
./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
MCP Tools
Messaging
whatsapp_send_message— text messagewhatsapp_send_file— file by URLwhatsapp_send_location— locationwhatsapp_send_contact— contact (vCard)whatsapp_send_poll— pollwhatsapp_forward_messages— forwardwhatsapp_edit_message— editwhatsapp_delete_message— delete
Instance
whatsapp_get_state— authorization statewhatsapp_get_settings— current settingswhatsapp_set_settings— update settingswhatsapp_get_qr— authorization QR codewhatsapp_connect— connect instancewhatsapp_disconnect— disconnect instance
Contacts
whatsapp_get_contacts— contact listwhatsapp_get_contact_info— contact informationwhatsapp_check_whatsapp— phone number check
Groups
whatsapp_create_group— create a groupwhatsapp_get_group_data— group datawhatsapp_add_group_participant— add a participantwhatsapp_remove_group_participant— remove a participantwhatsapp_leave_group— leave a group
Notifications
whatsapp_receive_notification— receive an incoming notification (long-poll)
Partner API
whatsapp_create_instance— create an instancewhatsapp_delete_instance— delete an instancewhatsapp_get_instances— list instances
MCP Resources
whatsapp://instance/{id}/state— instance statewhatsapp://instance/{id}/settings— instance settings
MCP Prompts
whatsapp_customer_support— template for customer supportwhatsapp_broadcast— template for broadcast messaging
Dependencies
- mcp-go — MCP SDK
- whatsapp-api-client-golang — GREEN-API Go SDK
Development
go test ./...
gofmt -w .
GOOS=linux GOARCH=amd64 go build -o green-api-mcp-gateway-linux ./cmd/server
License
MIT — see LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。