/ Annuaire / Playground / iOS Simulator MCP
● Communauté joshuayoes ⚡ Instantané

iOS Simulator MCP

par joshuayoes · joshuayoes/ios-simulator-mcp

Pilotez xcrun simctl + idb depuis Claude — démarrez un simulateur, installez votre .app, tapez, écrivez, prenez des captures d'écran, enregistrez des vidéos, sans passer par Xcode.

iOS Simulator MCP enveloppe xcrun simctl d'Apple ainsi que idb de Facebook pour permettre à Claude d'opérer le simulateur iOS. Parfait pour les boucles de tests UI, la reproduction de bugs et la capture d'écrans/vidéos pour les tickets — exactement le genre de travail où passer entre Xcode et le chat est fastidieux.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

ios-simulator-mcp.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ios-simulator-mcp",
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "ios-simulator-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "ios-simulator-mcp"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add ios-simulator-mcp -- npx -y ios-simulator-mcp

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : iOS Simulator MCP

Générer les captures d'écran App Store sur tous les appareils

👤 Développeurs iOS préparant une release ⏱ ~25 min intermediate

Quand l'utiliser : Vous avez besoin de captures 6,5", 6,7", iPad en modes clair + sombre, rapidement.

Prérequis
  • Xcode + simctl — Installation Xcode standard
  • idb installébrew tap facebook/fb && brew install idb-companion
  • Bundle .app compiléxcodebuild -scheme YourApp -destination 'platform=iOS Simulator' build
Déroulement
  1. Configurer les appareils
    Démarre les simulateurs iPhone 15 Pro Max et iPad Pro 13 pouces. Liste-les quand ils sont prêts.✓ Copié
    → list_simulators affiche les deux en état Booted
  2. Définir la barre de statut
    Règle la barre de statut sur 9:41, batterie pleine, signal plein sur les deux. Style App Store.✓ Copié
    → status_bar_set réussit ; aspect propre
  3. Installer + captures d'écran
    Installe MyApp.app sur les deux. Lance, navigue Accueil → Profil → Paramètres, capture d'écran de chaque étape en mode clair et sombre. Sauvegarde sous /screenshots/<appareil>/<mode>/.✓ Copié
    → Dossier par appareil, avec variantes clair + sombre de chaque écran

Résultat : Pack complet de captures App Store en ~10 min, sans capture manuelle.

Pièges
  • Le simulateur démarre mais l'application crashe au lancement — Récupérez le log simctl ; vérifiez les entitlements manquants
  • Le contenu Dynamic Island couvre les tweaks de la barre de statut — Sur Pro Max, status_bar_set s'applique quand même sous DI
Combiner avec : filesystem

Capturer une vidéo de reproduction propre pour un bug UI

👤 Développeurs iOS / QA ⏱ ~10 min beginner

Quand l'utiliser : Le bug se reproduit uniquement dans le simulateur ; vous voulez une vidéo pour le ticket.

Déroulement
  1. Commencer l'enregistrement
    Démarre iPhone 15. Installe build.app. Lance l'enregistrement d'écran.✓ Copié
    → record_video_start retourne un recording id
  2. Reproduire
    Ouvre l'application. Tape sur Profil, puis sur le crayon Modifier. Tape 'Test' dans le champ nom. Tape Enregistrer. Attends 2 secondes.✓ Copié
    → Séquence exécutée ; le bug est visible s'il se reproduit
  3. Arrêter et joindre
    Arrête l'enregistrement, sauvegarde sous bug-1234.mov dans /tickets/.✓ Copié
    → MOV sauvegardé

Résultat : Vidéo de reproduction prête à joindre au ticket.

Pièges
  • Le tap rate sa cible car le layout diffère de l'attendu — Utilisez describe_ui d'abord pour trouver les frames actuelles
Combiner avec : filesystem · github

Exécuter une boucle de test de fumée après chaque rebuild

👤 Développeurs iOS dans un cycle build/test serré ⏱ ~15 min intermediate

Quand l'utiliser : Vous itérez sur un écran et voulez un test de fumée de 30 secondes après chaque rebuild.

Déroulement
  1. Rebuild + réinstaller
    Lance xcodebuild pour le scheme MyApp Debug, puis réinstalle sur le simulateur actif.✓ Copié
    → Installation réussit avec le nouveau bundle
  2. Piloter le chemin de fumée
    Ouvre l'app, connecte-toi avec le compte de test, navigue vers l'écran sur lequel je travaille, capture d'écran.✓ Copié
    → La capture semble correcte ; pas de crash dans le log

Résultat : Cycle build/test plus rapide sans tapping manuel.

Pièges
  • Le flux de connexion a un captcha — Utilisez un build contournant le captcha ou stubbez le flux d'auth

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

ios-simulator-mcp + filesystem

Sauvegarder les captures dans votre dépôt

Capturez les captures d'écran de tous les écrans principaux, sauvegardez sous /design/screenshots/.✓ Copié
ios-simulator-mcp + github

Ouvrir une issue de bug avec une vidéo de reproduction

Enregistre le bug, puis crée une issue GitHub en joignant le MOV et les étapes de reproduction.✓ Copié
ios-simulator-mcp + xcodebuildmcp

Compiler et lancer immédiatement un test de fumée

XcodeBuild : compile en Debug. Simulateur : installe + lance + capture d'écran.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
list_simulators (aucun) Première étape gratuit
boot_simulator device_id: str Démarrer un simulateur gratuit
install_app device_id, path: str (.app) Pousser un build gratuit
launch_app device_id, bundle_id: str Ouvrir l'application gratuit
tap device_id, x, y Taper sur une coordonnée gratuit
type_text device_id, text: str Saisir du texte gratuit
screenshot device_id, path? Capturer l'état gratuit
record_video_start device_id, path: str Commencer la vidéo gratuit
record_video_stop recording_id Terminer la vidéo gratuit
describe_ui device_id Trouver les coordonnées de tap gratuit
status_bar_set device_id, time, battery, signal Captures App Store propres gratuit

Coût et limites

Coût d'exécution

Quota d'API
Aucun — local
Tokens par appel
100–800 ; les captures référencées par chemin, non intégrées
Monétaire
OSS gratuit
Astuce
Utilisez describe_ui pour trouver les coordonnées de tap une fois plutôt que de deviner à répétition

Sécurité

Permissions, secrets, portée

Portées minimales : exécuter simctl + idb
Stockage des identifiants : Aucun — mais les données d'application dans le simulateur sont les vôtres
Sortie de données : Local uniquement
Ne jamais accorder : accès root / kernel

Dépannage

Erreurs courantes et correctifs

idb non trouvé

brew tap facebook/fb && brew install idb-companion ; aussi pip install fb-idb

Vérifier : idb list-targets
Le tap ne touche pas sa cible

Utilisez describe_ui ; les coordonnées diffèrent selon les tailles d'appareil ; l'élément peut être dans une sheet

Le simulateur démarre mais reste noir

Shutdown + reset du simulateur ; parfois le runtime Xcode a besoin d'être re-téléchargé

L'enregistrement est corrompu

Utilisez simctl io recordVideo directement ; le wrapper idb échoue parfois lors du mode veille macOS

Alternatives

iOS Simulator MCP vs autres

AlternativeQuand l'utiliserCompromis
XcodeBuildMCP (Sentry)Vous voulez build + simulateur dans un seul MCPPlus lourd ; portée plus large
MaestroVous voulez un DSL complet de test UINon piloté par LLM par défaut
Xcode Cloud / FastlaneCI de productionCouche différente ; non interactif

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills