SM

srmorete/mobile-device-mcp

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

54 stars 2 forks Качество 78 Тренд 17MIT

Сервер MCP для использования с iOS и Android. Бесшовно отображает нативные экраны и WebViews. Поддерживаются несколько параллельных устройств.

Обзор

Сервер MCP, который позволяет агентам ИИ управлять устройствами iOS и Android (нажмите, прокрутите, введите, сделайте скриншоты, прочитайте деревья пользовательского интерфейса и запустите код). Работает с несколькими устройствами одновременно. 1. — Легкие HTTP-серверы, работающие на каждом мобильном устройстве (UIAutomator на Android, XCUITest на iOS), которые обнажают дерево доступности и принимают команды взаимодействия. 2. — Нормализует необработанные деревья пользовательского интерфейса с обеих платформ в единый список плоских элементов. 3. — Внешний интерфейс. Обрабатывает обнаружение устройств, загрузку, распределение портов и запросы прокси на серверы на устройстве. Устройства загружаются при первом использовании — сервер устанавливает приложение драйвера, выделяет порт, запускает сервер на устройстве и проводит опросы, пока он не станет здоровым. После этого все вызовы инструментов проходят по локальному хосту HTTP с токеном на предъявитель устройства auth. Агенты могут передавать код, который выглядит как UIAutomator или XCUITest, оба из которых являются Javascript под капотом.

Обзор (машинный перевод)

Сервер MCP, который позволяет агентам ИИ управлять устройствами iOS и Android (нажмите, прокрутите, введите, сделайте скриншоты, прочитайте деревья пользовательского интерфейса и запустите код). Работает с несколькими устройствами одновременно.

Как это работает

Трехслойная архитектура:

  1. ** Серверы на устройстве ** — Легкие HTTP-серверы, работающие на каждом мобильном устройстве (UIAutomator на Android, XCUITest на iOS), которые обнажают дерево доступности и принимают команды взаимодействия.
  2. ** Фильтр дерева пользовательского интерфейса ** — Нормализует необработанные деревья пользовательского интерфейса с обеих платформ в единый список плоских элементов.
  3. MCP-сервер — внешний интерфейс. Обрабатывает обнаружение устройств, загрузку, распределение портов и запросы прокси на серверы на устройстве.

Устройства загружаются при первом использовании — сервер устанавливает приложение драйвера, выделяет порт, запускает сервер на устройстве и проводит опросы, пока он не станет здоровым. После этого все вызовы инструментов проходят по локальному хосту HTTP с токеном на предъявитель устройства auth.

Инструменты

| Инструмент | Описание [скрыто] [скрыто] [скрыто] [скрыто] list_devices Список доступных устройств iOS и Android screenshot | Захват экрана устройства (JPEG) | T2 Получите дерево элементов пользовательского интерфейса в виде плоского списка с дополнительным поиском и ограничением.

Эта страница переведена автоматически. Технические детали смотрите в оригинале.

README

Показан фрагмент оригинального README. Открыть оригинал.

Mobile Device MCP

An MCP server that lets AI agents control iOS and Android devices (tap, scroll, type, take screenshots, read UI trees, and run code). Works with multiple devices at the same time.

How It Works

Three-layer architecture:

  1. On-device servers — Lightweight HTTP servers running on each mobile device (UIAutomator on Android, XCUITest on iOS) that expose the accessibility tree and accept interaction commands.
  2. UI tree filter — Normalizes raw UI trees from both platforms into a unified flat element list.
  3. MCP server — The external interface. Handles device discovery, bootstrapping, port allocation, and proxies requests to on-device servers.

Devices are bootstrapped on first use — the server installs the driver app, allocates a port, starts the on-device server, and polls until it’s healthy. After that, all tool calls are proxied over localhost HTTP with per-device bearer token auth.

Tools

Tool Description
list_devices List available iOS and Android devices
screenshot Capture the device screen (JPEG)
uitree Get the UI element tree as a flat list, with optional search and limit. Off-screen elements are excluded unless include_invisible: true
tap Tap at screen coordinates
double_tap Double-tap at screen coordinates
long_press Long-press at screen coordinates (configurable duration)
scroll Swipe from start to end coordinates
type_text Type text into the focused element
press_button Press a hardware/navigation button (home, back, enter, volumeUp/Down, dpadUp/Down/Left/Right/Center)
launch_app Launch an app by bundle ID / package name
terminate_app Force-stop an app
list_apps List installed apps
install_app Install an app from a host-local file (.apk for Android, .app for iOS simulator, .app/.ipa for iOS device). Replaces existing installs
run_code Execute sandboxed JavaScript on-device (see run_code below)

run_code

Agents can pass code that looks like UIAutomator or XCUITest, both being Javascript under the hood. The sandbox restricts (Android) potentially dangerous Java operations and only allows (iOS) some XCUITest-ish commands

  • Android: Rhino engine with UIAutomator bindings — uiDevice (click, swipe, find elements, press keys, read display info), By (selectors), Until (wait conditions), console.log()
  • iOS: JavaScriptCore with XCUITest bindings — app (query elements, tap, type, swipe), springboard, device, openApp(bundleId), sleep(ms), console.log()

Both platforms automatically kill runaway scripts (infinite loops) and create a fresh sandbox per call.

Prerequisites

  • Node.js 18+ (for running via npx)
  • Android: Android SDK with adb on PATH
  • iOS Simulator: Xcode with xcrun, simctl
Открыть полный README на GitHub

Установка

npx -y @srmorete/mobile-device-mcp@latest
Новичок в MCP? Начните с руководства на mcpskill.org →

Конфигурация

{ "mcpServers": { "mobile-device-mcp": { "command": "npx", "args": ["-y", "@srmorete/mobile-device-mcp@latest"], "env": { "MDMS_PORT_ANDROID": "18000", # optional "MDMS_PORT_IOS": "19000" # optional } } } }