Neverlow512/agent-droid-bridge

Neverlow512/agent-droid-bridge

от neverlow512
MCP-сервер для подключения AI-агентов к Android-устройствам через ADB. Используется в мобильной автоматизации, тестировании и реверс-инжиниринге: скриншоты, касания, ввод текста, управление приложе...

Python 3.11+ License MIT MCP Compatible PyPI MCP Registry Awesome PyPI Downloads LinkedIn Ask DeepWiki

Agent Droid Bridge

Agent Droid Bridge is an MCP server that connects AI agents to Android devices and emulators over ADB. It is built for mobile automation, app testing, dynamic analysis, and reverse engineering: exposing the full surface of ADB as structured tools that any MCP-compatible AI client can call directly. If ADB can do it, an agent can do it.


Purpose-built tools return structured, minimal responses. No raw XML dumps, no wasted context — agents stay fast across long sessions.

agent-droid-bridge MCP server

Demo

Agent Droid Bridge Demo

The demo above runs through a few straightforward tasks to show what a connected agent can do, and this is just scratching the surface:

  • Installs the Paint app, opens it, and draws a house by calculating pixel coordinates for the walls and roof
  • Opens the device browser, searches for "MCP Wikipedia", navigates to the result page, and takes a screenshot
  • Opens the Calculator, computes 1337 × 42, and extracts the result to the host machine
  • Opens Contacts, creates a new entry with a name and phone number, and confirms it saved
  • Opens the Calendar and schedules an appointment for a specific date
  • Opens Settings and toggles dark mode
  • Extracts the Calculator APK from the device to the host machine
  • Installs Notepad, writes a one-sentence summary of every task completed, and takes a final screenshot
Инструменты были проиндексированы:
check_device_capabilities

Возможности устройства и аппаратный профиль для подключенного Android-устройства. Используйте 'identity', чтобы определить, с каким устройством вы работаете, перед началом сессии. Используйте 'security', когда задача требует root-прав или нужно подтвердить уровень привилегий. Используйте 'hardware', когда нужны размеры экрана или ограничения памяти для решений по компоновке. Используйте 'all' только тогда, когда нужен полный профиль и задержка не имеет значения.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

  • modeenumобязательный

    'identity': manufacturer, model, Android version, API level, device type, emulator status, CPU ABI, hardware identifiers, build fingerprint, build tags, kernel version, and SELinux status. 'security': ADB root status, su availability, debuggable and secure flags, verified boot state, USB config, dm-verity, encryption state, and SELinux status. 'hardware': CPU ABI, CPU ABI2, screen resolution, screen density, total RAM, CPU cores, total storage, GPU, hardware board, and supported ABIs. 'all': all fields from all modes in a single call.

detect_ui_change

Опрашивает иерархию UI после действия и возвращает результат, когда содержимое экрана изменится или истечёт таймаут. Возвращает статус изменения и затраченное время. По умолчанию не выводит XML-иерархию для эффективности — установите return_hierarchy=True, чтобы получить полную иерархию. Для эффективного обнаружения изменений: вызовите snapshot_ui перед действием, выполните действие, затем вызовите detect_ui_change с baseline_token. Используйте без baseline_token только когда нужно дождаться медленного перехода (загрузочные экраны, анимации). Не используйте для чтения текущего состояния экрана — для этого применяйте get_ui_hierarchy.

Параметры
  • baseline_tokenstring | null

    Token returned by snapshot_ui, captured before the action. When provided, compares current UI against that snapshot — use this for reliable change detection without loading XML into context. When omitted, captures a fresh baseline at call time.

  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

  • return_hierarchyboolean

    When False (default), returns only changed and elapsed_seconds — no XML. Set to True to include the full UI hierarchy in the response. Only set True when you need to read element data immediately after the change.

  • timeout_secondsinteger

    Maximum seconds to poll for a UI change.

execute_adb_command

Вывод команды ADB. Безопасно разобрано через shlex и никогда не передаётся в системную оболочку.

Параметры
  • commandstringобязательный

    ADB command to execute. Parsed safely — no shell injection possible.

  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

  • use_shellboolean

    When True, runs as an Android shell command (adb shell ...). When False, runs as a top-level ADB command (adb devices, adb install, etc.).

get_screen_elements

Структурированный список UI-элементов, видимых в данный момент на экране Android. Возвращает элементы, отфильтрованные и сформированные в соответствии с выбранным режимом. Для навигации используйте 'tappable', а 'interactive' — когда нужны XPath или границы для ADB-команд. Используйте 'all' только в крайнем случае - он возвращает все узлы и может быть большим.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

  • modestring

    Controls which elements are returned and how much detail each carries. 'tappable' (default): only clickable, focusable, or scrollable elements with minimal fields (resource ID, text, content description, centre coordinates) — best for quick navigation when you need tap targets, lowest token cost. 'interactive': same element filter as tappable but returns full detail including XPath, bounds, class name, and all boolean state flags — use when you need to construct precise ADB commands or distinguish elements by type. 'input': only editable text fields (EditText and similar) with full detail — use when you need to find fields to type into. On Compose-based apps, input fields may not be detected; use 'interactive' mode instead and look for focusable elements. 'all': every element in the UI tree with full detail — use only for security analysis or when other modes miss what you need, as output can be large.

get_screen_text

Возвращает весь видимый текст на текущем экране Android, отсортированный сверху вниз. Используйте это, когда нужно прочитать, что отображается на экране. Не включает координаты или информацию об элементах - для нажатий или взаимодействия используйте get_screen_elements.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

get_ui_hierarchy

Возвращает текущий экран Android в виде XML-иерархии UI. Используйте этот инструмент, когда нужно определить координаты элементов, прочитать текст или найти ID ресурсов для взаимодействия. Не вызывайте его после каждого действия, вызывайте только когда действительно нужно прочитать содержимое экрана. Чтобы проверить, изменился ли экран после действия, используйте snapshot_ui до действия и detect_ui_change после.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

launch_app

Android-приложение, запущенное по имени компонента (package/activity).

Параметры
  • componentstringобязательный

    Android component in 'package/activity' format, e.g. 'com.android.settings/.Settings'.

  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

list_devices

Все Android-устройства, видимые в данный момент для ADB, с их серийными номерами, состоянием подключения и названиями моделей.

Параметры

Без параметров.

press_key

Клавишное событие, отправляемое на устройство Android с помощью указанного целочисленного кода клавиши.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

  • keycodeintegerобязательный

    Android keycode integer. Common: BACK=4, HOME=3, ENTER=66, RECENTS=187, TAB=61, DEL=67.

snapshot_ui

Делает лёгкий снимок текущего состояния интерфейса и возвращает короткий токен. Используйте это перед выполнением действия (нажатие, свайп, запуск, нажатие клавиши), когда вам нужно только подтвердить, что экран изменился после, а не читать его содержимое. Передайте возвращённый токен в detect_ui_change как baseline_token. Это позволяет не загружать полную иерархию XML в контекст без необходимости. Не используйте это, когда вам нужно читать или взаимодействовать с элементами экрана — используйте для этого get_ui_hierarchy.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

swipe_screen

Жест смахивания на экране Android из (x1,y1) в (x2,y2) в течение заданной длительности.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

  • duration_msinteger

    Swipe duration in milliseconds

  • x1integerобязательный

    Start X coordinate

  • x2integerобязательный

    End X coordinate

  • y1integerобязательный

    Start Y coordinate

  • y2integerобязательный

    End Y coordinate

take_screenshot

PNG-скриншот текущего экрана устройства Android с шириной, высотой и данными изображения, закодированными в base64.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

tap_screen

Касание в указанных пиксельных координатах на экране Android.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

  • xintegerобязательный

    X coordinate in screen pixels

  • yintegerобязательный

    Y coordinate in screen pixels

type_text

Ввод текста в активное поле ввода Android. Пробелы кодируются автоматически.

Параметры
  • device_serialstring | null

    Target device serial — pass as device_serial=<serial>. Android device serial (e.g. 'emulator-5554' or '192.168.1.10:5555'). Omit only when a single device is connected. If the tool returns a multi-device error: STOP. Present the device list to the user verbatim and wait for their explicit choice. Do NOT retry with a guessed or inferred serial — this is a hard requirement. Once the user provides a serial, use it for every subsequent call in this session. To switch devices mid-session, ask the user first.

  • textstringобязательный

    Text to type into the focused input field.

Похожие MCP-сервера

minhalvp/android-mcp-server

minhalvp/android-mcp-server

MCP сервер для управления Android-устройствами через ADB. Выполняет ADB-команды, захватывает скриншоты и управляет пакетами. Полезен разработчикам и тестировщикам для автоматизации через MCP-клиенты (Claude, Cursor).

Python807
hyperb1iss/droidmind

hyperb1iss/droidmind

DroidMind связывает AI-ассистентов с Android-устройствами через MCP. Управляйте приложениями, анализируйте логи, автоматизируйте UI и выполняйте shell-команды на естественном языке. Полезен разрабо...

Python431
zinja-coder/jadx-ai-mcp

zinja-coder/jadx-ai-mcp

JADX-AI-MCP - плагин для декомпилятора JADX с интеграцией MCP, позволяющий LLM (Claude) в реальном времени анализировать Android APK, искать уязвимости и давать рекомендации по реверс-инжинирингу.

Java2771
fosdickio/binary_ninja_mcp

fosdickio/binary_ninja_mcp

MCP сервер для Binary Ninja открывает доступ к функциям реверс-инжиниринга через LLM-клиенты: декомпиляция, типы, патчинг, ссылки и другое. Полезен для CTF, малвар-анализа.

Python433
tatavarthitarun/nowsecure-mcp-server

tatavarthitarun/nowsecure-mcp-server

MCP сервер для NowSecure Platform, извлекающий уязвимости через REST и GraphQL и генерирующий PDF-отчёты локально — обходит сломанный экспорт в UI. Полезен тестировщикам безопасности и разработчикам мобильных приложений.

JavaScript3
zinja-coder/apktool-mcp-server

zinja-coder/apktool-mcp-server

MCP сервер для автоматического анализа Android APK с помощью LLM. Декомпилирует приложения, исследует манифест, ресурсы и smali-код, выявляет уязвимости и позволяет модифицировать файлы через ИИ-ассистента. Полезен реверс-инженерам и специалистам по безопасности.

Python649
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин