Aller au contenu
Device MCP

Documentation Device MCP

Ligne de commande

Pilotez votre iPhone, iPad, appareil Android ou simulateur depuis Terminal, des scripts shell et la CI avec device-mcp-cli, la ligne de commande de Device MCP. Chaque commande peut répondre en JSON.

device-mcp-cli est la ligne de commande de Device MCP. Ce que vous faites dans l'app, ou demandez à votre agent IA de faire, vous pouvez l'exécuter depuis Terminal, un script shell, un Makefile ou la CI : lister vos appareils, prendre des captures d'écran, lire l'écran, toucher et saisir du texte, lancer et installer des apps, définir la position, et gérer votre licence.

Chaque commande peut répondre en JSON : vos scripts lisent le résultat avec jq au lieu d'analyser du texte.

1. Installation

  • Homebrew : brew install --cask device-mcp place device-mcp-cli dans votre PATH.
  • Téléchargé depuis le site web : exécutez ceci une fois dans Terminal pour l'ajouter à votre PATH :
sudo ln -sf "/Applications/Device MCP.app/Contents/MacOS/device-mcp-cli" /usr/local/bin/device-mcp-cli

Le lien continue de fonctionner quand Device MCP se met à jour. Vérifiez-le avec :

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

2. Fonctionnement

  • Device MCP exécute vos commandes. Les commandes d'appareil sont envoyées à l'app Device MCP sur votre Mac. Si elle n'est pas en cours d'exécution, la commande vous demande avant de l'ouvrir : --launch l'ouvre sans demander (à utiliser dans les scripts), --no-launch ne l'ouvre jamais. status, mcp, tools et logs ne l'ouvrent jamais.
  • Quel appareil : ajoutez --device (ou -d) suivi du nom ou de l'UDID d'un appareil. Sans cette option, les commandes utilisent l'appareil que vous avez choisi avec devices select, sinon celui qui est sélectionné dans Device MCP.
  • JSON : ajoutez --json à n'importe quelle commande. Les erreurs sont elles aussi renvoyées en JSON.
  • Vous gardez le contrôle : l'installation et la suppression d'apps, l'ouverture de liens, la lecture ou la modification du presse-papiers et Build & Run demandent d'abord votre accord dans Device MCP, comme pour un agent IA. Consultez Approbations. La dissociation d'un appareil et la désactivation de votre licence demandent toujours votre accord.
  • Version gratuite et Pro : toutes les commandes fonctionnent avec Device MCP Free, sauf Build & Run, l'installation d'apps et l'inspecteur de vues 3D, qui nécessitent Device MCP Pro. Device MCP Free recopie un appareil à la fois.

3. Commandes

<device> est le nom ou l'UDID d'un appareil. Toutes les commandes acceptent --json ; les commandes d'appareil acceptent --device.

Appareils

CommandeCe qu'elle fait
devicesListe vos appareils : nom, type, OS, connexion, état et UDID. --all ajoute tous les simulateurs et émulateurs, ainsi que les modèles possibles pour un nouveau simulateur.
devices infoLe modèle d'un appareil, son OS, la taille de son écran, l'état de sa recopie et de son verrouillage. --settings ajoute ses réglages d'apparence et d'accessibilité.
devices select <device>Choisit l'appareil qu'utilisent les commandes suivantes, et l'affiche dans Device MCP.
devices start-mirroring, devices stop-mirroringDémarre ou arrête la recopie d'un appareil.
devices reconnectReconnecte un appareil dont la recopie s'est figée.
devices unpair <device>Dissocie un iPhone ou un iPad de votre Mac.
devices remove <device>Retire un appareil de la liste de Device MCP.
simulatorsListe vos simulateurs iOS et watchOS et vos émulateurs Android.
simulators start <name>Démarre un simulateur ou un émulateur et attend qu'il soit en cours d'exécution. --model "iPhone 17 Pro" crée un nouveau simulateur.
simulators stop <name>Éteint un simulateur ou un émulateur.

L'écran

CommandeCe qu'elle fait
screenshotEnregistre une capture d'écran en pleine résolution. -o choisit le fichier (.png ou .jpg) ou le dossier ; par défaut, ~/Pictures/Device MCP.
record start, record stopEnregistre l'écran dans une vidéo, dans ~/Movies/Device MCP.
elementsListe ce qui est à l'écran : le type, le libellé, la valeur, le cadre et la référence (e12) de chaque élément, pour tap --ref.

Toucher et clavier

CommandeCe qu'elle fait
tapTouche un élément par son texte (--text "Sign In"), par sa référence (--ref e12) ou à un point donné (-x 120 -y 640). --double touche deux fois, --long touche de manière prolongée.
type <text>Saisit du texte dans le champ actif. --field "Email" remplit un champ : le touche, le vide, puis saisit le texte. --submit appuie sur Retour. - lit le texte depuis un pipe ou un fichier.
scroll up|down|left|rightFait défiler. --distance 300 déplace le contenu d'exactement ce nombre de points.
swipe --from x,y --to x,yBalaie d'un point à un autre.
press <button>Appuie sur home, lock, volume_up, volume_down, mute, siri ou back.
key <key>Appuie sur une touche du clavier, avec --modifier command ou un autre modificateur.
gesture <gesture>go_home, app_switcher, control_center, notification_center ou spotlight.
rotate <orientation>portrait, landscape_left, landscape_right ou portrait_upside_down.
hide-keyboardMasque le clavier à l'écran.
wait-for <text>Attend que le texte apparaisse à l'écran (--gone : qu'il disparaisse), pendant --timeout secondes au plus.
alert accept|dismissRépond à une alerte système, comme une demande d'autorisation. --button touche un bouton par son texte.

Apps

CommandeCe qu'elle fait
appsListe les apps installées : nom, identifiant de bundle et version. --user ne liste que les apps que vous avez installées.
apps foregroundL'app au premier plan, avec son identifiant de bundle.
apps launch <app>Lance une app par son identifiant de bundle ou son nom. --language, --locale, --arg et --env pour un lancement de test.
apps terminate <bundle-id>Quitte une app en cours d'exécution.
apps install <path>Installe un fichier .ipa, .app ou .apk. Device MCP Pro.
apps uninstall <bundle-id>Supprime une app et ses données.
apps container <bundle-id>Télécharge les données d'une app de développement sous forme de paquet .xcappdata, comme Xcode.
open-url <url>Ouvre une page web ou un lien profond (myapp://…).
build-and-run <project>Compile votre projet Xcode, l'installe et le lance. Device MCP Pro. Consultez Build & Run.
crashesListe les rapports de plantage, du plus récent au plus ancien. --app filtre par app.
crashes show <path>Affiche un rapport de plantage : ce qui a planté, et où. --app affiche le plantage le plus récent d'une app.

Réglages de l'appareil

CommandeCe qu'elle fait
location set <latitude> <longitude>Simule une position. location clear revient à la position réelle.
appearance light|darkPasse l'appareil en mode clair ou sombre.
clipboard get, clipboard set <text>Lit ou remplace le texte du presse-papiers de l'appareil.

Device MCP

CommandeCe qu'elle fait
statusIndique si Device MCP est en cours d'exécution, ainsi que sa version, son serveur MCP et votre licence.
app open, app quitOuvre Device MCP en arrière-plan, ou le quitte.
mcpIndique si le serveur MCP est activé, et son adresse. mcp on et mcp off l'activent et le désactivent.
mcp setup claude|codexAjoute Device MCP à Claude Code ou à Codex. --print affiche la commande à la place.
mcp configLe JSON qu'acceptent les autres clients MCP, comme Cursor.
licenseVotre licence : version gratuite, ou sa formule, sa clé, ses postes et les versions qu'elle couvre.
license activate <key>Active une clé de licence sur ce Mac.
license revokeDésactive la licence sur ce Mac et libère son poste.
logsLe journal de Device MCP, pour un rapport de bug. -f continue d'afficher les nouvelles lignes.

Tout le reste

CommandeCe qu'elle fait
call <tool> [name=value…]Exécute n'importe quel outil MCP de Device MCP, comme le fait votre agent IA.
toolsListe ces outils et leurs arguments.

4. Exemples

Se connecter et vérifier le résultat

Un test de fumée pour votre app, dans un script shell ou une étape 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
}

Prendre une capture d'écran de chaque appareil

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

Toucher un élément à l'écran

elements liste l'écran avec des références. Trouvez-en une avec jq, puis touchez-la :

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

Tester votre app dans une autre langue et à un autre endroit

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

Compiler et lancer sur un nouveau simulateur

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

Enregistrer un bug

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

Configurer un Mac

Sur un Mac de CI ou le Mac d'un nouveau collègue :

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 et codes de sortie

Avec --json, une commande affiche un seul objet JSON. Par exemple, 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"
    }
  ]
}

Le kind d'un appareil vaut iphone, ipad, watch, android, simulator ou emulator. Son state vaut ready, locked, blocked (avec issue et fix, qui indiquent pourquoi et quoi faire), connecting, running, shut_down, booting, shutting_down, creating ou starting.

Une erreur affiche {"error": {"code": "…", "message": "…"}} :

CodeCode de sortieSignification
not_running69Device MCP n'est pas en cours d'exécution et n'a pas été ouvert, ou il a quitté avant de répondre.
no_answer69Device MCP est en cours d'exécution mais n'a pas répondu : mettez-le à jour, ou quittez-le et rouvrez-le.
not_installed69Device MCP n'est pas installé.
invalid_arguments64Un argument incorrect ou une clé de licence mal formée.
pro_required1La commande nécessite Device MCP Pro.
not_approved1Vous l'avez refusée dans Device MCP, ou personne n'a répondu.
timed_out1Device MCP n'a pas terminé à temps.
cancelled1Vous avez répondu non.
failed1Tout le reste : le message indique pourquoi.

Une commande qui réussit se termine avec le code 0.

6. Avec votre agent IA

Votre agent peut aussi utiliser la ligne de commande, par exemple pour écrire un script de test ou une étape de CI pour votre app :

  • « Écris un script qui se connecte sur mon iPhone et échoue si l'écran d'accueil ne se charge pas. »
  • « Ajoute une étape de CI qui prend une capture d'écran de chaque écran du parcours d'onboarding. »

Les commandes que lance votre agent apparaissent dans l'onglet Agent sous le nom device-mcp-cli. Consultez Activité de l'agent.