Skip to main content
Glama

phantom-mcp

MCP-Server, der es Claude Code ermöglicht, iOS-Simulatoren, Android-Emulatoren und echte Geräte zu sehen und zu steuern. 22 Tools zum Testen mobiler Apps, ohne das Terminal zu verlassen.

Claude kann Screenshots machen, den Bildschirm lesen, tippen, scrollen, Felder ausfüllen, Assertionen prüfen, Videos aufnehmen — automatisch, auf iOS und Android.

Ein Testbericht mit Screenshots wird bei jeder Testsitzung automatisch generiert.


Architektur

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

Voraussetzungen

Tool

Erforderlich für

Überprüfung

macOS 13+

alles

-

Xcode 15+

iOS

xcode-select -p

Node.js 18+

alles

node --version

Appium 3+

iOS (WDA)

appium --version

xcuitest driver

iOS (WDA)

appium driver list --installed

Android SDK

Android

adb version


Installation

Option A — npm (empfohlen)

# 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 — aus den Quellen

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"

Die 22 Tools

Geräteverwaltung

Tool

Beschreibung

list_devices

Listet alle Geräte auf (iOS-Sims + Android-Emus + echte Geräte)

set_device

Wählt das aktive Gerät aus. Startet es automatisch, falls es ausgeschaltet ist

Beobachtung

Tool

Beschreibung

screenshot

Erstellt einen Screenshot des aktiven Geräts

get_ui_tree

Barrierefreiheitsbaum mit Index [N] für jedes Element

wait_for_element

Wartet darauf, dass ein Element erscheint (mit Timeout)

scroll_until_visible

Scrollt, bis ein Element gefunden wird

Assertionen

Tool

Beschreibung

assert_visible

Prüft, ob ein Text auf dem Bildschirm IST

assert_not_visible

Prüft, ob ein Text NICHT auf dem Bildschirm ist

Interaktion

Tool

Beschreibung

tap

Tippen (per Index, Koordinaten oder Text)

long_press

Langes Drücken (Kontextmenüs)

type_text

Texteingabe mit Clear-Option

swipe

Wischen (hoch/runter/links/rechts)

Navigation

Tool

Beschreibung

deep_link

Öffnet eine URL / einen Deep Link

Geräteaktionen

Tool

Beschreibung

shake

Simuliert ein Schütteln

rotate

Ändert die Ausrichtung (Hochformat/Querformat)

video_record

Startet/stoppt die Videoaufnahme

App-Lebenszyklus

Tool

Beschreibung

launch_app

Startet eine App per Bundle-ID / Paketname

kill_app

Schließt eine App

Analyse & Automatisierung (Stufe 3)

Tool

Beschreibung

accessibility_audit

Barrierefreiheitsprüfung: fehlende Labels, zu kleine Tippflächen, Bilder ohne Alt-Text

test_report

Automatischer Testbericht: start zum Beginnen der Nachverfolgung, end zum Generieren des Markdowns. Jede Aktion wird automatisch protokolliert.

visual_diff

Vergleicht zwei Screenshots Pixel für Pixel, um visuelle Regressionen zu erkennen

multi_device

Führt dieselbe Aktion auf mehreren Geräten mit einem Befehl aus


Automatische Funktionsweise

Geräteauswahl

Phantom startet niemals automatisch ein Gerät. Es fordert dich auf zu wählen:

  1. Wenn nur 1 Gerät aktiv ist, wird es automatisch verwendet

  2. Wenn mehrere aktiv sind, wirst du aufgefordert, mit set_device zu wählen

  3. Wenn keines aktiv ist, wird die Liste der verfügbaren Geräte angezeigt

Auto-Launch WDA (iOS)

WebDriverAgent wird automatisch beim ersten iOS-Tool gestartet, das es benötigt. Erster Start ~60-90s (Xcode-Build), danach sofort.

ADB Multi-Device (Android)

Alle ADB-Befehle zielen auf das Gerät ab, das über -s <serial> ausgewählt wurde. Keine Verwirrung bei mehreren Geräten.

Texteingabe (AZERTY-kompatibel)

Die Eingabe verwendet pbcopy + Cmd+V (Einfügen) anstelle der virtuellen Tastatur. Dies ist sofort einsatzbereit und funktioniert mit allen Tastaturlayouts (AZERTY, QWERTY usw.).

Automatischer Testbericht

Jede Aktion (Tippen, Eingeben, Wischen, Assertion...) wird automatisch mit einem Screenshot aufgezeichnet. Am Ende des Tests wird ein Markdown-Bericht in /tmp/phantom-report-xxx/ generiert.


Sicherheit

  • Alle Systembefehle laufen über execFile (keine Shell)

  • Eingaben werden per Regex validiert: Bundle-IDs, UDIDs, Paketnamen, AVD-Namen, URLs

  • iOS-Prädikate werden maskiert (Anti-Injection)

  • Android-Text wird für die Geräte-Shell maskiert

  • Kein as any, kein exec() Shell


Konfiguration

Optionale Umgebungsvariablen:

  • PHANTOM_WDA_PATH — Pfad zu WebDriverAgent (Standard: ~/.appium/...)

  • PHANTOM_WDA_URL — WDA-URL (Standard: http://localhost:8100)


Fehlerbehebung

WDA-Endlosschleife bei Absturz

MobAI oder ein anderes Tool verwendet Port 8100.

lsof -i :8100
pkill -f "MobAI"

"Kein Gerät verfügbar"

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

WDA startet nicht

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 nicht gefunden

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

Projektstruktur

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