Skip to content

iOS Simulator MCP

ios-simulator-mcp — MCP-сервер для управления iOS-симулятором из AI-агентов. Агент может тапать по UI, делать скриншоты, записывать видео, устанавливать и запускать приложения — всё через симулятор.

Что это даёт

С Xcode MCP (mcpbridge) агент работает с проектом: билды, тесты, превью. С ios-simulator-mcp агент работает с запущенным приложением в симуляторе:

  • Видеть экран — скриншоты и сжатые превью UI
  • Тапать и свайпать — взаимодействие с UI по координатам
  • Вводить текст — ввод в текстовые поля
  • Читать accessibility-дерево — описание всех элементов на экране или конкретной точки
  • Устанавливать и запускать приложения.app / .ipa по bundle ID
  • Записывать видео — запись и остановка экрана симулятора

Требования

  • macOS
  • Xcode с установленными симуляторами
  • Node.js
  • Facebook IDB — утилита для взаимодействия с симулятором

Установка IDB:

bash
brew install idb-companion
pip install fb-idb

Подключение Claude Code

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

Или вручную — добавить в .claude.json в корне проекта:

json
{
  "mcpServers": {
    "ios-simulator": {
      "command": "npx",
      "args": ["-y", "ios-simulator-mcp"]
    }
  }
}

Подключение Cursor

Добавить в .cursor/mcp.json в корне проекта:

json
{
  "mcpServers": {
    "ios-simulator": {
      "command": "npx",
      "args": ["-y", "ios-simulator-mcp"]
    }
  }
}

Доступные инструменты

Управление симулятором

ИнструментЧто делает
open_simulatorОткрывает приложение Simulator
get_booted_sim_idВозвращает ID запущенного симулятора

UI — просмотр и взаимодействие

ИнструментЧто делает
ui_viewВозвращает сжатый скриншот экрана (агент видит UI)
ui_describe_allAccessibility-описание всех элементов на экране
ui_describe_pointAccessibility-элемент в конкретной точке (x, y)
ui_tapТап по координатам
ui_swipeСвайп от точки к точке
ui_typeВвод текста (ASCII)

Скриншоты и видео

ИнструментЧто делает
screenshotСохраняет скриншот в файл (png/jpeg/tiff)
record_videoНачинает запись видео (h264/hevc)
stop_recordingОстанавливает запись

Приложения

ИнструментЧто делает
install_appУстанавливает .app / .ipa в симулятор
launch_appЗапускает приложение по bundle ID

Настройка через переменные окружения

json
{
  "mcpServers": {
    "ios-simulator": {
      "command": "npx",
      "args": ["-y", "ios-simulator-mcp"],
      "env": {
        "IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR": "~/Code/project/tmp",
        "IOS_SIMULATOR_MCP_FILTERED_TOOLS": "record_video,stop_recording",
        "IOS_SIMULATOR_MCP_IDB_PATH": "~/bin/idb"
      }
    }
  }
}
ПеременнаяЧто делаетПо умолчанию
IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIRПапка для скриншотов и видео~/Downloads
IOS_SIMULATOR_MCP_FILTERED_TOOLSСписок инструментов для скрытия (через запятую)
IOS_SIMULATOR_MCP_IDB_PATHПуть к IDBсистемный

Проверка

  1. Открыть симулятор (Xcode → Open Developer Tool → Simulator)
  2. Запустить агента (Claude Code / Cursor)
  3. Попросить агента: «сделай скриншот симулятора» или «опиши что на экране»
  4. Если агент вернул изображение или описание элементов — всё работает

Советы

  • Комбинируй с Xcode MCP. mcpbridge для билдов и тестов + ios-simulator-mcp для взаимодействия с UI в симуляторе — полный цикл разработки.
  • ui_view вместо screenshot для быстрой проверки — возвращает сжатое изображение прямо агенту без сохранения файла.
  • Accessibility-описание (ui_describe_all) помогает агенту понять структуру экрана без скриншота — быстрее и дешевле по токенам.