MCP Hub
Back to servers

phantom-mcp

An MCP server that enables Claude Code to visually test and control iOS simulators, Android emulators, and real devices through 22 automation tools. It automatically generates test reports with screenshots for mobile app testing directly from the terminal.

glama
Updated
Apr 13, 2026

phantom-mcp

Serveur MCP qui permet a Claude Code de voir et controler des simulateurs iOS, emulateurs Android, et vrais devices. 22 tools pour tester des apps mobiles sans quitter le terminal.

Claude peut prendre des screenshots, lire l'ecran, taper, scroller, remplir des champs, verifier des assertions, enregistrer des videos — automatiquement, sur iOS et Android.

Un rapport de test avec screenshots est genere automatiquement a chaque session de test.


Architecture

Claude Code
    | MCP protocol (stdio)
    v
Phantom (Node.js TypeScript)
    |                       |
    v                       v
iOS                      Android
  xcrun simctl             ADB
  WebDriverAgent           UIAutomator
  (localhost:8100)         (adb shell)
    |                       |
    v                       v
Simulateur / iPhone    Emulateur / Device

Prerequis

OutilRequis pourComment verifier
macOS 13+tout-
Xcode 15+iOSxcode-select -p
Node.js 18+toutnode --version
Appium 3+iOS (WDA)appium --version
xcuitest driveriOS (WDA)appium driver list --installed
Android SDKAndroidadb version

Installation

Option A — npm (recommande)

# 1. Installer le package
npm install -g phantom-mcp

# 2. Installer Appium + driver iOS
npm install -g appium
appium driver install xcuitest

# 3. Enregistrer dans Claude Code
claude mcp add -s user phantom -- npx phantom-mcp

Option B — depuis les sources

git clone https://github.com/nthimpulse/phantom-mcp.git
cd phantom-mcp
npm install
npm run build
claude mcp add -s user phantom -- node "$(pwd)/build/index.js"

Les 22 tools

Device management

ToolDescription
list_devicesListe tous les devices (iOS sims + Android emus + vrais devices)
set_deviceSelectionne le device actif. Boot auto si eteint

Observation

ToolDescription
screenshotCapture l'ecran du device actif
get_ui_treeArbre d'accessibilite avec index [N] pour chaque element
wait_for_elementAttend qu'un element apparaisse (avec timeout)
scroll_until_visibleScroll jusqu'a trouver un element

Assertions

ToolDescription
assert_visibleVerifie qu'un texte EST a l'ecran
assert_not_visibleVerifie qu'un texte N'EST PAS a l'ecran

Interaction

ToolDescription
tapTape (par index, coordonnees, ou texte)
long_pressAppui long (menus contextuels)
type_textSaisie de texte avec option clear
swipeSwipe (up/down/left/right)

Navigation

ToolDescription
deep_linkOuvre une URL / deep link

Device actions

ToolDescription
shakeSimule un shake
rotateChange l'orientation (portrait/landscape)
video_recordDemarre/arrete l'enregistrement video

App lifecycle

ToolDescription
launch_appLance une app par bundle ID / package name
kill_appFerme une app

Analyse & Automation (Tier 3)

ToolDescription
accessibility_auditAudit accessibilite : labels manquants, tap targets trop petits, images sans alt text
test_reportRapport de test automatique : start pour commencer le suivi, end pour generer le markdown. Chaque action est tracee automatiquement.
visual_diffCompare deux screenshots pixel par pixel pour detecter les regressions visuelles
multi_deviceExecute la meme action sur plusieurs devices en une commande

Fonctionnement automatique

Selection de device

Phantom ne boot jamais un device automatiquement. Il te demande de choisir :

  1. Si 1 seul device est actif, il l'utilise automatiquement
  2. Si plusieurs, il te demande de choisir avec set_device
  3. Si aucun, il te montre la liste des devices disponibles

Auto-launch WDA (iOS)

WebDriverAgent est lance automatiquement au premier tool iOS qui en a besoin. Premier lancement ~60-90s (build Xcode), ensuite instantane.

ADB multi-device (Android)

Toutes les commandes ADB ciblent le device selectionne via -s <serial>. Pas de confusion multi-device.

Saisie de texte (AZERTY compatible)

La saisie utilise pbcopy + Cmd+V (paste) au lieu du clavier virtuel. C'est instantane et fonctionne sur tous les layouts clavier (AZERTY, QWERTY, etc.).

Rapport de test automatique

Chaque action (tap, type, swipe, assert...) est automatiquement enregistree avec un screenshot. A la fin du test, un rapport markdown est genere dans /tmp/phantom-report-xxx/.


Securite

  • Toutes les commandes systeme passent par execFile (pas de shell)
  • Inputs valides par regex : bundle IDs, UDIDs, package names, AVD names, URLs
  • Predicats iOS echappes (anti-injection)
  • Texte Android echappe pour le shell device
  • Zero as any, zero exec() shell

Configuration

Variables d'environnement optionnelles :

  • PHANTOM_WDA_PATH — chemin vers WebDriverAgent (defaut: ~/.appium/...)
  • PHANTOM_WDA_URL — URL WDA (defaut: http://localhost:8100)

Troubleshooting

WDA crash en boucle

MobAI ou un autre outil utilise le port 8100.

lsof -i :8100
pkill -f "MobAI"

"Aucun device disponible"

xcrun simctl list devices available   # iOS
adb devices -l                        # Android

WDA ne demarre pas

cd ~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
xcodebuild -project WebDriverAgent.xcodeproj \
  -scheme WebDriverAgentRunner \
  -destination "platform=iOS Simulator,name=iPhone 17 Pro" \
  test

ADB non trouve

ls ~/Library/Android/sdk/platform-tools/adb

Structure du projet

phantom/
  src/
    index.ts                Point d'entree MCP (22 tools)
    platforms/
      types.ts              Interfaces communes
      ios/
        simctl.ts            Wrapper xcrun simctl
        wda.ts               Client WDA + auto-launch
      android/
        adb.ts               Wrapper ADB complet
    tools/                   22 tools (19 fichiers)
    utils/
      device-manager.ts      Detection + routing multi-device
      xml.ts                 Parser XML partage
  docs/
    README.md               Ce fichier
    TUTORIAL.md             Tuto pas-a-pas
    FLOWS.md                Exemples de flows de test

Reviews

No reviews yet

Sign in to write a review