Skip to main content

whatsapp-mcp-local

MCP server que dá a agentes IA visão e escrita no WhatsApp — o paralelo do chrome-devtools MCP para o WhatsApp.

  • Ver: conversas, mensagens e histórico completo.
  • Escrever: rascunho pre-preenchido + Enter com confirmação explícita (gate). Nada é enviado sem aprovação.
  • Seguro por design: zero protocolo não-oficial (sem Baileys/whatsmeow → sem risco de banimento), dados locais.

Plataformas (auto-detect)

Driver Onde funciona Como detecta
local (app nativo) macOS com o app WhatsApp instalado e logado Banco ChatStorage.sqlite existe
web (web.whatsapp.com) Qualquer SO com Google Chrome Banco do macOS não existe (ou WHATSAPP_DRIVER=web)

O server escolhe o driver automaticamente. Force com WHATSAPP_DRIVER=local|web|auto.

Requisitos

  • Python 3.12+ e uv
  • Driver local (macOS): app WhatsApp nativo instalado e logado + permissão de Acessibilidade para o processo (só para o Enter do envio)
  • Driver web (qualquer SO): Google Chrome instalado. Na primeira execução, escaneie o QR uma vez (o MCP abre o Chrome com perfil dedicado; depois o login é permanente)

Instalação

uvx whatsapp-mcp-local

Integração com opencode

Adicione em ~/.config/opencode/opencode.json (ou opencode.json do projeto):

{
  "mcp": {
    "whatsapp": {
      "type": "local",
      "command": ["uvx", "whatsapp-mcp-local"],
      "enabled": true
    }
  }
}

Reinicie o opencode. As tools send_message e confirm_send são marcadas destructive e pedem confirmação por padrão no cliente.

Integração com Claude Code

claude mcp add whatsapp-mcp -- uvx whatsapp-mcp-local

Ou via .mcp.json:

{
  "mcpServers": {
    "whatsapp-mcp": {
      "command": "uvx",
      "args": ["whatsapp-mcp-local"]
    }
  }
}

Tools

Tool Descrição Driver Flag
list_chats Lista conversas (nome, não-lidas, última msg) local (chat_id) / web (chat_name) RO
get_messages Lê mensagens de uma conversa local (chat_id) / web (chat_name) RO
search_messages Busca texto nas mensagens local RO
get_chat_info Metadados da conversa local RO
export_chat Exporta histórico para JSON/Markdown local RO
send_message Pre-preenche rascunho (não envia) ambos ⚠️ destrutiva
confirm_send(draft_id) Pressiona Enter (envia) — exige draft_id válido de send_message, expira em 120s ambos ⚠️ destrutiva
verify_sent Verifica no banco se a mensagem foi enviada local RO

Modelo de segurança

  1. Leitura: mode=ro sempre; o banco nunca é modificado (testes verificam hash antes/depois).
  2. Escrita em 2 passos: send_message só preenche o campo — sem Enter, sem envio (comportamento do próprio WhatsApp). O envio exige confirm_send ou Enter manual.
  3. Nunca grava em ChatStorage.sqlite/Axolotl.sqlite (cripto) — corrompe o app e não transmite ao servidor.
  4. JIDs mascarados nos outputs; textos truncados por config.
  5. Dados processados localmente; só o que o proprietário pedir vai para o modelo.

Testes

uv run pytest

Roadmap

  • Driver local (macOS) — validado E2E
  • Driver web (cross-platform via Chrome CDP) — implementado e testado com mocks
  • Auto-detecção de driver
  • Publicado no PyPI (uvx whatsapp-mcp-local) e GitHub
  • Validação E2E do driver web com QR logado (manual, depende de escanear QR 1x)

Aviso

Ferramenta para uso pessoal com a própria conta. O schema do banco e o DOM do web.whatsapp.com são do WhatsApp e podem mudar entre versões. Não use para enviar mensagens em nome de terceiros ou para fins não autorizados.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whatsapp_mcp_local-0.5.0.tar.gz (60.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

whatsapp_mcp_local-0.5.0-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file whatsapp_mcp_local-0.5.0.tar.gz.

File metadata

  • Download URL: whatsapp_mcp_local-0.5.0.tar.gz
  • Upload date:
  • Size: 60.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for whatsapp_mcp_local-0.5.0.tar.gz
Algorithm Hash digest
SHA256 b34e709d9ad6c2a815c647b1f6cf54e000d19883d5487cec4c39ec1bc2a1b98a
MD5 3afc4063a7bff3d9fdf4a1c9d6ec1eb3
BLAKE2b-256 11fbc0cb5375b097c150710ff3aacc1c29a4ba4d6f7e242c7e14a3bcb9edc74d

See more details on using hashes here.

File details

Details for the file whatsapp_mcp_local-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: whatsapp_mcp_local-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for whatsapp_mcp_local-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57ee2e9b0280d62636ea09de23c8c8344591c6cb12e779a20efb62cc99afabb1
MD5 2b7a40fed2f40ec424376c8893a74991
BLAKE2b-256 d89b1d6061b516fa0d3e1582cd293440ec7115a8bce97617a776b2b7cfe6ca79

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page