Ghost in the Droid logo

Ghost in the Droid

Controls Android phones and iPhones through 62 MCP tools for screen interaction, app automation, and multi-device workflows.

Install Ghost in the Droid

Pick your client, then add it in one click or paste the config.

STDIOPython
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "ghost-in-the-droid": {
      "command": "uvx",
      "args": [
        "ghost-in-the-droid"
      ]
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

uvx ghost-in-the-droid

Process exited before answering initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 7d ago.

Overview

Ghost in the Droid MCP server gives LLM agents control of real Android phones and iPhones through 62 MCP tools. It reads screens, accesses UI trees, taps, swipes, types, launches apps, manages clipboard content, and supports device-specific automation backends. Android uses ADB, while iOS uses Appium, XCUITest, and WebDriverAgent. Reach for it when an agent needs to operate mobile apps, run reusable skills, or coordinate automation across multiple devices.

Use cases

  • Automate mobile app interactions from an LLM agent
  • Build reusable Android and iOS workflow skills
  • Run UI smoke tests across connected devices
  • Explore app screens and generate automation actions
  • Queue jobs across a phone farm

Key features

  • 62 MCP tools for Android and iOS control
  • ADB and Appium XCUITest device backends
  • Live screen streaming and UI-tree inspection
  • YAML and Python-based reusable skills
  • Multi-device queues and job monitoring
  • CLI, dashboard, framework, and REST interfaces

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 1d ago

Recent health check succeeded.

10/10 checks healthy over the last 46d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 4d ago via OSV.dev · ghost-in-the-droid (PyPI)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars400Stargazers on the source repository.
Last commit2mo agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Directory activity1 viewsConfig copies, upvotes, and views on AllMCPs.

How Ghost in the Droid works

What Ghost in the Droid does

Ghost in the Droid MCP server connects an LLM agent to Android and iOS devices through a shared automation interface. It exposes 62 MCP tools for observing and controlling a phone, including screenshots, accessibility or UI-tree inspection, taps, swipes, text entry, clipboard operations, app launching, browser actions, and selected shell or intent operations on Android.

Android targets can be physical devices or emulators identified through ADB. iOS targets use Appium with XCUITest and WebDriverAgent, supporting real iPhones as well as booted simulators for development and CI. The project also provides live screen streaming, interactive touch input on the streamed view, and per-device job queues for phone-farm operation.

How it works

The agent selects a device and calls the MCP tools to inspect the current interface and perform actions. Android control is handled by ADB, with an optional Portal companion app for streaming. iOS control is handled through WebDriverAgent, with MJPEG streaming and screenshot polling as a fallback.

Automation can be organized into reusable skills. Skills combine YAML-based UI element definitions with Python action classes and multi-step workflows. Separate element files can describe Android and iOS selectors. The framework includes an app explorer that uses breadth-first search to discover screens and transitions, plus an AI-assisted creator that can identify interface elements and generate action or workflow code while viewing the device stream.

The same device-control surface can be used from MCP clients, a CLI, LangChain, LlamaIndex, a web dashboard, or a REST API, according to the project documentation. Models can run through hosted providers or locally, including supported on-device runtimes, while the phone remains the automation target.

Setup and configuration

Ghost in the Droid MCP server requires Python 3.10 or newer. Android setup uses ADB and can connect over USB or Wi-Fi; Android emulator environments are also supported. iOS setup requires a Mac with Xcode and WebDriverAgent signing for real-device use. iOS simulators are available for development and CI through Appium and WebDriverAgent.

Skills can be installed from the CLI; the documented pattern is android-agent skill install tiktok. Built-in and community skills cover examples such as TikTok and the Play Store.

Tools and capabilities

  • Inspect Android UIAutomator XML or the normalized iOS accessibility tree.
  • Capture screenshots and stream live Android or iOS device views.
  • Tap, swipe, type, use the clipboard, and launch applications.
  • Use Android shell, intent, and stealth-oriented controls.
  • Perform iOS browser actions through the WebDriverAgent path.
  • Define app workflows with platform-specific selectors and Python actions.
  • Explore apps automatically and generate skills with AI assistance.
  • Queue, schedule, and monitor jobs across multiple devices.
  • Record Android screens or iOS WebDriverAgent streams for integration tests.
  • Browse, search, and install skills through the Skill Hub.

The Ghost in the Droid MCP server is suitable for mobile UI automation, device-based testing, app exploration, and agent workflows that require interaction with a real phone rather than only an emulator or API.

Limitations and notes

Android and iOS do not use the same backend or device requirements. Real iPhone control depends on macOS, Xcode, and WebDriverAgent signing. The Android Docker and KVM emulator pool is Android-only; iOS simulator workflows use Apple’s native simulator and Xcode tooling.

Device access and app behavior still depend on the connected phone, emulator, simulator, operating-system permissions, and the relevant automation backend.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Ghost in the Droid

Ghost in the Droid is an MCP server that connects LLM agents to real Android phones and iPhones. Its 62 tools support screen inspection, screenshots, taps, swipes, typing, clipboard operations, app launching, browser actions, and Android shell or intent controls through ADB, Appium, and WebDriverAgent.

Install it using the project’s installation documentation and Python 3.10 or newer. Android use requires ADB, while real iOS use requires macOS, Xcode, Appium, WebDriverAgent, and signing.

Yes, Cursor is listed as an MCP client that can connect to Ghost in the Droid. The same 62-tool device-control surface can be used to operate supported Android and iOS targets.

Yes, it automates iPhones through Appium, XCUITest, and WebDriverAgent. Real-device use requires a Mac, Xcode, and WebDriverAgent signing; booted iOS simulators are also supported for development and CI.

Yes, it supports a multi-device phone farm with per-device job queues. The project also describes a bot runner for queuing, scheduling, and monitoring automation jobs across devices.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewGhost in the Droid AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/ghost-in-the-droid?style=directory)](https://allmcps.com/mcp/ghost-in-the-droid)
HTML Embed
<a href="https://allmcps.com/mcp/ghost-in-the-droid"><img src="https://allmcps.com/api/badge/ghost-in-the-droid?style=directory" alt="Ghost in the Droid on AllMCPs" /></a>