# Agent Droid Bridge

Wires an AI agent to an Android phone or emulator over ADB, so it can tap, swipe, grab screenshots, launch apps and run shell commands from chat.

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

## What it does

The server hands the agent ADB-backed tools: capture the screen, inspect the UI tree, pull out elements, type text, send keycodes, start apps, run shell commands. Responses are compact and structured, so a long automation run does not drown the context in XML. A separate `app_manager` pack adds nine more tools for packages, app lifecycle, APK extraction, permissions and intents; switch it on with `ADB_EXTRA_TOOL_PACKS=app_manager`.

It speaks stdio, which means any MCP-capable client can use it. Start it with `uvx agent-droid-bridge` and skip cloning anything. The host needs Python 3.11+ and a working ADB install; point `ADB_PATH` at the binary when it is not on PATH. One attached device is picked automatically, several trigger a prompt.

The default mode is `unrestricted`, meaning full ADB access. On a device you do not own that is too much: set `ADB_EXECUTION_MODE=restricted` with an allowlist, or cut shell off entirely via `ADB_ALLOW_SHELL=false`. Tools you never want the agent to call go in `ADB_DENIED_TOOLS`, and commands are parsed through `shlex`. Session logs land in JSONL files once `MCP_LOG_ENABLED=true` and `MCP_LOG_DIR` are set.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `ADB_EXECUTION_MODE`, `ADB_ALLOW_SHELL`, `ADB_PATH`, `ADB_EXTRA_TOOL_PACKS`, `ADB_DENIED_TOOLS`, `ADB_SHELL_ALLOWLIST`, `ADB_SHELL_DENYLIST`, `MCP_LOG_ENABLED`, `MCP_LOG_DIR`, `ADB_LOG_LEVEL` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env ADB_EXECUTION_MODE=<ADB_EXECUTION_MODE> --env ADB_ALLOW_SHELL=<ADB_ALLOW_SHELL> --env ADB_PATH=<ADB_PATH> --env ADB_EXTRA_TOOL_PACKS=<ADB_EXTRA_TOOL_PACKS> --env ADB_DENIED_TOOLS=<ADB_DENIED_TOOLS> --transport stdio agent-droid-bridge -- uvx agent-droid-bridge
```
Replace <…> with your own values. 11 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from agent-droid-bridge <command>

### Codex

**Platform CLI**
```bash
codex mcp add agent-droid-bridge --env ADB_EXECUTION_MODE=<ADB_EXECUTION_MODE> --env ADB_ALLOW_SHELL=<ADB_ALLOW_SHELL> --env ADB_PATH=<ADB_PATH> --env ADB_EXTRA_TOOL_PACKS=<ADB_EXTRA_TOOL_PACKS> --env ADB_DENIED_TOOLS=<ADB_DENIED_TOOLS> -- uvx agent-droid-bridge
```
Replace <…> with your own values. 11 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from agent-droid-bridge <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "agent-droid-bridge": {
            "command": "uvx",
            "args": [
                "agent-droid-bridge"
            ],
            "env": {
                "ADB_EXECUTION_MODE": "<ADB_EXECUTION_MODE>",
                "ADB_ALLOW_SHELL": "<ADB_ALLOW_SHELL>",
                "ADB_PATH": "<ADB_PATH>",
                "ADB_EXTRA_TOOL_PACKS": "<ADB_EXTRA_TOOL_PACKS>",
                "ADB_DENIED_TOOLS": "<ADB_DENIED_TOOLS>"
            }
        }
    }
}
```
Replace <…> with your own values. 11 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from agent-droid-bridge <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "agent-droid-bridge": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "agent-droid-bridge"
            ],
            "env": {
                "ADB_EXECUTION_MODE": "<ADB_EXECUTION_MODE>",
                "ADB_ALLOW_SHELL": "<ADB_ALLOW_SHELL>",
                "ADB_PATH": "<ADB_PATH>",
                "ADB_EXTRA_TOOL_PACKS": "<ADB_EXTRA_TOOL_PACKS>",
                "ADB_DENIED_TOOLS": "<ADB_DENIED_TOOLS>"
            }
        }
    }
}
```
Replace <…> with your own values. 11 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from agent-droid-bridge <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e ADB_EXECUTION_MODE=<ADB_EXECUTION_MODE> -e ADB_ALLOW_SHELL=<ADB_ALLOW_SHELL> -e ADB_PATH=<ADB_PATH> -e ADB_EXTRA_TOOL_PACKS=<ADB_EXTRA_TOOL_PACKS> -e ADB_DENIED_TOOLS=<ADB_DENIED_TOOLS> agent-droid-bridge uvx agent-droid-bridge
```
Replace <…> with your own values. 11 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from agent-droid-bridge <command>

## When to use it
- run a UI flow on a real device without writing test code
- capture a screenshot and read the screen from a prompt
- pull an APK off the device onto the host
- check declared permissions and fire an intent
- verify the screen state after installing a build

## Example prompts
- Connect to the device, open Settings and turn on dark mode
- Launch the app and tell me what is on screen right now
- Extract the calculator APK to the host and show me the path

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

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