
srmorete/mobile-device-mcp
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Сервер MCP для использования с iOS и Android. Бесшовно отображает нативные экраны и WebViews. Поддерживаются несколько параллельных устройств.
Обзор
Сервер MCP, который позволяет агентам ИИ управлять устройствами iOS и Android (нажмите, прокрутите, введите, сделайте скриншоты, прочитайте деревья пользовательского интерфейса и запустите код). Работает с несколькими устройствами одновременно. 1. — Легкие HTTP-серверы, работающие на каждом мобильном устройстве (UIAutomator на Android, XCUITest на iOS), которые обнажают дерево доступности и принимают команды взаимодействия. 2. — Нормализует необработанные деревья пользовательского интерфейса с обеих платформ в единый список плоских элементов. 3. — Внешний интерфейс. Обрабатывает обнаружение устройств, загрузку, распределение портов и запросы прокси на серверы на устройстве. Устройства загружаются при первом использовании — сервер устанавливает приложение драйвера, выделяет порт, запускает сервер на устройстве и проводит опросы, пока он не станет здоровым. После этого все вызовы инструментов проходят по локальному хосту HTTP с токеном на предъявитель устройства auth. Агенты могут передавать код, который выглядит как UIAutomator или XCUITest, оба из которых являются Javascript под капотом.
Обзор (машинный перевод)
Сервер MCP, который позволяет агентам ИИ управлять устройствами iOS и Android (нажмите, прокрутите, введите, сделайте скриншоты, прочитайте деревья пользовательского интерфейса и запустите код). Работает с несколькими устройствами одновременно.
Как это работает
Трехслойная архитектура:
- ** Серверы на устройстве ** — Легкие HTTP-серверы, работающие на каждом мобильном устройстве (UIAutomator на Android, XCUITest на iOS), которые обнажают дерево доступности и принимают команды взаимодействия.
- ** Фильтр дерева пользовательского интерфейса ** — Нормализует необработанные деревья пользовательского интерфейса с обеих платформ в единый список плоских элементов.
- 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:
- 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.
- UI tree filter — Normalizes raw UI trees from both platforms into a unified flat element list.
- 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
adbon PATH - iOS Simulator: Xcode with
xcrun,simctl
Установка
npx -y @srmorete/mobile-device-mcp@latestКонфигурация
{
"mcpServers": {
"mobile-device-mcp": {
"command": "npx",
"args": ["-y", "@srmorete/mobile-device-mcp@latest"],
"env": {
"MDMS_PORT_ANDROID": "18000", # optional
"MDMS_PORT_IOS": "19000" # optional
}
}
}
}