MCP server for controlling iOS simulators and physical iPhones.
- Call
get_execution_contextfirst to discover available devices - If
target === 'ambiguous', ask the user which device to use - If
target === 'device', inform the user aboutviewer_urlso they can see the screen - If
target === 'none', tell the user to boot a simulator or connect an iPhone - Pass the returned
udidto all subsequent tool calls
- Use
scan_uibefore interacting — it returns interactive elements with tap coordinates - Use
get_screenshotto visually verify the current screen state - Use
describe_screenfor the full element tree (all types, not just interactive) - All coordinates are in device screen points (not pixels)
- Use
device_actionsfor batching multiple sequential actions - Choose the smallest
scan_uiregion possible for speed
- Physical devices require WebDriverAgent (WDA) running on the device
- Run
npx blitz-ios-mcp --setupto install WDA and dependencies - The viewer URL shows a live screen stream in the browser
- The agent cannot see the physical device screen directly — rely on
scan_uiandget_screenshot
Common iPhone screen sizes (in points):
- iPhone 15/16 Pro: 393 x 852
- iPhone 15/16 Pro Max: 430 x 932
- iPhone SE: 375 x 667
All coordinates passed to tap/swipe should be in these point values.