WhatsApp MCP Server
MCP server que conecta agentes de AI a WhatsApp usando la librerรญa evolution2-api-sdk.
Permite a un agente de AI enviar y recibir mensajes de WhatsApp de forma controlada, con permisos configurables y validaciรณn de whitelist.
Instalaciรณn
Paquete npm
npm install -g @jskirk/mcp-whatsapp-evo
Requisitos previos
- Node.js 18+ (preferiblemente 20+)
- npm o yarn
- Una instancia de Evolution API corriendo
Desarrollo (desde el repo)
git clone https://github.com/jskfox/mcp-whatsapp-evo.git
cd mcp-whatsapp-evo
npm install
npm run build
Configuraciรณn
La configuraciรณn se realiza mediante variables de entorno. Copia .env.example a .env y edita las credenciales:
cp .env.example .env
Variables de entorno
Ejemplo .env
EVOLUTION_HOST=http://localhost:8080
EVOLUTION_API_KEY=mi-api-key
EVOLUTION_INSTANCE_NAME=mi-instancia
PERMISSIONS_TIER=admin
WHITELIST_ENABLED=true
WHITELIST_PHONES=+5491112345678,+5491187654321
[email protected]
WHITELIST_BLOCK_UNKNOWN=true
WEBHOOK_PORT=3000
WEBHOOK_PATH=/webhook
WEBHOOK_TOKEN=mi-token-secreto
Uso
Ejecuciรณn con npx (sin instalar)
# Carga variables de entorno desde .env
export $(cat .env | xargs)
npx @jskirk/mcp-whatsapp-evo
# O directamente con dotenv
node -r dotenv/config node_modules/.bin/mcp-whatsapp-evo
Ejecuciรณn instalada globalmente
# Despuรฉs de: npm install -g @jskirk/mcp-whatsapp-evo
mcp-whatsapp-evo
Integraciรณn con Editors usando npx
Si prefieres usar npx en lugar del binario global, configura tu editor asรญ:
Windsurf (npx)
{
"mcpServers": {
"whatsapp": {
"command": "bash",
"args": ["-c", "source ~/.env_whatsapp && npx @jskirk/mcp-whatsapp-evo"]
}
}
}
Cursor (npx)
{
"mcpServers": {
"whatsapp": {
"command": "bash",
"args": ["-c", "source ~/.env_whatsapp && npx @jskirk/mcp-whatsapp-evo"]
}
}
}
Claude Desktop (npx)
{
"mcpServers": {
"whatsapp": {
"command": "bash",
"args": ["-c", "source ~/.env_whatsapp && npx @jskirk/mcp-whatsapp-evo"]
}
}
}
VS Code (npx)
{
"mcpServers": {
"whatsapp": {
"command": "bash",
"args": ["-c", "source ~/.env_whatsapp && npx @jskirk/mcp-whatsapp-evo"]
}
}
}
Crea ~/.env_whatsapp con las variables:
EVOLUTION_HOST=http://localhost:8080
EVOLUTION_API_KEY=mi-api-key
EVOLUTION_INSTANCE_NAME=mi-instancia
PERMISSIONS_TIER=admin
WHITELIST_ENABLED=true
WHITELIST_PHONES=+5491112345678
WEBHOOK_PORT=3000
WEBHOOK_TOKEN=mi-token
Herramientas Disponibles (16 tools)
Mensajerรญa
Instancia
Chats
Grupos
Sistema de Permisos
3 niveles jerรกrquicos:
admin > send > read
Un agente con tier send puede usar herramientas read y send, pero no admin.
Whitelist
Cuando WHITELIST_ENABLED=true:
- Envรญos salientes: Solo puede enviar a nรบmeros/grupos en la whitelist
- Recepciones entrantes: Si
WHITELIST_BLOCK_UNKNOWN=true, ignora mensajes de nรบmeros no en whitelist
Cuando WHITELIST_ENABLED=false:
- Puede enviar a cualquier nรบmero
- recibe de cualquier nรบmero
Webhook (Mensajes Entrantes)
El servidor levanta un HTTP server en el puerto configurado (default: 3000).
El endpoint POST /webhook recibe mensajes entrantes de WhatsApp.
Configurar Webhook en Evolution API
En tu Evolution API, configura la URL del webhook:
http://tu-servidor:3000/webhook?token=tu-token-secreto
Formato del Webhook
{
"event": "messages.upsert",
"data": {
"key": {
"remoteJid": "[email protected]",
"fromMe": false
},
"message": {
"conversation": "Hola!"
},
"pushName": "Nombre"
}
}
Integraciรณn con n8n
Opciรณn 1: n8n como MCP Client
n8n puede usar este MCP server como integraciรณn:
- ** Instala el n8n MCP extension** (si disponible)
- Configura en n8n settings:
{
"mcpServers": {
"whatsapp": {
"command": "node",
"args": ["/path/to/mcp-whatsapp-evo/dist/index.js"]
}
}
}
- Usa las tools en workflows n8n para enviar mensajes de WhatsApp desde tus automatizaciones.
Opciรณn 2: n8n como Webhook Receiver
Puedes usar n8n para recibir eventos del MCP y procesarlos:
- El MCP recibe un mensaje entrante por webhook
- n8n hace polling a los recursos del MCP o recibe notificaciones
- n8n procesa y actรบa segรบn el contenido
Opciรณn 3: HTTP Request Node
Usa el n8n HTTP Request Node para llamar directamente a la Evolution API:
โโโโโโโโโโโโโโโ HTTP Request โโโโโโโโโโโโโโโโ
โ n8n โ โโโโโโโโโโโโโโโโโโโโโโโบ โ Evolution APIโ
โ Workflow โ โ (directo) โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
Esta opciรณn es รบtil si prefieres no usar MCP pero quieres automatizar con n8n.
Casos de Uso
1. Escalation Agent (Man in the Loop)
Cuando un agente necesita ayuda humana:
Agente AI โโsend_messageโโโบ WhatsApp โโwebhookโโโบ Humano
โฒ
โ
Responde
โ
Agente AI โโโโโ Continรบa โโโโโโโโโโโโโโโ
2. Notificaciones
El agente envรญa actualizaciones a usuarios:
Agente AI โโsend_messageโโโบ WhatsApp โโโบ Usuario
3. Queries
El agente consulta informaciรณn:
Agente AI โโget_messagesโโโบ WhatsApp โโโ Chat History
Logs
Los logs van a stdout/stderr:
[server] Starting WhatsApp MCP server...
[config] Loaded configuration from environment
[sdk] Evolution API SDK initialized
[sdk] Connected to WhatsApp instance
[mcp] Registered 16 tools
[mcp] MCP server started on stdio transport
[webhook] Webhook server running at http://localhost:3000
Troubleshooting
"Instance not connected"
Verifica que tu Evolution API tenga la instancia conectada y el webhook configurado.
"Number not in whitelist"
El nรบmero no estรก en la whitelist. Agrรฉgalo a .env en WHITELIST_PHONES.
"Permission denied"
El tier del agente es insuficiente para esa tool. Aumenta el tier en PERMISSIONS_TIER.
Tests fallan
npm test
Desarrollo
# Instalar dependencias
npm install
# Build
npm run build
# Modo watch
npm run watch
# Lint
npm run lint
# Tests
npm test
Publicar en npm
# Login en npm
npm login
# Publicar (scoped package requiere access)
npm publish --access public
Arquitectura de Seguridad
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Agente AI โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP (stdio)
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Server (mcp-whatsapp) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 1. Permission Guard (ยฟtiene tier suficiente?) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 2. Whitelist Validator (ยฟestรก en lista blanca?) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 3. Sanitizer (ยฟinput seguro?) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 4. Evolution SDK (ยฟrespuesta vรกlida?) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Evolution API / WhatsApp โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Licencia
ISC
Autor
Jorge Solano Kirk
Hecho con โค๏ธ