phantom-mcp
phantom-mcp
MCP-сервер, который позволяет Claude Code видеть и управлять iOS-симуляторами, Android-эмуляторами и реальными устройствами. 22 инструмента для тестирования мобильных приложений, не покидая терминал.
Claude может делать скриншоты, считывать экран, нажимать, прокручивать, заполнять поля, проверять утверждения, записывать видео — автоматически, на iOS и Android.
Отчет о тестировании со скриншотами генерируется автоматически после каждой сессии тестирования.
Архитектура
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Предварительные требования
Инструмент | Требуется для | Как проверить |
macOS 13+ | всего | - |
Xcode 15+ | iOS |
|
Node.js 18+ | всего |
|
Appium 3+ | iOS (WDA) |
|
xcuitest driver | iOS (WDA) |
|
Android SDK | Android |
|
Установка
Вариант А — npm (рекомендуется)
# 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Вариант Б — из исходного кода
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"22 инструмента
Управление устройствами
Инструмент | Описание |
| Список всех устройств (iOS-симуляторы + Android-эмуляторы + реальные устройства) |
| Выбор активного устройства. Автоматический запуск, если выключено |
Наблюдение
Инструмент | Описание |
| Снимок экрана активного устройства |
| Дерево доступности с индексом [N] для каждого элемента |
| Ожидание появления элемента (с таймаутом) |
| Прокрутка до появления элемента |
Утверждения (Assertions)
Инструмент | Описание |
| Проверка, что текст ЕСТЬ на экране |
| Проверка, что текста НЕТ на экране |
Взаимодействие
Инструмент | Описание |
| Нажатие (по индексу, координатам или тексту) |
| Длительное нажатие (контекстные меню) |
| Ввод текста с опцией очистки |
| Свайп (вверх/вниз/влево/вправо) |
Навигация
Инструмент | Описание |
| Открытие URL / deep link |
Действия с устройством
Инструмент | Описание |
| Имитация встряхивания |
| Изменение ориентации (портретная/альбомная) |
| Запуск/остановка записи видео |
Жизненный цикл приложения
Инструмент | Описание |
| Запуск приложения по bundle ID / package name |
| Закрытие приложения |
Анализ и автоматизация (Уровень 3)
Инструмент | Описание |
| Аудит доступности: отсутствующие метки, слишком маленькие области нажатия, изображения без alt-текста |
| Автоматический отчет о тестировании: start для начала отслеживания, end для генерации markdown. Каждое действие отслеживается автоматически. |
| Сравнение двух скриншотов попиксельно для обнаружения визуальных регрессий |
| Выполнение одного и того же действия на нескольких устройствах одной командой |
Автоматическая работа
Выбор устройства
Phantom никогда не запускает устройство автоматически. Он просит вас выбрать:
Если активно только 1 устройство, он использует его автоматически
Если их несколько, он просит выбрать с помощью
set_deviceЕсли ни одного, он показывает список доступных устройств
Автозапуск WDA (iOS)
WebDriverAgent запускается автоматически при первом использовании инструмента iOS, которому он нужен. Первый запуск занимает ~60-90 секунд (сборка Xcode), затем — мгновенно.
ADB multi-device (Android)
Все команды ADB нацелены на устройство, выбранное через -s <serial>. Никакой путаницы при работе с несколькими устройствами.
Ввод текста (поддержка AZERTY)
Ввод использует pbcopy + Cmd+V (вставка) вместо виртуальной клавиатуры. Это происходит мгновенно и работает на всех раскладках клавиатуры (AZERTY, QWERTY и т.д.).
Автоматический отчет о тестировании
Каждое действие (tap, type, swipe, assert...) автоматически сохраняется со скриншотом. В конце теста в /tmp/phantom-report-xxx/ генерируется отчет в формате markdown.
Безопасность
Все системные команды проходят через
execFile(без оболочки shell)Входные данные проверяются регулярными выражениями: bundle ID, UDID, package name, имена AVD, URL
Предикаты iOS экранируются (защита от инъекций)
Текст для Android экранируется для оболочки устройства
Ноль
as any, нольexec()shell
Конфигурация
Опциональные переменные окружения:
PHANTOM_WDA_PATH— путь к WebDriverAgent (по умолчанию: ~/.appium/...)PHANTOM_WDA_URL— URL WDA (по умолчанию: http://localhost:8100)
Устранение неполадок
WDA постоянно падает
MobAI или другой инструмент использует порт 8100.
lsof -i :8100
pkill -f "MobAI""Нет доступных устройств"
xcrun simctl list devices available # iOS
adb devices -l # AndroidWDA не запускается
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 не найден
ls ~/Library/Android/sdk/platform-tools/adbСтруктура проекта
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 testThis server cannot be installed
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