Skip to main content
Glama

phantom-mcp

Servidor MCP que permite a Claude Code ver y controlar simuladores de iOS, emuladores de Android y dispositivos reales. 22 herramientas para probar aplicaciones móviles sin salir de la terminal.

Claude puede tomar capturas de pantalla, leer la pantalla, tocar, deslizar, rellenar campos, verificar aserciones, grabar videos — automáticamente, en iOS y Android.

Se genera un informe de prueba con capturas de pantalla automáticamente en cada sesión de prueba.


Arquitectura

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

Requisitos previos

Herramienta

Requerido para

Cómo verificar

macOS 13+

todo

-

Xcode 15+

iOS

xcode-select -p

Node.js 18+

todo

node --version

Appium 3+

iOS (WDA)

appium --version

xcuitest driver

iOS (WDA)

appium driver list --installed

Android SDK

Android

adb version


Instalación

Opción A — npm (recomendado)

# 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

Opción B — desde las fuentes

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"

Las 22 herramientas

Gestión de dispositivos

Herramienta

Descripción

list_devices

Lista todos los dispositivos (simuladores iOS + emuladores Android + dispositivos reales)

set_device

Selecciona el dispositivo activo. Arranca automáticamente si está apagado

Observación

Herramienta

Descripción

screenshot

Captura la pantalla del dispositivo activo

get_ui_tree

Árbol de accesibilidad con índice [N] para cada elemento

wait_for_element

Espera a que aparezca un elemento (con tiempo de espera)

scroll_until_visible

Desplaza hasta encontrar un elemento

Aserciones

Herramienta

Descripción

assert_visible

Verifica que un texto ESTÁ en la pantalla

assert_not_visible

Verifica que un texto NO ESTÁ en la pantalla

Interacción

Herramienta

Descripción

tap

Toca (por índice, coordenadas o texto)

long_press

Pulsación larga (menús contextuales)

type_text

Entrada de texto con opción de limpiar

swipe

Deslizar (arriba/abajo/izquierda/derecha)

Navegación

Herramienta

Descripción

deep_link

Abre una URL / enlace profundo

Acciones del dispositivo

Herramienta

Descripción

shake

Simula una sacudida

rotate

Cambia la orientación (vertical/horizontal)

video_record

Inicia/detiene la grabación de video

Ciclo de vida de la aplicación

Herramienta

Descripción

launch_app

Inicia una aplicación por ID de paquete / nombre de paquete

kill_app

Cierra una aplicación

Análisis y Automatización (Nivel 3)

Herramienta

Descripción

accessibility_audit

Auditoría de accesibilidad: etiquetas faltantes, objetivos táctiles demasiado pequeños, imágenes sin texto alternativo

test_report

Informe de prueba automático: start para comenzar el seguimiento, end para generar el markdown. Cada acción se rastrea automáticamente.

visual_diff

Compara dos capturas de pantalla píxel por píxel para detectar regresiones visuales

multi_device

Ejecuta la misma acción en varios dispositivos en un solo comando


Funcionamiento automático

Selección de dispositivo

Phantom nunca arranca un dispositivo automáticamente. Te pide que elijas:

  1. Si solo hay 1 dispositivo activo, lo usa automáticamente

  2. Si hay varios, te pide que elijas con set_device

  3. Si no hay ninguno, te muestra la lista de dispositivos disponibles

Auto-lanzamiento de WDA (iOS)

WebDriverAgent se inicia automáticamente con la primera herramienta de iOS que lo necesite. El primer lanzamiento tarda ~60-90s (compilación de Xcode), luego es instantáneo.

ADB multidispositivo (Android)

Todos los comandos ADB se dirigen al dispositivo seleccionado mediante -s <serial>. Sin confusión multidispositivo.

Entrada de texto (compatible con AZERTY)

La entrada utiliza pbcopy + Cmd+V (pegar) en lugar del teclado virtual. Es instantáneo y funciona en todos los diseños de teclado (AZERTY, QWERTY, etc.).

Informe de prueba automático

Cada acción (tocar, escribir, deslizar, afirmar...) se registra automáticamente con una captura de pantalla. Al final de la prueba, se genera un informe markdown en /tmp/phantom-report-xxx/.


Seguridad

  • Todos los comandos del sistema pasan por execFile (sin shell)

  • Entradas validadas por regex: IDs de paquete, UDIDs, nombres de paquete, nombres de AVD, URLs

  • Predicados de iOS escapados (anti-inyección)

  • Texto de Android escapado para el shell del dispositivo

  • Cero as any, cero exec() shell


Configuración

Variables de entorno opcionales:

  • PHANTOM_WDA_PATH — ruta a WebDriverAgent (predeterminado: ~/.appium/...)

  • PHANTOM_WDA_URL — URL de WDA (predeterminado: http://localhost:8100)


Solución de problemas

WDA se bloquea en bucle

MobAI u otra herramienta está utilizando el puerto 8100.

lsof -i :8100
pkill -f "MobAI"

"Ningún dispositivo disponible"

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

WDA no arranca

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 no encontrado

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

Estructura del proyecto

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
-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nthImpulse/phantom-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server