集成

Ghost in the Droid

试用

Control real Android and iOS devices, run apps, take screenshots, and execute on-device inference via Ghost in the Droid MCP server (62 tools).

它能做什么

Control real Android and iOS devices, run apps, take screenshots, and execute on-device inference via Ghost in the Droid MCP server (62 tools).

技能文档

Ghost in the Droid

Ghost in the Droid is an MCP server that gives any LLM agent a real Android or iOS device as its body. 62 tools covering tap, swipe, type, screenshot, screen-tree reading, app launch, camera, TTS, crash reports, batched execution, and on-device inference.

Install: pip install ghost-in-the-droid Repo: https://github.com/ghost-in-the-droid/android-agent

When to use this skill

Use Ghost in the Droid when the user wants to:

  • Control an Android phone or tablet via ADB
  • Control an iPhone or iPad via WebDriverAgent
  • Take screenshots of a real device screen
  • Tap, swipe, type, or scroll on a device
  • Launch or interact with mobile apps
  • Run on-device inference (llama.cpp, MediaPipe, MLX)
  • Automate mobile workflows end-to-end
  • Spin up Android emulators via Docker+KVM pools

Setup

1. Install the MCP server

pip install ghost-in-the-droid

2. Add to your MCP config

For Claude Code (~/.claude/claude_code_config.json):

{
  "mcpServers": {
    "ghost-in-the-droid": {
      "command": "python",
      "args": ["-m", "ghost_in_the_droid"]
    }
  }
}

For OpenClaw:

openclaw mcp add ghost-in-the-droid --command "python -m ghost_in_the_droid"

3. Android prerequisites

# Install ADB
sudo apt install android-tools-adb   # Linux
brew install android-platform-tools  # macOS

# Connect device (USB or TCP)
adb devices

4. iOS prerequisites

WebDriverAgent must be installed and running on the target device. See the iOS setup guide.

Core tool reference

Screen interaction

ToolWhat it does
tapTap at coordinates or element
swipeSwipe between two points
type_textType text into focused field
press_keyPress a key (HOME, BACK, ENTER, etc.)
scrollScroll up/down/left/right
long_pressLong press at coordinates

Screen reading

ToolWhat it does
screenshotCapture device screen as image
screen_treeGet UI accessibility tree (for clicking elements by label)
find_elementFind element by text, id, or class
get_screen_textOCR-extract all visible text

App management

ToolWhat it does
launch_appLaunch app by package name
close_appClose app
install_apkInstall APK from path or URL
list_appsList installed apps
clear_app_dataClear app storage

Device info

ToolWhat it does
list_devicesList connected ADB devices
device_infoGet device model, OS, battery, etc.
get_clipboardRead device clipboard
set_clipboardWrite to device clipboard

On-device inference

ToolWhat it does
run_llmRun inference via llama.cpp on-device
run_mediapipeRun MediaPipe model on-device
run_mlxRun MLX model (iOS/macOS)

Emulators (Docker+KVM)

ToolWhat it does
create_emulatorSpin up new Android emulator
list_emulatorsList running emulator pool
destroy_emulatorTear down emulator instance

Batching

ToolWhat it does
run_flowExecute a sequence of actions as one atomic batch
run_skillReplay a saved skill (recorded interaction)

Usage patterns

Take a screenshot and describe what you see

1. Call screenshot → get base64 PNG
2. Pass to vision model for description

Find and tap a button by label

1. Call screen_tree → get accessibility tree
2. Find element with target label
3. Call tap with element bounds

Automate a login flow

1. launch_app("com.example.app")
2. screenshot → verify login screen
3. tap(username_field)
4. type_text("user@example.com")
5. tap(password_field)
6. type_text("password")
7. tap(login_button)
8. screenshot → verify logged in

Multi-device targeting

Always use device_id parameter to target a specific device when multiple are connected:

tap(x=100, y=200, device_id="emulator-5554")
screenshot(device_id="R3CN20ABCDE")

Tips

  • Always call list_devices first to confirm devices are connected
  • Use screen_tree over coordinate-based tapping when possible — it survives resolution changes
  • run_flow is much faster than individual tool calls for scripted sequences
  • For iOS, WebDriverAgent must be already running on the target device before using any iOS tools
  • On-device inference tools require the model to be pre-loaded on device; call run_llm with a load action first

相关技能

Android设备远程控制与屏幕理解引擎,基于uiautomator2+FastMCP,支持多设备连接池+心跳检测、UI层级解析(dump_hierarchy核心)、元素查找与点击、触控操作(点击/滑动/输入)、APP启停、消息收发、微信专用操作、AutoGLM视觉分析。触发: Android设备操作/微信自动化/屏幕理解/UI自动化/多设备管理

作者 天轰穿1 次安装

Use the longarm Android remote-control app through its HTTP API or MCP server. Trigger when the user asks to remotely tap, long-press, swipe, scroll, pinch,...

Ghost (ghost.org). Use this skill for ANY Ghost request — reading, creating, and updating data. Whenever a task involves Ghost, use this skill instead of cal...

Control a real phone from OpenClaw via a local MCP relay. Use when the user asks to operate a phone (open apps, tap, input, take screenshots), run an AI automation task on a connected Android/iPhone device, check the current phone screen or device info, or query/abort a running phone agent task. WAR

Control a real phone from OpenClaw via a local MCP relay. Use when the user asks to operate a phone (open apps, tap, input, take screenshots), run an AI automation task on a connected Android/iPhone device, check the current phone screen or device info, or query/abort a running phone agent task. WAR

Devicebase CLI — cross-platform Go CLI for remote Android, HarmonyOS, and iOS device control via HTTP API. Supports tap, swipe, text input, app launching, screenshots, UI hierarchy inspection, and more.