# Ghost in the Droid

MCP server connecting LLM agents to physical or emulated Android and iOS devices. Gives your agent 62 mobile automation tools to inspect screens, tap, swipe, and type.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 397
- Author: ghost-in-the-droid
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/ghost-in-the-droid/android-agent
- Updated: 2026-08-13
- HTML: https://affpapa.org/en/nevibecode/mcp/ghost-in-the-droid

## What it does

Ghost in the Droid turns a mobile phone into an execution environment for coding assistants like Claude Code, Codex, or Cursor. It exposes 62 tools that inspect screen states, trigger taps, perform swipes, and input text. Android connectivity operates over ADB via USB or Wi-Fi, while iOS automation relies on Appium and WebDriverAgent.

The framework connects to cloud APIs, local Ollama or vLLM instances, and on-device models running via llama.cpp or MediaPipe. Running an emulator pool inside Docker with KVM works strictly for Android. Working with iOS targets demands macOS, Xcode, and device signing.

The server requires Python 3.10 or higher. Execution runs through the `uvx` runner.

## Requirements
- Needs: Python and uv (commands run via uvx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add android-agent -- uvx ghost-in-the-droid
```
uvx runs the command named after the package; if the README names another one, use uvx --from ghost-in-the-droid <command>

### Codex

**Platform CLI**
```bash
codex mcp add ghost-in-the-droid -- uvx ghost-in-the-droid
```
uvx runs the command named after the package; if the README names another one, use uvx --from ghost-in-the-droid <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "ghost-in-the-droid": {
            "command": "uvx",
            "args": [
                "ghost-in-the-droid"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from ghost-in-the-droid <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "ghost-in-the-droid": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "ghost-in-the-droid"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from ghost-in-the-droid <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add ghost-in-the-droid uvx ghost-in-the-droid
```
uvx runs the command named after the package; if the README names another one, use uvx --from ghost-in-the-droid <command>

## When to use it
- Control mobile applications on physical Android and iOS hardware from an agent
- Automate interface testing workflows directly on real mobile displays
- Dispatch tap, swipe, and typing inputs across a phone farm via MCP
- Capture screen states for multi-step autonomous mobile routines

## Example prompts
- Open the Settings app on the connected Android phone and locate the Wi-Fi menu.
- Inspect the current phone screen and tap the account login button.
- Navigate through the onboarding flow on the attached iPhone via WebDriverAgent.

## Similar
- [mobile-mcp](https://affpapa.org/en/nevibecode/mcp/mobile-mcp.md) — MCP server · ★ 9946
- [mobilerun](https://affpapa.org/en/nevibecode/mcp/mobilerun.md) — MCP server · ★ 9751
- [e2e](https://affpapa.org/en/nevibecode/mcp/e2e.md) — MCP server · ★ 11912
- [XcodeBuildMCP](https://affpapa.org/en/nevibecode/mcp/xcodebuildmcp.md) — MCP server · ★ 6505
- [ShipSwift](https://affpapa.org/en/nevibecode/mcp/shipswift.md) — MCP server · ★ 3244
- [agent-device](https://affpapa.org/en/nevibecode/mcp/agent-device.md) — MCP server · ★ 5149

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
