simulator-use: MCP-инструмент для управления iOS Simulator читает экран за 250 мс, но не видит игры и карты

MCP-сервер simulator-use позволяет AI-агентам управлять iOS Simulator, читая экран как текст за 250 мс, но не видит игры, карты и веб-вью — для них нужен скриншот.

simulator-use: MCP-инструмент для управления iOS Simulator читает экран за 250 мс, но не видит игры и карты. Тематическая карточка Comrad404.

Проект simulator-use предлагает MCP-сервер, который позволяет AI-агентам (Claude Code, Codex, Cursor и другим) напрямую управлять iOS Simulator: собирать Xcode-проект, читать интерфейс как текст, выполнять нажатия и запускать XCTest. README на GitHub, опубликованный 25 октября 2026 года, описывает архитектуру, заявленную скорость и ограничения.

Схема: simulator-use — это MCP-сервер, который подключается к iOS Simulator напрямую; Агент получает доступ к симулятору как к «телефону»; Инструмент не требует запуска дополнительных демонов для каждого вызова
Основные элементы, разобранные в статье.

MCP-клиент может управлять iOS Simulator через simulator-use

Согласно README, simulator-use — это MCP-сервер, который подключается к iOS Simulator напрямую, без промежуточных helper-процессов. Агент получает доступ к симулятору как к «телефону»: может собрать проект, установить приложение, запустить его, прочитать экран, нажать на элемент, ввести текст и выполнить XCTest или XCUITest. Инструмент не требует запуска дополнительных демонов для каждого вызова, что, по заявлению разработчиков, даёт выигрыш в скорости.

Экран становится списком элементов, а действия — проверяемыми шагами

Вместо скриншота simulator-use передаёт агенту текстовое представление экрана: одна строка на элемент с типом (button, text, switch, tab), меткой, accessibility identifier, состоянием и координатами центра в points. В README приведён пример экрана входа:

textField "Email" #email @100,200
secureField "Password" #password @100,260
switch "Remember me" #remember off @341,298
button "Sign In" #signIn @201,350
text "Not signed in" #status @201,402
tabs: Login (selected) @158,822, Items @244,822

Группы, иконки внутри кнопок, полосы прокрутки, строка состояния и клавиши клавиатуры сворачиваются в одну строку. Каждое действие (tap, fill, type, scroll, swipe, hold, set, back, home, wait) проверяется: после ввода текст считывается из поля, и если автокоррекция iOS меняет символы, simulator-use вставляет текст через paste, чтобы обойти изменение. При неудаче выполнение останавливается на первом ошибочном шаге.

Когда без скриншота не обойтись

Не все интерфейсы доступны для чтения через accessibility. README прямо перечисляет типы, которые возвращаются одной строкой unreadable:

  • Web views, размещённые через SwiftUI (например, WKWebView);
  • Страницы Safari и встроенные браузеры;
  • Карты (MapKit);
  • Игры (Metal, SpriteKit, SceneKit);
  • Системные pickers, работающие вне процесса приложения.

В этих случаях агент получает только координаты области и должен запросить скриншот, чтобы взаимодействовать по точкам. Скриншот, по данным README, отдаётся в points (не в пикселях), что упрощает пересчёт координат.

Условия запуска и заявленная скорость

Разработчики заявляют, что чтение всего экрана занимает около 250 мс, отправка нажатия — менее 1 мс, а скриншот — около 60 мс. Эти цифры приведены как результат измерений на M6 Mac mini в октябре 2026 года; независимого подтверждения нет. Проект распространяется по лицензии MIT, бесплатно. Для работы требуется Mac с Xcode; также заявлена поддержка облачного iPhone для Linux, Windows и Mac без Xcode — детали реализации в README не раскрыты.

Основные ограничения инструмента связаны с нечитаемыми интерфейсами (игры, карты, веб-вью) — для них агент всё равно вынужден использовать скриншот и координатный ввод. Заявленные показатели скорости и токен-эффективности не подтверждены независимыми тестами, а поддержка облачного iPhone не документирована.