PocketMCP
Transforme seu telefone Android em um servidor MCP (Model Context Protocol). Agentes de IA e scripts de desktop podem chamar seu telefone para obter dados e ações ao vivo pela rede local.
Documentação
PocketMCP
Transforme seu telefone Android em um servidor MCP (Model Context Protocol). Agentes de IA e scripts de desktop podem acessar seu telefone para dados ao vivo e ações via LAN ou Tailscale.
Download (Pré-lançamento de Teste)
- Última versão de teste: v1.0.0-beta.1
- Esta versão é marcada como pré-lançamento e pode conter bugs enquanto o desenvolvimento ativo continua.
Compromisso com Código Aberto
O PocketMCP é totalmente open-source e a funcionalidade principal é gratuita. O projeto é licenciado sob MIT e contribuições da comunidade são bem-vindas.
Por que isso é útil
Casos de uso de alto valor para todos os usuários:
- Central de Comunicação: Envie mensagens pelo WhatsApp, Instagram, Messenger e faça chamadas do desktop
- Automação de Redes Sociais: Interaja com Instagram, YouTube, X/Twitter automaticamente
- Gerenciamento de Notificações: Monitore e responda a todas as notificações do telefone em tempo real
- Verificação diária de prontidão: "Qual é a minha bateria e onde está meu telefone agora?"
- Consulta de contatos: "Encontre o número da Alice nos meus contatos."
- Controle do ecossistema de apps: Inicie e gerencie 309+ aplicativos instalados
- Diagnóstico do telefone: Execute verificações seguras de shell sem desbloquear o telefone.
Ferramentas integradas
| Ferramenta | Descrição |
|---|---|
device_info | Bateria, modelo, SO, rede, memória |
get_location | Melhor localização recente dos provedores do dispositivo |
search_contacts | Buscar contatos por nome |
make_call | Fazer chamadas telefônicas para qualquer número |
send_message | Enviar mensagens via WhatsApp, Instagram, Messenger, Google Messages |
send_whatsapp_business_message | Envio dedicado do WhatsApp Business com segurança de contato |
whatsapp_automation | Automação avançada do WhatsApp com controle de acessibilidade |
social_media | Interações com Instagram, YouTube, X/Twitter |
app_actions | Ações com presets JSON para chamadas de automação mais simples |
notifications | Monitoramento e gerenciamento de notificações em tempo real |
shell | Executar comandos shell com filtros de segurança e timeout |
flashlight | Ligar/desligar/alternar lanterna e ler estado |
launch_app | Abrir um app instalado por pacote ou nome |
list_apps | Listar apps instalados iniciáveis (309+ apps detectados) |
global_action | Início/voltar/recentes/notificações/configurações rápidas/tela de bloqueio |
scroll_screen | Rolar o app atual via gesto de acessibilidade |
search_screen | Encontrar campo de busca na tela atual e digitar consulta com segurança |
tap | Tocar por texto visível/descrição de conteúdo ou coordenadas de tela |
volume_control | Ler e alterar níveis de volume de streaming |
phone_alert | Tocar e/ou vibrar o telefone para localizá-lo rapidamente |
voice_record | Gravar notas de voz pelo microfone |
transcribe_audio | Conversão de fala em texto pelo microfone ou caminho de arquivo de áudio local |
transcribe_file | Transcrição direta de arquivo de áudio por caminho |
transcribe_whatsapp_audio | Transcrever última nota de voz do WhatsApp/WhatsApp Business |
human_command | Roteador de comandos em linguagem natural entre as principais ferramentas |
http_request | Fazer requisições HTTP de saída pelo telefone |
read_file | Ler arquivos de caminhos de armazenamento permitidos |
🆕 Novos Recursos (v.0+)
📞 Chamadas Telefônicas e Mensagens
- Chamadas Diretas: Faça chamadas para qualquer número com suporte a nome de contato
- Mensagens Multi-Plataforma: WhatsApp, Instagram, Messenger, Google Messages
- Suporte ao WhatsApp Business: Prioriza o WhatsApp Business quando instalado
- Integração com Deep Links: Abre apps com conteúdo pré-preenchido
🤖 Automação Avançada do WhatsApp
- Automação Completa: Envie mensagens com seleção de contato e digitação
- Controle Passo a Passo: Selecione contatos, digite mensagens, pressione enviar/cancelar
- Integração com Acessibilidade: Automação completa de UI via serviço de acessibilidade
- Business e Pessoal: Suporta ambas as variantes do WhatsApp
🌐 Interações em Redes Sociais
- Instagram: Busca de perfil, interações com postagens (curtir, comentar, compartilhar)
- YouTube: Busca de vídeos, curtir/não curtir/comentar em vídeos
- X/Twitter: Busca de perfil, interações com postagens
- Deep Links: Navegação direta para conteúdo específico
🔔 Notificações em Tempo Real
- Monitoramento ao Vivo: Capture todas as notificações do dispositivo em tempo real
- Dados Completos: Título, texto, app, hora, prioridade, visibilidade
- Acesso Histórico: Notificações recentes com busca e filtros
- Gerenciamento: Limpar histórico, verificar status, obter contagens
Modelo de Segurança
- Autenticação por chave de API suportada via
X-API-Key(recomendado). - Uso em rede local por padrão; use Tailscale para acesso remoto.
- A ferramenta de shell bloqueia comandos de alto risco e impõe limites de timeout/saída.
- Leituras de arquivo são restritas ao armazenamento do app e raízes de armazenamento externo.
- URLs de loopback são bloqueadas em
http_request. - Serviço de Acessibilidade: Necessário para recursos avançados de automação.
- Acesso a Notificações: Necessário para monitoramento de notificações em tempo real.
Modelo de Confiabilidade
- O serviço em primeiro plano do Android mantém o servidor MCP ativo.
- O ciclo de vida iniciar/parar/status é explícito (
START,STOP,QUERY_STATUS). - A UI reflete o estado real do serviço usando broadcasts de status.
- Descoberta Aprimorada de Apps: Detecta 309+ apps iniciáveis (antes 25).
- Fallbacks Elegantes: Instruções de interação manual quando a automação não é possível.
Início Rápido
1) Instalar o app
Opção A: instalar pelo APK de pré-lançamento
- Baixe
PocketMCP-debug.apkde v1.0.0-beta.1 - Instale com ADB:
adb install -r PocketMCP-debug.apk
Opção B: compilar a partir do código-fonte e instalar
./gradlew assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apk
2) Iniciar o servidor no app
- Abra o PocketMCP.
- Defina a porta (padrão
8080). - Gere ou cole a chave de API.
- Inicie o servidor pelo interruptor ou botão.
- Copie o endpoint/configuração da seção Quick Connect.
3) Habilitar Permissões
Necessário para funcionalidade completa:
- Localização:
ACCESS_FINE_LOCATION(solicitada automaticamente na inicialização) - Contatos:
READ_CONTACTS(solicitada automaticamente na inicialização) - Câmera:
CAMERA(solicitada automaticamente na inicialização) - Telefone: permissão
CALL_PHONEnas configurações do app - Microfone: permissão
RECORD_AUDIOnas configurações do app - SMS: permissões
SEND_SMS,READ_SMS - Áudio/Armazenamento:
READ_MEDIA_AUDIOouREAD_EXTERNAL_STORAGE(solicitada automaticamente) - Notificações: Configurações > Apps > Acesso Especial > Acesso a Notificações
- Acessibilidade: Configurações > Apps > Acesso Especial > Serviços de Acessibilidade
4) Verificar o servidor
# health
curl http://192.168.1.100:8080/health
# list tools
curl -X POST http://192.168.1.100:8080/mcp \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Conexão com emulador (AVD do Android Studio)
Se o PocketMCP estiver rodando dentro de um emulador Android, não use 10.0.2.15 na configuração do cliente MCP do host.
Use encaminhamento de porta ADB e localhost:
powershell -ExecutionPolicy Bypass -File .\scripts\setup-emulator-mcp.ps1
Depois defina a URL do MCP para:
http://127.0.0.1:8080/mcp
Observações:
10.0.2.15é interno ao emulador (não acessível pelo host).10.0.2.2é para emulador -> host, não host -> emulador.
Exemplo de Configuração do Cliente MCP
Use mcp-config.example.json como modelo.
{
"mcpServers": {
"phone": {
"type": "streamableHttp",
"url": "http://192.168.1.100:8080/mcp",
"headers": {
"X-API-Key": "your-api-key"
}
}
}
}
Ponte Stdio (para clientes MCP somente stdio)
O PocketMCP inclui uma ponte stdio reforçada em mcp-bridge/bridge.mjs que faz proxy de chamadas MCP stdio para o endpoint HTTP MCP do seu telefone.
cd mcp-bridge
npm install
node bridge.mjs --url http://192.168.1.100:8080/mcp --api-key your-api-key --verbose
Opções de configuração da ponte:
--url: URL MCP do telefone de destino (adicionahttp://automaticamente se ausente)--api-key: chave de API enviada comoX-API-Key--timeout-ms: timeout por requisição (padrão20000)--tools-ttl-ms: TTL do cache de ferramentas (padrão30000)--no-tool-cache: desabilitar cache de ferramentas--verbose: emitir logs detalhados da ponte no stderr
Variáveis de ambiente equivalentes:
POCKET_MCP_URLPOCKET_MCP_API_KEYPOCKET_MCP_TIMEOUT_MSPOCKET_MCP_TOOLS_TTL_MSPOCKET_MCP_DISABLE_TOOL_CACHE=1POCKET_MCP_VERBOSE=1
Exemplo de Cliente Python
from pocket_mcp_client import PocketMCPClient
phone = PocketMCPClient("http://192.168.1.100:8080", api_key="your-api-key")
print(phone.device_info())
print(phone.list_apps(limit=25))
print(phone.notifications("list", 10))
print(phone.human_command("vibrate my phone for 5 seconds"))
O cliente Python agora inclui tentativas, exceções tipadas, validação de argumentos mais rigorosa e uma CLI:
# health check (default action)
python3 pocket_mcp_client.py 192.168.1.100:8080 your-api-key
# list tools
python3 pocket_mcp_client.py 192.168.1.100:8080 your-api-key --list-tools
# call one tool with JSON args
python3 pocket_mcp_client.py 192.168.1.100:8080 your-api-key \
--call send_message \
--args '{"app":"whatsapp","phone_number":"+15551234567","message":"hello from desktop"}'
Permissões
Algumas ferramentas exigem permissões especiais ou serviços do Android:
- Telefone (
CALL_PHONE) - Microfone (
RECORD_AUDIO) - SMS (
SEND_SMS,READ_SMS,RECEIVE_SMS) - Acesso a notificações (Notification Listener)
- Serviço de acessibilidade (para automação de UI)
Modelo de Segurança
- Autenticação por chave de API via
X-API-Key(recomendado) - Rede local primeiro; acesso remoto via redes privadas como Tailscale
- Restrições de comandos shell com limites de timeout/saída
- Restrições de caminho para leitura de arquivos
- Bloqueio de URL de loopback para
http_request
Observações de Confiabilidade
- Executa como serviço em primeiro plano do Android
- Ciclo de vida explícito do serviço (
START,STOP,QUERY_STATUS) - Atualizações de broadcast de status refletidas na UI
Roadmap
- Ferramentas de captura de câmera
- Mais automações orientadas por acessibilidade
- Suporte a WebSocket
- Fluxo de pareamento com um toque
- Fluxos de comandos por voz
Licença
MIT