Labsco
MCP SERVER

MCP Server for iOS Simulator

by InditexTech

Drive an iOS simulator in plain English — boot it, install the app, tap, screenshot, read the crash log.

Mobile & App Store Release
Summary
Commands are phrases, not a schema — "tap at 100, 200" is the actual interface.

The parser accepts the natural forms directly, which means the assistant does not have to learn a tool signature for every idb verb. Coverage follows idb's CLI, so the awkward long tail is there too: location simulation, media injection, permission approval and the contacts database. The virtual environment is the setup detail people trip over — reactivate it before starting the server.

What it is

A natural-language bridge to iOS simulators built on Facebook's idb. Instructions are parsed into idb commands and executed against the simulator.

What you get
  • Simulator management — create and terminate sessions, list available and booted simulators, boot or shut one down by UDID, focus the window
  • Applications — install from a path, launch, terminate, uninstall, list installed apps and check whether one is installed
  • UI interaction — tap and swipe by coordinates, press device buttons such as HOME or SIRI, input text, press a key or a key sequence
  • Accessibility — describe all elements on screen, or describe the element at a point
  • Capture — screenshots, video recording to a path, and stopping the recording; system or per-app logs
  • Debugging — start and stop a debug session, and read its status
  • Crash logs — list, show one, delete them
  • Extras — install a dylib, open a URL, clear the keychain, set the location, add media to the camera roll, approve app permissions, update the contacts database
  • Usable as a library too, through createMCPServer and the IDBManager, NLParser and MCPOrchestrator components
Requirements

macOS with Xcode and iOS simulators installed, Node.js v14.0.0 or higher, and Homebrew. Installation pulls idb-companion through Homebrew and fb-idb through pip into a Python virtual environment — keep that environment activated while the server runs. Point the client at dist/index.js.