Saltar al contenido
Device MCP

Documentación de Device MCP

Línea de comandos

Controla tu iPhone, iPad, dispositivo Android o simulador desde Terminal, scripts de shell y CI con device-mcp-cli, la línea de comandos de Device MCP. Todos los comandos pueden responder en JSON.

device-mcp-cli es la línea de comandos de Device MCP. Lo que haces en la app, o le pides a tu agente de IA, también lo puedes ejecutar desde Terminal, un script de shell, un Makefile o CI: ver la lista de tus dispositivos, hacer capturas de pantalla, leer la pantalla, tocar y escribir, abrir e instalar apps, simular la ubicación y gestionar tu licencia.

Todos los comandos pueden responder en JSON, así que tus scripts leen el resultado con jq en lugar de analizar texto.

1. Instalación

  • Homebrew: brew install --cask device-mcp añade device-mcp-cli a tu PATH.
  • Descargado desde el sitio web: ejecuta esto una vez en Terminal para añadirlo a tu PATH:
sudo ln -sf "/Applications/Device MCP.app/Contents/MacOS/device-mcp-cli" /usr/local/bin/device-mcp-cli

El enlace sigue funcionando cuando Device MCP se actualiza. Compruébalo con:

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

2. Cómo funciona

  • Device MCP ejecuta tus comandos. Los comandos de dispositivo van a la app Device MCP de tu Mac. Si no se está ejecutando, el comando pregunta antes de abrirla: --launch la abre sin preguntar (úsalo en scripts) y --no-launch nunca la abre. status, mcp, tools y logs nunca la abren.
  • Qué dispositivo: añade --device (o -d) con el nombre o el UDID de un dispositivo. Sin él, los comandos usan el dispositivo que elegiste con devices select o, si no, el que está seleccionado en Device MCP.
  • JSON: añade --json a cualquier comando. Los errores también llegan en JSON.
  • Tú tienes el control: instalar y eliminar apps, abrir enlaces, leer o cambiar el portapapeles y Build & Run te piden permiso primero en Device MCP, igual que con un agente de IA. Consulta Aprobaciones. Desvincular un dispositivo y desactivar tu licencia siempre piden permiso.
  • Free y Pro: todos los comandos funcionan con Device MCP Free, salvo Build & Run, la instalación de apps y el inspector de vistas 3D, que requieren Device MCP Pro. Free duplica un dispositivo a la vez.

3. Comandos

<device> es el nombre o el UDID de un dispositivo. Todos los comandos aceptan --json; los comandos de dispositivo aceptan --device.

Dispositivos

ComandoQué hace
devicesMuestra la lista de tus dispositivos: nombre, tipo, sistema operativo, conexión, estado y UDID. --all añade todos los simuladores y emuladores, y los modelos que puede tener un simulador nuevo.
devices infoEl modelo, el sistema operativo y el tamaño de pantalla de un dispositivo, y si se está duplicando y si está bloqueado. --settings añade sus ajustes de apariencia y accesibilidad.
devices select <device>Elige el dispositivo que usan los comandos siguientes y lo muestra en Device MCP.
devices start-mirroring, devices stop-mirroringInicia o detiene la duplicación de un dispositivo.
devices reconnectVuelve a conectar un dispositivo cuya duplicación se congeló.
devices unpair <device>Desvincula un iPhone o iPad de tu Mac.
devices remove <device>Quita un dispositivo de la lista de Device MCP.
simulatorsMuestra la lista de tus simuladores de iOS y watchOS y tus emuladores de Android.
simulators start <name>Inicia un simulador o emulador y espera hasta que se esté ejecutando. --model "iPhone 17 Pro" crea un simulador nuevo.
simulators stop <name>Apaga un simulador o emulador.

La pantalla

ComandoQué hace
screenshotGuarda una captura de pantalla a resolución completa. -o elige el archivo (.png o .jpg) o la carpeta; por defecto, ~/Pictures/Device MCP.
record start, record stopGraba la pantalla en un video en ~/Movies/Device MCP.
elementsMuestra lo que hay en la pantalla: el tipo, la etiqueta, el valor, el marco y la referencia (e12) de cada elemento, para tap --ref.

Toques y teclas

ComandoQué hace
tapToca un elemento por su texto (--text "Sign In"), por su referencia (--ref e12) o en un punto (-x 120 -y 640). --double toca dos veces y --long mantiene presionado.
type <text>Escribe en el campo activo. --field "Email" rellena un campo: lo toca, lo vacía y escribe. --submit presiona Return. - lee el texto de una tubería (pipe) o de un archivo.
scroll up|down|left|rightSe desplaza. --distance 300 mueve el contenido exactamente esa cantidad de puntos.
swipe --from x,y --to x,yDesliza de un punto a otro.
press <button>Presiona home, lock, volume_up, volume_down, mute, siri o back.
key <key>Presiona una tecla del teclado, con --modifier command y otros modificadores.
gesture <gesture>go_home, app_switcher, control_center, notification_center o spotlight.
rotate <orientation>portrait, landscape_left, landscape_right o portrait_upside_down.
hide-keyboardOculta el teclado en pantalla.
wait-for <text>Espera hasta que el texto aparezca en la pantalla (--gone: hasta que desaparezca), durante --timeout segundos como máximo.
alert accept|dismissResponde a una alerta del sistema, como una solicitud de permiso. --button toca un botón por su texto.

Apps

ComandoQué hace
appsMuestra la lista de apps instaladas: nombre, bundle ID y versión. --user muestra solo las apps que instalaste tú.
apps foregroundLa app que está en primer plano, con su bundle ID.
apps launch <app>Abre una app por su bundle ID o su nombre. --language, --locale, --arg y --env para una ejecución de prueba.
apps terminate <bundle-id>Cierra una app en ejecución.
apps install <path>Instala un .ipa, .app o .apk. Device MCP Pro.
apps uninstall <bundle-id>Elimina una app y sus datos.
apps container <bundle-id>Descarga los datos de una app de desarrollo como paquete .xcappdata, igual que Xcode.
open-url <url>Abre una página web o un enlace profundo (myapp://…).
build-and-run <project>Compila tu proyecto de Xcode, lo instala y lo abre. Device MCP Pro. Consulta Build & Run.
crashesMuestra la lista de informes de fallos, primero los más recientes. --app filtra por app.
crashes show <path>Muestra un informe de fallos: qué falló y dónde. --app muestra el fallo más reciente de una app.

Ajustes del dispositivo

ComandoQué hace
location set <latitude> <longitude>Simula una ubicación. location clear vuelve a la ubicación real.
appearance light|darkCambia el dispositivo al modo claro o al modo oscuro.
clipboard get, clipboard set <text>Lee o reemplaza el texto del portapapeles del dispositivo.

Device MCP

ComandoQué hace
statusSi Device MCP se está ejecutando, su versión, su servidor MCP y tu licencia.
app open, app quitAbre Device MCP en segundo plano, o lo cierra.
mcpSi el servidor MCP está activado, y su dirección. mcp on y mcp off lo activan y lo desactivan.
mcp setup claude|codexAñade Device MCP a Claude Code o Codex. --print muestra el comando en lugar de ejecutarlo.
mcp configEl JSON que aceptan otros clientes MCP, como Cursor.
licenseTu licencia: Free, o su plan, su clave, sus puestos y las versiones que cubre.
license activate <key>Activa una clave de licencia en este Mac.
license revokeDesactiva la licencia en este Mac y libera su puesto.
logsEl registro de Device MCP, para un informe de errores. -f sigue mostrando las líneas nuevas.

Todo lo demás

ComandoQué hace
call <tool> [name=value…]Ejecuta cualquiera de las herramientas MCP de Device MCP, igual que tu agente de IA.
toolsMuestra la lista de esas herramientas y sus argumentos.

4. Ejemplos

Inicia sesión y comprueba el resultado

Una prueba de humo (smoke test) para tu app, en un script de shell o un paso 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
}

Haz una captura de pantalla 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

Toca un elemento de la pantalla

elements muestra la pantalla con sus referencias. Busca una con jq y tócala:

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

Prueba tu app en otro idioma y otro 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

Compila y ejecuta en un simulador nuevo

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

Graba un error

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

Configura un Mac

En un Mac de CI o en el Mac de un nuevo compañero de equipo:

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 y códigos de salida

Con --json, un comando muestra un solo objeto JSON. Por ejemplo, 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"
    }
  ]
}

El kind de un dispositivo es iphone, ipad, watch, android, simulator o emulator. Su state es ready, locked, blocked (con issue y fix, que indican por qué y qué hacer), connecting, running, shut_down, booting, shutting_down, creating o starting.

Un error muestra {"error": {"code": "…", "message": "…"}}:

CódigoCódigo de salidaSignificado
not_running69Device MCP no se está ejecutando y no se abrió, o se cerró antes de responder.
no_answer69Device MCP se está ejecutando, pero no respondió: actualízalo, o ciérralo y vuelve a abrirlo.
not_installed69Device MCP no está instalado.
invalid_arguments64Un argumento incorrecto o una clave de licencia con un formato no válido.
pro_required1El comando requiere Device MCP Pro.
not_approved1Lo rechazaste en Device MCP, o nadie respondió.
timed_out1Device MCP no terminó a tiempo.
cancelled1Respondiste que no.
failed1Cualquier otro error: el mensaje indica por qué.

Un comando que funciona sale con el código 0.

6. Con tu agente de IA

Tu agente también puede usar la línea de comandos, por ejemplo para escribir un script de prueba o un paso de CI para tu app:

  • "Escribe un script que inicie sesión en mi iPhone y falle si la pantalla principal no se carga."
  • "Añade un paso de CI que haga una captura de cada pantalla del onboarding."

Los comandos que ejecuta tu agente aparecen en la pestaña Agent como device-mcp-cli. Consulta Actividad del agente.