WhatsApp MCP Skill
Este skill permite enviar mensajes, archivos y gestionar grupos de WhatsApp desde GitHub Copilot usando el servidor MCP whatsapp-mcp-server (basado en whatsapp-web.js).
Paso 0 — Verificar si el MCP está disponible
Antes de cualquier operación, ejecuta healthcheck_whatsapp. Interpreta el resultado:
| Resultado | Acción |
|---|---|
"whatsapp": "ready" |
Continúa normalmente |
"whatsapp": "initializing" |
Espera 5-10 segundos y reintenta |
| Error / tool no disponible | Guía al usuario con references/install.md |
Flujo principal
Enviar mensaje de texto
- Buscar contacto:
find_whatsapp_contactcon nombre o número - Usar el
idque termina en@c.uscomochatId/phoneNumber - Siempre hacer
dryRun: trueprimero para que el usuario confirme - Con confirmación: enviar con
dryRun: false
Enviar archivo (PDF, imagen, VCF, etc.)
- Verificar que el archivo existe en disco (ruta absoluta)
- Si hay que convertir HTML→PDF: usar Chrome headless:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --headless=new --disable-gpu --no-sandbox \ --print-to-pdf="/ruta/output.pdf" --print-to-pdf-no-header \ "file:///ruta/input.html" dryRun: true→ confirmar →send_media_messagecondryRun: false
Grupos
- Listar grupos:
list_whatsapp_groups - Añadir miembro:
add_group_participant(necesita número normalizado) - Eliminar miembro:
remove_group_participant - Link de invitación:
get_group_invite_link
Historial de chat
get_chat_messagesconchatIdylimit(máx 100)- ⚠️ Los mensajes contienen datos personales (números de teléfono, texto de conversaciones). No almacenar ni exponer más allá de lo necesario para la operación actual.
Normalización de números de teléfono
El MCP normaliza automáticamente los números antes de usarlos. Formato interno: <dígitos>@c.us.
| Formato de entrada | Resultado | Caso de uso |
|---|---|---|
+34619880445 |
34619880445@c.us |
Número español con + |
34619880445 |
34619880445@c.us |
Número español sin + |
069912294428 |
4369912294428@c.us |
Número local austriaco (comienza con 0) |
43699123456 |
43699123456@c.us |
Número austriaco completo |
16505551234 |
16505551234@c.us |
Número USA |
Reglas de normalización (normalizePhoneToWaId):
- Se eliminan espacios, guiones y paréntesis.
- Se elimina el
+inicial si existe. - Si empieza con
0→ número local (ej. Austria069x) → se reemplaza el0por elDEFAULT_COUNTRY_CODEconfigurado (43por defecto). - Si ya tiene un código de país diferente al configurado (ej.
34...,1...) → no se modifica. Pasar tal cual.
⚠️ Error histórico: Antes de la corrección del 2025-06, el server añadía
43a cualquier número no local, causando que números españoles34619880445→4334619880445@c.us❌. Esto está corregido ensrc/whatsapp/client.ts.
Reglas importantes
- Siempre dryRun primero antes de enviar — nunca enviar sin confirmación del usuario.
- Los
chatIdpara contactos terminan en@c.us, para grupos en@g.us. - Para números no austriacos (ej. españoles
34..., americanos1...): pasar el número completo con código de país. El MCP lo detecta automáticamente y no le añade el43. - PDFs e imágenes:
send_media_messageacepta ruta absoluta en disco del servidor. - Si el contacto no aparece: probar con apellido/nombre invertidos o variantes de mayúsculas.
Referencia de tools
Ver references/tools.md para descripción completa de cada tool MCP disponible.
Instalación del MCP
Si el MCP no está disponible, ver references/install.md para guiar al usuario paso a paso.