Ghost in the Droid · MCP Server

MCP-Server · 4e3e40a3 · Quellenstand

MCP-Server · lesen und senden · MIT · lokal (stdio)

Beschreibung des Anbieters

Give any LLM agent a real Android or iPhone as its body. 62 MCP tools for mobile automation.

Werkzeuge

list_devices
List connected Android ADB devices and configured iOS Appium devices. Call this first to get the device serial you need for other tools. Angabe des Anbieters · Beleg 5
screenshot
Take a screenshot of the device screen. Returns a base64-encoded JPEG. Use this to SEE what's on screen before deciding what to tap.… Angabe des Anbieters · Beleg 5
get_elements
Get all UI elements on the current screen as a JSON array. Each element has: idx, text, content_desc, resource_id, class, bounds, center, clickable, scrollable.… Angabe des Anbieters · Beleg 5
tap
Tap at exact pixel coordinates (x, y) on the device screen. Angabe des Anbieters · Beleg 5
tap_element
Tap a UI element by its index from get_elements(). Call get_elements() first to see what's on screen and get element indices. Angabe des Anbieters · Beleg 5
swipe
Swipe from (x1,y1) to (x2,y2). Use for scrolling, pulling down notifications, etc.… Angabe des Anbieters · Beleg 5
type_text
Type text into the currently focused input field. Tap an input field first to focus it. Spaces are supported.… Angabe des Anbieters · Beleg 5
type_unicode
Type unicode text into the focused field. Android uses ADBKeyboard when configured; iOS uses WDA text entry. Use type_text() for plain ASCII. Angabe des Anbieters · Beleg 5
press_back
Press Back on Android or the best available iOS browser/navigation back action. Angabe des Anbieters · Beleg 5
press_home
Press the platform Home button. Returns to the home screen. Angabe des Anbieters · Beleg 5
press_key
Send a platform key event. Android accepts KEYCODE_* names, with the KEYCODE_ prefix added automatically. iOS supports WDA-backed HOME, ENTER/RETURN, and BACK/ESCAPE. Angabe des Anbieters · Beleg 5
launch_app
Launch an app by Android package name or iOS bundle id. Use search_apps() to find it. Args: device: ADB serial or ios:<udid>. package: App package name or iOS bundle id, e.g.… Angabe des Anbieters · Beleg 5
force_stop
Force-stop an Android package or terminate an iOS bundle id. Angabe des Anbieters · Beleg 5
app_state
Check whether an Android package or iOS bundle id is installed, running, or foreground. Angabe des Anbieters · Beleg 5
open_camera
Open the platform camera app in a specific mode. Android uses launcher/UI automation; iOS uses the Camera bundle and WDA UI controls. No package or bundle id is required.… Angabe des Anbieters · Beleg 5
speak_text
Make the phone speak text aloud using its built-in TTS engine. Works whether the agent runs on the phone or on a PC — the call always goes through the Ghost portal app running on the device.… Angabe des Anbieters · Beleg 5
search_apps
Search installed apps by name. Case-insensitive. Returns Android packages or iOS bundle ids. Example: search_apps('tiktok') → [{"name": "TikTok", "package": "com.zhiliaoapp.musically"}] Angabe des Anbieters · Beleg 5
list_apps
List installed apps with human-readable names and package names or bundle ids. iOS is limited to configured/common bundle ids verified through Appium. Angabe des Anbieters · Beleg 5
list_packages
List raw Android package names or iOS bundle ids. Prefer list_apps() for display names. Angabe des Anbieters · Beleg 5
long_press
Long press at coordinates. Use for context menus, drag initiation, etc. Angabe des Anbieters · Beleg 5
get_phone_state
Get current app, activity, keyboard state, and focused element. Quick way to check what app/screen the device is on without parsing full elements. Angabe des Anbieters · Beleg 5
device_health
Run a comprehensive device health check. iOS includes Appium/WDA status, active session details, and recovery steps. Angabe des Anbieters · Beleg 5
fix_device_health
Apply a recovery action returned by device_health.recommended_fix. Angabe des Anbieters · Beleg 5
get_screen_tree
Get an LLM-friendly indented UI hierarchy of the current screen. Each node shows: [idx] ClassName "label" [clickable] [x1,y1][x2,y2].… Angabe des Anbieters · Beleg 5
get_screen_xml
Get the raw normalized UI XML dump from the device. Android returns uiautomator XML; iOS returns normalized Appium/WDA XML. Use get_screen_tree() instead for a readable summary.… Angabe des Anbieters · Beleg 5
screenshot_annotated
Take a screenshot with numbered element labels overlaid on interactive elements. The numbers correspond to element indices from get_elements().… Angabe des Anbieters · Beleg 5
screenshot_cropped
Take a screenshot of a specific region of the screen. Coordinates are in device pixels. Use this to zoom in on a specific area (e.g., a form field, a notification, a chart).… Angabe des Anbieters · Beleg 5
start_screen_recording
Start recording the device screen. iOS uses WDA MJPEG captured through ffmpeg. Android uses adb screenrecord. Angabe des Anbieters · Beleg 5
stop_screen_recording
Stop a running device screen recording and save the MP4. Angabe des Anbieters · Beleg 5
screen_recording_status
Return active screen recording status for a device. Angabe des Anbieters · Beleg 5

Voraussetzungen

  • uvx · Paketmanager · erforderlich · Beleg 1
  • Python · Laufzeit · erforderlich · Beleg 6
  • Node.js · Laufzeit · erforderlich · Beleg 6
  • GHOST_HOME_OVERRIDE · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 7
  • OPENAI_API_KEY · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6
  • ANTHROPIC_API_KEY · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6
  • OPENROUTER_API_KEY · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6
  • DEFAULT_DEVICE · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6
  • IOS_DEVICE_UDID · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6
  • IOS_APPIUM_URL · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6
  • IOS_BUNDLE_ID · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6
  • IOS_DEVICES_JSON · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6
  • IOS_MJPEG_SERVER_PORT · Umgebungsvariable · Pflichtigkeit nicht deklariert · Beleg 6

Installation

uvx ghost-in-the-droid==1.3.2

Angaben zum Baustein

—: Angabe nicht belegt.

Repository-Lizenz
MIT
Letzter Repository-Commit

Commit innerhalb 90 Tagen

Dienstanbieter
Offizielle Dienstherkunft nicht belegt
Dienste
—
Bereiche
Vertrieb, Content
Plattformen
—
Version
1.3.2
Release
v1.5.1
Clients
Claude Desktop, Cursor, Windsurf
Repository-Themen
adb, android, android-automation, automation, bot-framework, fastapi, mcp, open-source, phone-farm, python

Zugriffe und Risiken

Regelbasiert abgeleitete Zugriffe
lesen, senden
Authentifizierung
—
Transport
stdio
Technische Prüfung
Ungeprüft

Fehlende Angaben bedeuten unbekannte Zugriffe. Vor dem Einsatz Konten, Dateien, Netzwerkverbindungen und Ausführungsrechte im konkreten Paket prüfen. Eine frische Änderung am Repository belegt keine Wartung jeder einzelnen Datei.

Nur die für den Arbeitsablauf nötigen Berechtigungen vergeben und Schreibaktionen mit einem Freigabeschritt absichern. Lizenz und Wartungsdatum sind keine Sicherheitsfreigabe.

Der Lizenzbeleg betrifft das Quellcode-Repository. Einzelne Unterpakete und gehostete Dienste können eigene Bedingungen haben; prüfe sie beim konkreten Installations- oder Diensteangebot.

Belege und Datenstand

4E3E40A3<MCPSERVE<20261004<<<<Q7<UNGEPRUEFT<<<<<<<<<<<<<<<<<

Verbundenes