Skip to main content
Glama

Phone-Eye 📱👁️

Пусть ваш ИИ-агент видит — и управляет — настоящим Android-телефоном.

Ваш агент для написания кода умеет читать код, выполнять команды и просматривать документацию. А может ли он видеть приложение, которое собирает, на настоящем телефоне, с настоящими пикселями? Phone-Eye даёт ему глаза и палец.

phone_look("what's on screen, and where is the login button?")
  → "Login button at (540, 1830) — a green 'Sign in' …"
phone_tap(540, 1830)
phone_look("did the next page load?")

Пять глаголов, без фреймворка: ваш агент комбинирует их в любой нужный ему рабочий процесс. Работает с любым MCP-клиентом — Claude Code, Codex, Cursor, dsh и другими.

Почему

Если вы разрабатываете или тестируете что-то, что в итоге попадает на телефон, вы знаете этот цикл: на реальном устройстве вёрстка ломается, вы вручную делаете скриншот, описываете экраны словами («шестерёнка, справа сверху, рядом с аккаунтом») и играете в дешифровщика координат между агентом и телефоном. Phone-Eye замыкает этот цикл — агент работает с устройством так же, как уже работает с вашей кодовой базой.

Два канала, объединённых:

  • Vision — модель зрения отвечает на вопросы на естественном языке о текущем скриншоте (работает на игровых канвасах, изображениях и на всём, что могут показать пиксели).

  • UI tree — дамп uiautomator для точных текстов и границ, когда они есть в дереве доступности.

Vision подключаемый. Подойдёт любой MCP-сервер, предоставляющий describe_image(path, question), — из коробки работает облачное GLM-зрение, или укажите локальный эндпоинт Qwen-VL, чтобы ни один пиксель не покидал вашу локальную сеть.

Related MCP server: scrcpy-mcp

Установка

Требования: Python 3.10+, adb (platform-tools / android-tools) в PATH, телефон с включённой отладкой по USB и любой MCP-сервер зрения.

git clone https://github.com/boheastill/phone-eye
cd phone-eye
pip install -r requirements.txt

# env (defaults shown):
export ANDROID_SERIAL=""                      # empty = first adb device; or 192.168.x.x:5555
export PHONE_EYE_VISION_URL="http://127.0.0.1:8102/mcp"  # your vision MCP

Подключите его к вашему клиенту (stdio):

// Claude Code / dsh-mcp-client / any stdio MCP config
{
  "mcpServers": {
    "phone-eye": { "command": "python", "args": ["/path/to/phone-eye/server.py"] }
  }
}

Или запустите его как HTTP-сервис (streamable-http) за своим парком и добавьте http://<host>:8122/mcp — см. docs/fleet.md.

Подключите телефон (один раз)

Один раз через USB, затем Wi-Fi навсегда:

adb devices                      # USB: accept the debugging prompt on the phone
adb tcpip 5555                   # switch to Wi-Fi mode
adb connect <phone-ip>:5555      # unplug and go

Инструменты

Tool

What it does

phone_look(question?, use_tree?)

Спросить модель зрения о текущем экране; объединяет текст UI-дерева и границы

phone_tap(x, y)

Нажать

phone_swipe(x1, y1, x2, y2, ms?)

Свайп

phone_type(text)

Ввод ASCII (пробелы допустимы; для CJK нужен путь через буфер обмена — известная особенность adb)

phone_screenshot()

Сохранить скриншот на диск, вернуть путь

Что это такое / чем не является

✔ глаза и руки агента на одном реальном Android-устройстве: нулевая установка на устройство, без root ✔ vision-first (работает там, где UI-деревья не видят) с объединением дерева для точности ✔ опция приватности: направьте зрение на модель, работающую только в локальной сети

✘ не тестовый фреймворк (нет DSL/рекордера — агент и есть логика) ✘ не iOS, не фермы устройств (пока) ✘ не мобильный интерфейс для людей (это другой продукт)

Статус и дорожная карта

Фаза 1 (сейчас): пять глаголов, одно устройство, подключаемое зрение — проверено end-to-end на реальном железе (Redmi K40 Gaming / Android 13). Его коронный номер пока что: он обнаружил на собственном экране диалог авторизации отладки по USB, прочитал кнопки и сам нажал «Allow».

  • Фаза 2: офлайн-зрение для быстрого старта, адресация нескольких устройств, обёртки повтора/проверки

  • Всё остальное: по запросам — откройте issue, и оно продвинется в очереди.

Лицензия

MIT

FAQ

Сервер зрения? У меня его нет. Подойдёт любой MCP-сервер, предоставляющий describe_image(path, question). Самый быстрый облачный вариант — эндпоинт GLM-зрения; для полностью автономного режима локальный Qwen-VL (llama.cpp / Ollama, совместимый с OpenAI, + адаптер на 20 строк) гарантирует, что каждый пиксель останется в вашей локальной сети.

Почему не нативный плагин для dsh? Приоритет MCP означает, что те же пять глаголов работают в каждом клиенте. Пользователи dsh могут подключить его через @deepseek-ai/dsh-mcp-client или dsh plugin add.

Проверено на

Device

Android

Connection

Notes

Redmi K40 Gaming (ares)

13 (HyperOS)

Wi-Fi adb (adb tcpip 5555)

основной ежедневный телефон из парка автора

Добавьте свой через PR в эту таблицу.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables full Android control from any AI agent via 7 MCP tools, including screen capture, touch interaction, app management, and system control.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server that gives AI agents full vision and control over Android devices via ADB and scrcpy. Supports screenshots, input, apps, UI automation, shell, files, and clipboard.
    38
    266 npm
    115
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that allows AI agents to drive real Android devices via adb, capturing screenshots, reading the live UI tree, and performing actions like tap, swipe, and type.
    13
    5 npm
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to interact with Android via text-based UI trees instead of screenshots, supporting taps, swipes, input, macro recording, and device control through an MCP server and CLI.
    -