Pular para o conteúdo
Device MCP

Docs do Device MCP

Linha de comando

Controle seu iPhone, iPad, dispositivo Android ou simulador pelo Terminal, por scripts de shell e em CI com o device-mcp-cli, a linha de comando do Device MCP. Todo comando pode responder em JSON.

O device-mcp-cli é a linha de comando do Device MCP. O que você faz no app, ou pede ao seu agente de IA, você também pode executar no Terminal, em um script de shell, em um Makefile ou em CI: listar seus dispositivos, fazer capturas de tela, ler a tela, tocar e digitar, abrir e instalar apps, definir a localização e gerenciar sua licença.

Todo comando pode responder em JSON, então seus scripts leem o resultado com jq em vez de analisar texto.

1. Instalação

  • Homebrew: brew install --cask device-mcp coloca o device-mcp-cli no seu PATH.
  • Baixado do site: execute isto uma vez no Terminal para colocá-lo no seu PATH:
sudo ln -sf "/Applications/Device MCP.app/Contents/MacOS/device-mcp-cli" /usr/local/bin/device-mcp-cli

O link continua funcionando quando o Device MCP se atualiza. Confira com:

device-mcp-cli --version
device-mcp-cli --help                  # every command
device-mcp-cli help apps launch        # one command, with its options

2. Como funciona

  • O Device MCP executa seus comandos. Os comandos de dispositivo vão para o app Device MCP no seu Mac. Se ele não estiver em execução, o comando pergunta antes de abri-lo: --launch o abre sem perguntar (use em scripts), --no-launch nunca o abre. status, mcp, tools e logs nunca o abrem.
  • Qual dispositivo: adicione --device (ou -d) com o nome ou o UDID de um dispositivo. Sem ele, os comandos usam o dispositivo que você escolheu com devices select; se não houver, o que está selecionado no Device MCP.
  • JSON: adicione --json a qualquer comando. Os erros também vêm em JSON.
  • Você no comando: instalar e remover apps, abrir links, ler ou alterar a área de transferência e o Build & Run pedem sua aprovação no Device MCP antes, como acontece com um agente de IA. Veja Aprovações. Desfazer o pareamento de um dispositivo e desativar sua licença sempre pedem confirmação.
  • Gratuito e Pro: todos os comandos funcionam no Device MCP Free, exceto o Build & Run, a instalação de apps e o inspetor de views em 3D, que exigem o Device MCP Pro. O Device MCP Free espelha um dispositivo por vez.

3. Comandos

<device> é o nome ou o UDID de um dispositivo. Todo comando aceita --json; os comandos de dispositivo aceitam --device.

Dispositivos

ComandoO que faz
devicesLista seus dispositivos: nome, tipo, sistema, conexão, estado e UDID. --all adiciona todos os simuladores e emuladores, e os modelos que um novo simulador pode ter.
devices infoO modelo, o sistema, o tamanho da tela e o estado do espelhamento e do bloqueio de um dispositivo. --settings adiciona os ajustes de aparência e de acessibilidade dele.
devices select <device>Escolhe o dispositivo que os próximos comandos usam e o mostra no Device MCP.
devices start-mirroring, devices stop-mirroringInicia ou para o espelhamento de um dispositivo.
devices reconnectReconecta um dispositivo cujo espelhamento congelou.
devices unpair <device>Desfaz o pareamento entre um iPhone ou iPad e o seu Mac.
devices remove <device>Tira um dispositivo da lista do Device MCP.
simulatorsLista seus simuladores do iOS e do watchOS e seus emuladores Android.
simulators start <name>Inicia um simulador ou emulador e espera até ele estar em execução. --model "iPhone 17 Pro" cria um novo simulador.
simulators stop <name>Desliga um simulador ou emulador.

A tela

ComandoO que faz
screenshotSalva uma captura de tela em resolução máxima. -o escolhe o arquivo (.png ou .jpg) ou a pasta; o padrão é ~/Pictures/Device MCP.
record start, record stopGrava a tela em um vídeo em ~/Movies/Device MCP.
elementsLista o que está na tela: o tipo, o rótulo, o valor, o frame e a ref (e12) de cada elemento, para usar com tap --ref.

Toque e teclas

ComandoO que faz
tapToca em um elemento pelo texto (--text "Sign In"), pela ref (--ref e12) ou em um ponto (-x 120 -y 640). --double toca duas vezes, --long faz um toque longo.
type <text>Digita no campo em foco. --field "Email" preenche um campo: toca nele, apaga o conteúdo e digita. --submit pressiona Return. - lê o texto de um pipe ou de um arquivo.
scroll up|down|left|rightRola a tela. --distance 300 move o conteúdo exatamente esse número de pontos.
swipe --from x,y --to x,yDesliza o dedo de um ponto a outro.
press <button>Pressiona home, lock, volume_up, volume_down, mute, siri ou back.
key <key>Pressiona uma tecla do teclado, com --modifier command e outros modificadores.
gesture <gesture>go_home, app_switcher, control_center, notification_center ou spotlight.
rotate <orientation>portrait, landscape_left, landscape_right ou portrait_upside_down.
hide-keyboardOculta o teclado na tela.
wait-for <text>Espera até o texto aparecer na tela (--gone: até ele sumir), por no máximo --timeout segundos.
alert accept|dismissResponde a um alerta do sistema, como um pedido de permissão. --button toca em um botão pelo texto.

Apps

ComandoO que faz
appsLista os apps instalados: nome, bundle ID e versão. --user lista só os apps que você instalou.
apps foregroundO app em primeiro plano, com o bundle ID dele.
apps launch <app>Abre um app pelo bundle ID ou pelo nome. --language, --locale, --arg e --env para uma abertura de teste.
apps terminate <bundle-id>Encerra um app em execução.
apps install <path>Instala um .ipa, .app ou .apk. Device MCP Pro.
apps uninstall <bundle-id>Remove um app e os dados dele.
apps container <bundle-id>Baixa os dados de um app de desenvolvimento como um pacote .xcappdata, como o Xcode.
open-url <url>Abre uma página da web ou um deep link (myapp://…).
build-and-run <project>Compila seu projeto Xcode, instala e abre o app. Device MCP Pro. Veja Build & Run.
crashesLista os relatórios de falhas, do mais recente ao mais antigo. --app filtra por app.
crashes show <path>Mostra um relatório de falhas: o que falhou e onde. --app mostra a falha mais recente de um app.

Ajustes do dispositivo

ComandoO que faz
location set <latitude> <longitude>Simula uma localização. location clear volta à localização real.
appearance light|darkMuda o dispositivo para o modo claro ou escuro.
clipboard get, clipboard set <text>Lê ou substitui o texto da área de transferência do dispositivo.

Device MCP

ComandoO que faz
statusSe o Device MCP está em execução, a versão dele, o servidor MCP e sua licença.
app open, app quitAbre o Device MCP em segundo plano ou o encerra.
mcpSe o servidor MCP está ativado, e o endereço dele. mcp on e mcp off o ativam e desativam.
mcp setup claude|codexAdiciona o Device MCP ao Claude Code ou ao Codex. --print mostra o comando em vez de executá-lo.
mcp configO JSON que outros clientes MCP, como o Cursor, usam.
licenseSua licença: Free, ou o plano, a chave, os assentos e as versões que ela cobre.
license activate <key>Ativa uma chave de licença neste Mac.
license revokeDesativa a licença neste Mac e libera o assento dela.
logsO log do Device MCP, para um relatório de bug. -f continua mostrando as linhas novas.

Todo o resto

ComandoO que faz
call <tool> [name=value…]Executa qualquer uma das ferramentas MCP do Device MCP, do jeito que seu agente de IA faz.
toolsLista essas ferramentas e os argumentos delas.

4. Exemplos

Faça login e confira o resultado

Um smoke test do seu app, em um script de shell ou em uma etapa de CI:

set -e
device-mcp-cli apps launch com.example.myapp --launch
device-mcp-cli wait-for "Sign In"
device-mcp-cli type "[email protected]" --field "Email"
device-mcp-cli type - --field "Password" < password.txt
device-mcp-cli tap --text "Sign In"
device-mcp-cli wait-for "Welcome" --timeout 20 || {
  device-mcp-cli screenshot -o failure.png
  exit 1
}

Faça uma captura de tela de cada dispositivo

device-mcp-cli devices --json |
  jq -r '.devices[] | select(.state == "ready" or .state == "running") | .udid' |
  while read -r udid; do device-mcp-cli screenshot --device "$udid" -o ~/Desktop/; done

Toque em um elemento da tela

elements lista a tela com as refs. Encontre uma com jq e toque nela:

REF=$(device-mcp-cli elements --json | jq -r '.elements[] | select(.label == "General") | .ref')
device-mcp-cli tap --ref "$REF"

Teste seu app em outro idioma e outro lugar

device-mcp-cli apps launch com.example.myapp --language fr --locale fr_FR
device-mcp-cli location set 48.8584 2.2945
device-mcp-cli open-url "myapp://map"
device-mcp-cli appearance dark

Compile e execute em um novo simulador

device-mcp-cli simulators start --model "iPhone 17 Pro" --launch
device-mcp-cli build-and-run ~/Projects/MyApp/MyApp.xcodeproj --scheme MyApp
device-mcp-cli screenshot -o ~/Desktop/myapp.png

Grave um bug

device-mcp-cli record start
# reproduce the bug on the device
device-mcp-cli record stop

Configure um Mac

Em um Mac de CI ou no Mac de um novo colega de equipe:

device-mcp-cli license activate --launch < license-key.txt
device-mcp-cli mcp on
device-mcp-cli mcp setup claude
device-mcp-cli status

5. JSON e códigos de saída

Com --json, um comando imprime um único objeto JSON. Por exemplo, device-mcp-cli devices --json:

{
  "devices" : [
    {
      "connection" : "USB",
      "current" : true,
      "kind" : "iphone",
      "mirroringStopped" : false,
      "model" : "iPhone 17 Pro",
      "name" : "My iPhone",
      "osVersion" : "27.0.1",
      "platform" : "iOS",
      "state" : "ready",
      "udid" : "00008150-000A1B2C3D4E5F60"
    }
  ]
}

O kind de um dispositivo é iphone, ipad, watch, android, simulator ou emulator. O state dele é ready, locked, blocked (com issue e fix dizendo o motivo e o que fazer), connecting, running, shut_down, booting, shutting_down, creating ou starting.

Um erro imprime {"error": {"code": "…", "message": "…"}}:

CódigoCódigo de saídaSignificado
not_running69O Device MCP não está em execução e não foi aberto, ou foi encerrado antes de responder.
no_answer69O Device MCP está em execução, mas não respondeu: atualize-o, ou encerre-o e abra-o de novo.
not_installed69O Device MCP não está instalado.
invalid_arguments64Um argumento errado ou uma chave de licença malformada.
pro_required1O comando exige o Device MCP Pro.
not_approved1Você recusou no Device MCP, ou ninguém respondeu.
timed_out1O Device MCP não terminou a tempo.
cancelled1Você respondeu que não.
failed1Qualquer outro erro: a mensagem diz o motivo.

Um comando bem-sucedido termina com o código 0.

6. Com seu agente de IA

Seu agente também pode usar a linha de comando, por exemplo, para escrever um script de teste ou uma etapa de CI para o seu app:

  • "Escreva um script que faça login no meu iPhone e falhe se a tela inicial não carregar."
  • "Adicione uma etapa de CI que faça uma captura de tela de cada tela do onboarding."

Os comandos que seu agente executa aparecem na aba Agent como device-mcp-cli. Veja Atividade do agente.