WhatsApp MCP

Servidor MCP para a API Meta WhatsApp Cloud — envie mensagens de formato livre e modelos

Documentação

mcp-server-whatsapp

Servidor MCP para o CodeChap WhatsApp via API oficial da Meta Cloud.

Esta é a linha comercial da CodeChap (Poster 4 / +27 65 762 2206). A Holiday Stays possui seu próprio aplicativo e número na Meta — não aponte o Poster 4 para a HS.

Recursos

  • send_message — Texto de formato livre (somente dentro de uma janela ativa de atendimento ao cliente de 24 horas)
  • send_document — PDF/arquivo dentro da janela de 24h
  • send_quote / send_invoice — PDF via modelos quote / invoice (fora das 24h após aprovação)
  • send_email_settings — PDF via IMAP/SMTP da caixa de correio via email_guide (senha enviada separadamente)
  • send_template / upload_media / list_templates
  • list_inbox / get_message / mark_read — mensagens recebidas da caixa de entrada na nuvem

As mensagens recebidas são armazenadas na nuvem e enviadas por e-mail para ai@codechap.com.

Configuração (MCP / estação de trabalho)

~/.config/mcp-server-whatsapp/config.toml:

access_token = "EAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
phone_number_id = "123456789012345"
waba_id = "1622097682865634"
inbox_url = "https://codechap.com"
inbox_token = "inbox-api-bearer-token"

# Optional
# api_version = "v21.0"

Caixa de entrada na nuvem

A Meta entrega webhooks para https://codechap.com/webhook/whatsapp.

HostServidor de projetos da CodeChap (141.147.65.65)
Binário/home/codechap/wa-inbox/wa-inbox
Config/home/codechap/.config/mcp-server-whatsapp/inbox.toml (modo 600) — veja inbox.example.toml
Unitcodechap-wa-inbox.service
SQLite/home/codechap/wa-inbox/inbox.db
Nginxlocation /webhook/whatsapp no vhost codechap.com (deve ficar acima de location /)

O CloudPanel pode regenerar esse vhost. Se a entrada de mensagens parar após uma edição no painel, reinsira o trecho de deploy/nginx-whatsapp.conf e nginx -t && systemctl reload nginx.

Reconstrua/implante o binário da caixa de entrada (o servidor é aarch64):

export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
cargo build --release --target aarch64-unknown-linux-gnu --bin wa-inbox
scp target/aarch64-unknown-linux-gnu/release/wa-inbox codechap@141.147.65.65:~/wa-inbox/wa-inbox
ssh ubuntu@141.147.65.65 'sudo systemctl restart codechap-wa-inbox'

Uso (MCP)

send_message

{ "to": "+27821234567", "body": "Hello from CodeChap!" }

send_template

{
  "to": "+27821234567",
  "template_name": "order_confirmation",
  "language_code": "en_US",
  "components": "[{\"type\":\"body\",\"parameters\":[{\"type\":\"text\",\"text\":\"John\"},{\"type\":\"text\",\"text\":\"tomorrow\"}]}]"
}

send_quote

{
  "to": "+27821234567",
  "pdf_path": "/path/to/quote.pdf",
  "customer_name": "Derrick",
  "quote_ref": "Q-1001"
}

Usa o modelo quote (en, UTILITY) com um cabeçalho de documento. A Meta deve tê-lo aprovado (list_templates). Dentro da janela de 24h, você também pode send_document.

list_inbox

{ "from": "+27821234567", "limit": 20 }

from e limit são opcionais.

Trabalhos futuros

  • Ferramenta de upload de mídia (upload_media) para PDFs de cotações / cabeçalhos de modelos
  • Baixar mídia recebida para a caixa de entrada na nuvem

Desenvolvimento

cargo test
cargo build --release

Binários: mcp-server-whatsapp (stdio MCP) e wa-inbox (webhook na nuvem).

Licença

MIT (ou o que você preferir)