🚀 WAHA WhatsApp MCP Server
Integração Completa do WhatsApp via Model Context Protocol
Transforme seu WhatsApp em uma API poderosa acessível via MCP Tools
✨ O que é este projeto?
Este é um servidor MCP (Model Context Protocol) que conecta seu WhatsApp a qualquer LLM através da API WAHA, permitindo que modelos de IA interajam diretamente com o WhatsApp para:
- 📱 Enviar mensagens automaticamente
- 👥 Gerenciar grupos e contatos
- 🖼️ Compartilhar mídia
- 📊 Automatizar workflows de comunicação
- 🤖 Criar assistentes conversacionais
🎯 Por que usar?
🔥 Para Desenvolvedores
| 🚀 Para Businesses
|
🛠️ Funcionalidades Épicas
🖥️ Gerenciamento de Sessões (6 ferramentas)
# Controle total sobre suas sessões WhatsApp
list_sessions() # 📋 Lista todas as sessões
get_session_info(session) # ℹ️ Status detalhado
start_session(session) # ▶️ Iniciar conexão
stop_session(session) # ⏹️ Parar sessão
get_qr_code(session) # 📱 QR para autenticação
get_my_profile(session) # 👤 Dados do perfil
📤 Sistema de Mensagens (8 ferramentas)
# Envie qualquer tipo de conteúdo
send_text_message(chat_id, text) # 💬 Texto simples
send_image_from_url(chat_id, url, caption) # 🖼️ Imagem da web
send_image_base64(chat_id, data, filename) # 📸 Imagem local
send_file_from_url(chat_id, url, filename) # 📎 Qualquer arquivo
mark_as_read(chat_id) # ✅ Marcar como lido
start_typing(chat_id) # ⌨️ Indicador de digitação
stop_typing(chat_id) # ⏸️ Parar digitação
check_number_status(phone) # 🔍 Verificar número
💬 Gerenciamento de Chats (4 ferramentas)
# Controle total sobre conversas
get_chats() # 📜 Lista de chats
get_chat_messages(chat_id, limit) # 💭 Histórico de mensagens
archive_chat(chat_id) # 📦 Arquivar conversa
unarchive_chat(chat_id) # 📤 Desarquivar
👤 Sistema de Contatos (6 ferramentas)
# Gestão completa de contatos
get_all_contacts() # 📇 Lista completa
get_contact_info(contact_id) # ℹ️ Detalhes do contato
get_contact_profile_picture(contact_id) # 🖼️ Foto de perfil
block_contact(contact_id) # 🚫 Bloquear
unblock_contact(contact_id) # ✅ Desbloquear
check_number_status(phone) # 📱 Status no WhatsApp
👥 Administração de Grupos (8 ferramentas)
# Poder total sobre grupos
create_group(name, participants) # ➕ Criar grupo
get_groups() # 📋 Lista de grupos
get_group_info(group_id) # ℹ️ Detalhes do grupo
add_group_participants(group_id, participants) # 👥 Adicionar membros
remove_group_participants(group_id, participants) # ➖ Remover membros
get_group_invite_code(group_id) # 🔗 Código de convite
leave_group(group_id) # 🚪 Sair do grupo
🔍 Monitoramento & Debug (3 ferramentas)
# Mantenha tudo sob controle
ping_server() # 🏓 Status do servidor
get_server_version() # 📋 Versão atual
get_server_status() # 📊 Métricas detalhadas
⚡ Setup Ultra-Rápido
Installing via Smithery
To install FastMCP for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @fellipesaraiva88/fastmcp --client claude
1️⃣ Clone e Instale
# Clone o projeto
git clone <repository>
cd fastmcp/examples
# Instale dependências
pip install fastmcp httpx pydantic pydantic-settings
2️⃣ Execute o WAHA
# Opção 1: Docker (Recomendado)
docker run -it --rm -p 3000:3000/tcp devlikeapro/waha
# Opção 2: Docker Compose
# Crie um docker-compose.yml (veja exemplo abaixo)
docker-compose up -d
3️⃣ Configure (Opcional)
# Copie o arquivo de exemplo
cp .env.waha.example .env
# Edite suas configurações
nano .env
4️⃣ Execute o MCP
# Versão simples (6 ferramentas)
python waha_simple.py
# Versão completa (40+ ferramentas)
python waha_whatsapp.py
5️⃣ Teste Tudo
# Teste básico de conexão
python demo_waha.py test
# Demo completa
python demo_waha.py
🎨 Configuração Flexível
📄 Via arquivo .env | 🔧 Via código |
🎯 Fluxo de Trabalho Mágico
graph LR
A[🚀 Iniciar WAHA] --> B[📱 Criar Sessão]
B --> C[📋 Obter QR Code]
C --> D[📷 Escanear QR]
D --> E[✅ Sessão Ativa]
E --> F[💬 Enviar Mensagens]
E --> G[👥 Gerenciar Grupos]
E --> H[📊 Automatizar]
💡 Exemplos Práticos
🤖 Bot de Atendimento
# Resposta automática
def auto_responder():
chats = get_chats()
for chat in chats:
messages = get_chat_messages(chat['id'], 1)
if messages and not messages[0]['fromMe']:
send_text_message(chat['id'],
"Obrigado pela mensagem! Em breve retornaremos.")
📈 Notificações de Sistema
# Alertas para administradores
def send_alert(message, urgency="normal"):
admin_group = "123456789-admin@g.us"
emoji = "🚨" if urgency == "high" else "ℹ️"
send_text_message(admin_group, f"{emoji} {message}")
👥 Gestão de Grupos em Massa
# Adicionar usuário em múltiplos grupos
def add_to_multiple_groups(user_phone, group_list):
for group_id in group_list:
add_group_participants(group_id, [user_phone])
send_text_message(group_id, f"🎉 Bem-vindo(a), {user_phone}!")
🐳 Docker Compose Setup
Crie um docker-compose.yml para facilitar o deploy:
version: '3.8'
services:
waha:
image: devlikeapro/waha
restart: unless-stopped
ports:
- "3000:3000"
environment:
WAHA_WEBHOOK_URL: http://localhost:3001/webhook
WAHA_WEBHOOK_EVENTS: message,session.status
volumes:
- ./sessions:/app/sessions
mcp-server:
build: .
restart: unless-stopped
depends_on:
- waha
environment:
WAHA_BASE_URL: http://waha:3000
volumes:
- ./logs:/app/logs
📱 Formatos de Chat ID
| Tipo | Formato | Exemplo |
|---|---|---|
| 🇧🇷 Número BR | 55XXXXXXXXXXX | 5511999999999 |
| 🌍 Internacional | CCXXXXXXXXXX | 1234567890 |
| 👥 Grupo | XXXXX-XXXXX@g.us | 12345-67890@g.us |
| ⚡ Auto-Format | Número sem @ | 5511999999999 → 5511999999999@c.us |
🔥 Use Cases Reais
🏢 Para Empresas
🤖 Atendimento 24/7
| 📊 Alertas & Dashboards
| 👥 Gestão de Equipes
|
🚀 Para Desenvolvedores
🔧 Monitoramento
| 🎯 Marketing Automation
| 🔄 Integrações
|
🛡️ Segurança & Boas Práticas
✅ Recomendações
- 🔐 Use HTTPS em produção
- 🔑 Rotacione API keys regularmente
- 📝 Log todas as ações importantes
- 🚫 Rate limiting para evitar spam
- 🔒 Validação de entrada sempre
⚠️ Limitações do WhatsApp
- 📱 1 sessão por número
- ⏱️ Rate limits da API oficial
- 🚫 Números bloqueados podem afetar entrega
- 📋 ToS WhatsApp devem ser respeitados
🐛 Troubleshooting
❌ Erro de Conexão
# Verifique se WAHA está rodando
curl http://localhost:3000/ping
# Verifique logs do Docker
docker logs waha-container
# Teste conectividade
telnet localhost 3000
📱 QR Code não aparece
# Force restart da sessão
stop_session("default")
start_session("default")
get_qr_code("default")
# Verifique status
get_session_info("default")
💬 Mensagem não enviada
# 1. Verifique número
status = check_number_status("5511999999999")
# 2. Confirme sessão ativa
session = get_session_info("default")
# 3. Teste com número conhecido
send_text_message("5511999999999", "Teste")
🔧 Performance Issues
- Limite mensagens simultâneas: Max 10/segundo
- Use connection pooling: httpx.AsyncClient()
- Cache session info: Evite calls desnecessários
- Monitor memory: Grupos grandes consomem RAM
🎓 Tutoriais Avançados
🔄 Webhook Setup
from fastapi import FastAPI
from fastmcp import FastMCP
app = FastAPI()
mcp = FastMCP("WAHA Advanced")
@app.post("/webhook/message")
async def handle_message(data: dict):
if not data.get('fromMe'):
# Processar mensagem recebida
await process_incoming_message(data)
@mcp.tool
async def process_incoming_message(message_data: dict):
# Sua lógica aqui
pass
📊 Analytics & Metrics
import time
from collections import defaultdict
class WhatsAppAnalytics:
def __init__(self):
self.metrics = defaultdict(int)
def track_message(self, chat_id: str, message_type: str):
self.metrics[f"messages_{message_type}"] += 1
self.metrics[f"chat_{chat_id}"] += 1
def get_top_chats(self, limit: int = 10):
chat_metrics = {k: v for k, v in self.metrics.items()
if k.startswith('chat_')}
return sorted(chat_metrics.items(),
key=lambda x: x[1], reverse=True)[:limit]
🤝 Contribuindo
Adoramos contribuições! Aqui está como você pode ajudar:
- 🍴 Fork o repositório
- 🌟 Crie uma branch para sua feature
- ✅ Teste tudo thoroughly
- 📝 Documente suas mudanças
- 🚀 Envie um Pull Request
📋 Checklist para PRs
- [ ] ✅ Testes passando
- [ ] 📚 Documentação atualizada
- [ ] 🎨 Código formatado (black/flake8)
- [ ] 🔍 Type hints adicionados
- [ ] 📝 Changelog atualizado
📚 Recursos Extras
🔗 Links Úteis
- 📖 Documentação WAHA
- 🐙 WAHA GitHub
- ⚡ FastMCP Docs
- 💬 WhatsApp Business API
🎯 Roadmap
- [ ] 🔊 Suporte a áudio/voz
- [ ] 📋 Polls e interações
- [ ] 🏷️ Labels e tags
- [ ] 📺 Status/Stories
- [ ] 🤖 AI-powered responses
- [ ] 📊 Dashboard web
⭐ Gostou do projeto?
Dê uma estrela no repositório e compartilhe com seus amigos!
📄 Licença
Este projeto está sob a licença MIT. Veja LICENSE para mais detalhes.
Feito com ❤️ para a comunidade brasileira de desenvolvedores
Última atualização: Junho 2025
WAHA WhatsApp Server
Project Details
- fellipesaraiva88/fastmcp
- Apache License 2.0
- Last Updated: 6/14/2025
Recomended MCP Servers
Geocoding MCP server with GeoPY!
An MCP server that securely interfaces with your iMessage database via the Model Context Protocol (MCP), allowing LLMs...
BGG MCP provides access to the BoardGameGeek API through the Model Context Protocol, enabling retrieval and filtering of...
A Model Context Protocol server for Zendesk
This read-only MCP Server allows you to connect to SFTP data from Claude Desktop through CData JDBC Drivers....
Post any message to any g_cat with that space webhook url
MCP Server for Trino developed via MCP Python SDK
An MCP (Model Context Protocol) server for interacting with a Paperless-NGX API server. This server provides tools for...





