phantom-mcp
phantom-mcp
Servidor MCP que permite a Claude Code ver y controlar simuladores de iOS, emuladores de Android y dispositivos reales. 24 herramientas para probar aplicaciones móviles sin salir de la terminal.
Claude puede tomar capturas de pantalla, leer la pantalla, tocar, desplazarse, rellenar campos, verificar aserciones, grabar videos — automáticamente, en iOS y Android.
Se genera automáticamente un informe de prueba con capturas de pantalla 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 / DeviceRelated MCP server: mobile-device-mcp
Requisitos previos
Herramienta | Requerido para | Cómo verificar |
macOS 13+ | todo | - |
Xcode 15+ | iOS |
|
Node.js 18+ | todo |
|
Appium 3+ | iOS (WDA) |
|
xcuitest driver | iOS (WDA) |
|
Android SDK | Android |
|
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-mcpOpció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 24 herramientas
Gestión de dispositivos
Herramienta | Descripción |
| Lista todos los dispositivos (simuladores iOS + emuladores Android + dispositivos reales) |
| Selecciona el dispositivo activo. Arranca automáticamente si está apagado. Prepara automáticamente el dispositivo (se puede desactivar mediante skip_setup) |
| Pone el dispositivo en un estado limpio: limpiar portapapeles / sobrescritura de barra de estado / descartar teclado / forzar QWERTY en iOS |
Observación
Herramienta | Descripción |
| Captura la pantalla del dispositivo activo |
| Árbol de accesibilidad con índice [N] para cada elemento |
| Espera a que aparezca un elemento (con tiempo de espera) |
| Desplaza hasta encontrar un elemento |
Aserciones
Herramienta | Descripción |
| Verifica que un texto ESTÁ en la pantalla |
| Verifica que un texto NO ESTÁ en la pantalla |
Interacción
Herramienta | Descripción |
| Toca (por índice, coordenadas o texto). Descarta automáticamente el teclado si el objetivo está oculto |
| Pulsación larga (menús contextuales) |
| Entrada de texto con opción de limpiar y opción de verificar para volver a leer el valor después de escribir |
| Deslizar (arriba/abajo/izquierda/derecha) |
| Cierra el teclado virtual (no hace nada si no está visible) |
Navegación
Herramienta | Descripción |
| Abre una URL / enlace profundo |
Acciones del dispositivo
Herramienta | Descripción |
| Simula una sacudida |
| Cambia la orientación (vertical/horizontal) |
| Inicia/detiene la grabación de video |
Ciclo de vida de la aplicación
Herramienta | Descripción |
| Inicia una aplicación por ID de paquete / nombre de paquete |
| Cierra una aplicación |
Análisis y Automatización (Nivel 3)
Herramienta | Descripción |
| Auditoría de accesibilidad: etiquetas faltantes, objetivos táctiles demasiado pequeños, imágenes sin texto alternativo |
| Informe de prueba automático: start para comenzar el seguimiento, end para generar el markdown. Cada acción se rastrea automáticamente. |
| Compara dos capturas de pantalla píxel por píxel para detectar regresiones visuales |
| 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:
Si solo hay 1 dispositivo activo, lo usa automáticamente
Si hay varios, te pide que elijas con
set_deviceSi no hay ninguno, te muestra la lista de dispositivos disponibles
Auto-lanzamiento de WDA (iOS)
WebDriverAgent se lanza 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 todas las distribuciones 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, ceroexec()shell
Configuración
Variables de entorno opcionales:
PHANTOM_WDA_PATH— ruta hacia WebDriverAgent (predeterminado: ~/.appium/...)PHANTOM_WDA_URL— URL de WDA (predeterminado: http://localhost:8100)
Contribuir
Ver CONTRIBUTING.md para la configuración local, el patrón para añadir una nueva herramienta, las convenciones de nomenclatura y el flujo de trabajo de PR.
Ver también:
docs/LIMITATIONS.md — limitaciones conocidas + soluciones alternativas
docs/PATTERNS.md — recetas prácticas (DatePicker iOS, hojas inferiores, etc.)
docs/FEATURE_REQUESTS.md — características priorizadas para las próximas versiones
docs/CHANGES_2026-04-30.md — notas de la versión v2.3.0
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 # AndroidWDA 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" \
testADB no encontrado
ls ~/Library/Android/sdk/platform-tools/adbEstructura del proyecto
phantom/
src/
index.ts Point d'entree MCP (24 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/ 24 tools (21 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 testMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityFmaintenanceAn MCP server that provides comprehensive tools for managing iOS simulators, including device control, app lifecycle management, and UI automation. It enables developers to boot devices, install apps, capture screenshots, and simulate user interactions through natural language commands.3MIT
- AlicenseAqualityDmaintenanceMCP server that gives AI coding assistants the ability to see and interact with mobile devices. 49 tools for Android/iOS — AI-powered visual analysis (Claude + Gemini), smart tap/type by description, Flutter widget tree inspection, video recording, and test script generation. 4-tier element search with <1ms local matching. Free tier included, zero setup via npx.49793Business Source 1.1
- Alicense-qualityDmaintenanceMCP server for cross-platform mobile automation (iOS/Android) using accessibility trees and screenshots, enabling agents to interact with apps on simulators, emulators, and physical devices.7Apache 2.0
- Alicense-qualityDmaintenanceAn MCP server for mobile automation that enables LLMs to interact with Android and iOS devices through screenshot, tap, swipe, log analysis, and app lifecycle management.242MIT
Related MCP Connectors
MCP server for Appcircle mobile CI/CD platform.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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