SimUtil: MCP for emulators and simulators
SimUtil
Desktop app and CLI for Android emulators, iOS simulators and real phones with an MCP server for agents
- 1,201 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The agent taps, types and captures the screen of devices, including real phones signed in to your accounts
- Recordings and screenshots can capture personal data open on the device
Install
- Works in
Manual install
claude mcp add --transport http simutil http://127.0.0.1:8765/mcpStart the SimUtil desktop app first: the server lives inside it.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent taps, types and captures the screen of devices, including real phones signed in to your accounts
- Recordings and screenshots can capture personal data open on the device
This is third-party code. Review the repository files before installing.
What it does
SimUtil gathers the chores of mobile development in one place: booting emulators and simulators, showing several devices side by side, recording the screen and running scenario checks. You do not need to open Android Studio or Xcode. The app runs on macOS, Linux and Windows. The MCP server is built into the desktop app and is reachable on the local machine only. Through it the agent sees the device list, boots and shuts devices down and puts them on a shared grid. Input goes through taps, swipes and buttons with coordinates from 0 to 1, and capture through screenshots and recording of one device or the whole grid. A separate tool switches an iOS simulator to slim mode. run_scenario runs the same steps on several Android and iOS devices at once. Besides the app there is the simutil console tool with JSON output and a description of every command for scripts and agents.
Who it is for. For mobile developers and testers who work with Claude Code, Codex or Cursor and want to hand the agent device booting, taps and screen capture.
Good fit when
- Run one sequence of taps and swipes on several Android and iOS devices at once and compare timing
- Ask the agent to boot the right emulator headless and take a screenshot after a change
- Record the app on every device in the grid to show a bug to the team
- Check interface behavior on a real Android phone over USB or Wi-Fi through the agent
- Free memory by switching iOS simulators to slim mode before a series of runs
Not a fit when
- You need to control an iPhone or iPad like a simulator: real Apple devices are view-only for streaming, screenshots and recording
- You work on Linux or Windows and need iOS: Apple tooling exists only on macOS with Xcode
- You need a ready suite of UI checks with assertions and reports: a test framework fits better, while SimUtil gives device control
Example request
Boot two Android emulators and an iPhone simulator, run a three-swipe scenario on them and send me the screenshots.MCP
- Transport
- http
- Authentication
- not required
Environment variables
SIMUTIL_MCP_PORT- Local MCP server port instead of 8765
Limitations
The MCP server works only while the SimUtil desktop app is running. The 8765 port is changed with SIMUTIL_MCP_PORT. Android needs adb, recording needs ffmpeg, and iOS needs macOS and Xcode. The app does not install Android Studio with its emulator.
macOS builds are unsigned: if the system says the app is damaged, run `xattr -dr com.apple.quarantine /Applications/SimUtil.app` once. Recording the whole grid on macOS uses the screen recording permission.
Switching an iOS simulator to slim mode reboots it and closes open apps. run_scenario turns this mode on itself unless you pass `"slim": false`.
How to disable. Remove the server from the client: `claude mcp remove simutil` in Claude Code, or delete the entry from the MCP configuration file elsewhere. To stop the server itself, quit the SimUtil app.
FAQ
How do I connect SimUtil to Claude Code?
Start the app and run `claude mcp add --transport http simutil http://127.0.0.1:8765/mcp`. For Codex, Cursor, Gemini CLI and VS Code the app has a plug icon in the top right corner that shows a ready setup for the chosen client.
Do I need Xcode for SimUtil?
iOS simulators and iPhones need macOS and Xcode, because the app uses xcrun simctl and xcrun devicectl. Android does not need Xcode, adb is enough.
How is the simutil console tool different from the app?
The tool lists devices, boots and shuts them down, connects Android over Wi-Fi, reads Logcat and runs your tools from a YAML description. Streaming control, grid recording, the scenario studio and the MCP server belong to the desktop app only.
Can I control real phones?
Real Android phones over USB and Wi-Fi accept touches, swipes, buttons and keyboard input. Real iPhones and iPads connect over USB on macOS with a device frame, screenshots and recording with sound, but for viewing only.
Which steps does run_scenario support?
The steps are tap, swipe, press and wait. All steps are validated before any device moves, and devices are readied first so they start together. The reply has the outcome and start, end and per-step timing for each device.
Discussion
No questions or reviews yet.
Related
MCP serversAn MCP server to drive iOS and Android: simulators, emulators and real devices via accessibility trees and screenshots
An MCP server that takes plain-language commands and drives the iOS Simulator through idb: apps, taps, logs
An MCP server for the iOS Simulator: taps, swipes, text input, accessibility tree, screenshots, video and app control
A skill that teaches an agent to drive iOS Simulators, Android Emulators and USB phones through the simvyn command line tool
An MCP server that drives an Android device over ADB: app navigation, input and automated tests
The npx serve-sim command streams an iOS Simulator to the browser and lets an agent tap, swipe, type and replace the camera feed
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| SimUtil: MCP for emulators and simulators (this entry) | no | not required | 1,201 | |
| iOS Simulator Skill | no | 1,303 | a skill with scripts for building iOS apps and driving the simulator, with no Android and no multi-device stream | |
| Android MCP Server: control Android through ADB | no | not required | 811 | a Python MCP server for one Android device over ADB, with no iOS and no grid recording |
| simvyn: skill for iOS Simulators and Android Emulators | no | 440 | a skill that teaches an agent to drive iOS Simulators |
README in short
The project has three parts: a desktop app with streaming and MCP, the simutil console tool and Dart packages with shared adb, simctl and devicectl services. The update check runs once a day and is turned off with `SIMUTIL_NO_UPDATE_CHECK=1`.