/ Каталог / Песочница / iOS Simulator MCP
● Сообщество joshuayoes ⚡ Сразу

iOS Simulator MCP

автор joshuayoes · joshuayoes/ios-simulator-mcp

Управляй xcrun simctl + idb из Claude — загружай симулятор, устанавливай .app, нажимай, набирай текст, делай screenshot, записывай видео — без переключения в Xcode.

iOS Simulator MCP оборачивает xcrun simctl от Apple и idb от Facebook, чтобы Claude мог управлять iOS Simulator. Отлично подходит для циклов UI-тестирования, воспроизведения багов и захвата скриншотов/видео для тикетов — именно та работа, при которой переключение между Xcode и чатом утомительно.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

ios-simulator-mcp.replay ▶ готово
0/0

Установка

Выберите клиент

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ios-simulator-mcp",
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  ]
}

Continue использует массив объектов серверов, а не map.

~/.config/zed/settings.json
{
  "context_servers": {
    "ios-simulator-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "ios-simulator-mcp"
        ]
      }
    }
  }
}

Добавьте в context_servers. Zed перезагружается автоматически.

claude mcp add ios-simulator-mcp -- npx -y ios-simulator-mcp

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: iOS Simulator MCP

Создать скриншоты для App Store по нескольким устройствам

👤 iOS-разработчики, готовящие релиз ⏱ ~25 min intermediate

Когда использовать: Нужны скриншоты 6.5", 6.7", iPad в светлом и тёмном режиме — быстро.

Предварительные требования
  • Xcode + simctl — Стандартная установка Xcode
  • Установленный idbbrew tap facebook/fb && brew install idb-companion
  • Собранный .app-бандлxcodebuild -scheme YourApp -destination 'platform=iOS Simulator' build
Поток
  1. Настроить устройства
    Загрузи симуляторы iPhone 15 Pro Max и iPad Pro 13-inch. Перечисли их когда будут готовы.✓ Скопировано
    → list_simulators показывает оба как Booted
  2. Настроить строку состояния
    Установи на обоих строку состояния: 9:41, полный заряд батареи, полный сигнал. В стиле App Store.✓ Скопировано
    → status_bar_set успешно; чистый вид
  3. Установить + сделать скриншоты
    Установи MyApp.app на обоих. Запусти, переходи Главная → Профиль → Настройки, делай скриншот каждого в светлом и тёмном режиме. Сохраняй в /screenshots/<device>/<mode>/.✓ Скопировано
    → Папка на каждое устройство со светлым и тёмным вариантами каждого экрана

Итог: Полный набор скриншотов для App Store за ~10 минут, без ручного захвата.

Подводные камни
  • Симулятор загружается, но приложение падает при запуске — Получи лог simctl; проверь на отсутствующие entitlements
  • Dynamic Island перекрывает настройки строки состояния — На Pro Max status_bar_set всё равно применяется под DI
Сочетать с: filesystem

Захватить чистое видео воспроизведения UI-бага

👤 iOS-разработчики / QA ⏱ ~10 min beginner

Когда использовать: Баг воспроизводится только в симуляторе; нужно видео для тикета.

Поток
  1. Начать запись
    Загрузи iPhone 15. Установи build.app. Начни запись экрана.✓ Скопировано
    → record_video_start возвращает recording id
  2. Воспроизвести
    Открой приложение. Нажми «Профиль», затем карандаш «Редактировать». Введи «Test» в поле имени. Нажми «Сохранить». Подожди 2 секунды.✓ Скопировано
    → Последовательность выполнена; баг виден, если воспроизводится
  3. Остановить и прикрепить
    Останови запись, сохрани как bug-1234.mov в /tickets/.✓ Скопировано
    → MOV сохранён

Итог: Видео воспроизведения готово для прикрепления к тикету.

Подводные камни
  • Tap промахивается, потому что макет отличается от ожидаемого — Сначала используй describe_ui для нахождения текущих координат
Сочетать с: filesystem · github

Запускать smoke test после каждой пересборки

👤 iOS-разработчики в быстром цикле сборки/тестирования ⏱ ~15 min intermediate

Когда использовать: Итерируешь над экраном и хочешь 30-секундный smoke test после каждой пересборки.

Поток
  1. Пересобрать + переустановить
    Запусти xcodebuild для схемы MyApp Debug, затем переустанови на загруженном симуляторе.✓ Скопировано
    → Установка успешна с новым бандлом
  2. Выполнить smoke path
    Открой приложение, войди с тестовым аккаунтом, перейди на разрабатываемый экран, сделай скриншот.✓ Скопировано
    → Скриншот выглядит правильно; в логе нет сбоев

Итог: Более быстрый цикл сборки/тестирования без ручного нажатия.

Подводные камни
  • В flow входа есть captcha — Используй сборку с обходом captcha или заглушкой auth flow

Комбинации

Сочетайте с другими MCP — эффект x10

ios-simulator-mcp + filesystem

Сохранять скриншоты в репозиторий

Сделай скриншоты всех основных экранов, сохрани в /design/screenshots/.✓ Скопировано
ios-simulator-mcp + github

Открыть баг-issue с видео воспроизведения

Запиши баг, затем создай GitHub issue с прикреплённым MOV и шагами воспроизведения.✓ Скопировано
ios-simulator-mcp + xcodebuildmcp

Собрать и сразу запустить smoke test

XcodeBuild: собери Debug. Sim: установи + запусти + сделай скриншот.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
list_simulators (нет) Первый шаг бесплатно
boot_simulator device_id: str Включить симулятор бесплатно
install_app device_id, path: str (.app) Залить сборку бесплатно
launch_app device_id, bundle_id: str Открыть приложение бесплатно
tap device_id, x, y Нажать на координаты бесплатно
type_text device_id, text: str Ввести текст бесплатно
screenshot device_id, path? Захватить состояние бесплатно
record_video_start device_id, path: str Начать видео бесплатно
record_video_stop recording_id Завершить видео бесплатно
describe_ui device_id Найти координаты для tap бесплатно
status_bar_set device_id, time, battery, signal Чистые скриншоты для App Store бесплатно

Стоимость и лимиты

Во что обходится

Квота API
Нет — локально
Токенов на вызов
100–800; скриншоты передаются по пути, не встроенными
Деньги
Бесплатный OSS
Совет
Используй describe_ui для нахождения координат tap один раз вместо многократных угадываний

Безопасность

Права, секреты, радиус поражения

Минимальные скоупы: запуск simctl + idb
Хранение учётных данных: Нет — но данные приложения в симуляторе твои
Исходящий трафик: Только локально
Никогда не давайте: root / доступ к ядру

Устранение неполадок

Частые ошибки и исправления

idb не найден

brew tap facebook/fb && brew install idb-companion; также pip install fb-idb

Проверить: idb list-targets
Tap не попадает

Используй describe_ui; координаты различаются для разных размеров устройств; элемент может быть в sheet

Симулятор загружен, но экран чёрный

Симулятор: shutdown + reset; иногда нужно повторно скачать среду выполнения Xcode

Запись повреждена

Используй simctl io recordVideo напрямую; обёртка idb иногда падает при переходе macOS в сон

Альтернативы

iOS Simulator MCP в сравнении

АльтернативаКогда использоватьКомпромисс
XcodeBuildMCP (Sentry)Нужна сборка + симулятор в одном MCPТяжелее; более широкая область
MaestroНужен полноценный DSL для UI-тестированияПо умолчанию не управляется LLM
Xcode Cloud / FastlaneProduction CIДругой уровень; не интерактивный

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills