simulator-use vs mobile-mcp
Pick mobile-mcp to drive real iOS and Android devices, over USB or on Mobile Next Cloud, with the same tools as simulators and emulators. (mobile-mcp README)
Pick simulator-use to build and test the Xcode project with the same tool, and for taps whose answer says what changed on screen. (simulator-use README, mobile-mcp README)
Measured on one Mac: simulator-use read 194 tokens per sign-in, mobile-mcp 981 (est.); simulator-use signed in in 3.50 s, mobile-mcp in 6.97 s.
Measured side by side
From the one-Mac benchmark of November 1, 2026: the same app and iPhone 17 Pro Simulator, one tool at a time, each through its own MCP server. Times are medians; tokens are estimates (characters / 4).
| mobile-mcp | simulator-use | |
|---|---|---|
| Signing in, step by step | 6.97 s | 3.50 s |
| Tokens read per sign-in (est.) | 981 | 194 |
| Sign-ins completed | 10 of 10 | 10 of 10 |
| Signing in, batched | 6.97 s | 2.87 s |
| Tokens read, batched (est.) | 1,030 | 179 |
| Batched sign-ins completed | 10 of 10 | 10 of 10 |
| Reading the screen (median) | 0.42 s | 0.19 s |
| Tapping a button (median) | 0.77 s | 0.68 s |
| Typing into a field (median) | 2.52 s | 1.14 s |
| Tool list in context (est.) | 7,129 | 2,443 |
| Setup its docs ask for | 16.33 s | 0.12 s |
mobile-mcp 1.0.15, simulator-use 0.15.0. Every call is in bench/results/2026-11-01.
What each does
From each tool's own README, license and docs, read on October 31, 2026.
| mobile-mcp | simulator-use | |
|---|---|---|
| License | Apache 2.0; built on mobilecli, which is under the Functional Source License 1.1 (mobile-mcp LICENSE, mobile-mcp README, mobilecli LICENSE) | MIT (simulator-use LICENSE) |
| Builds the app | No; it installs an .app, .ipa, .apk or .zip (mobile-mcp README) | Yes: builds the Xcode project, installs and launches it (app_run) (simulator-use README) |
| Runs tests | None in its README (mobile-mcp README) | XCTest and XCUITest, case by case (tests_run) (simulator-use README) |
| Screen as text | One line per element, with refs (mobile-mcp README) | One line per element: kind, label, #id, state and position (simulator-use README) |
| How it taps | By ref from its element list, or at x,y coordinates (mobile-mcp README) | By #id or label, or at @x,y (simulator-use README) |
| Cloud option | Mobile Next Cloud: real iOS and Android devices (mobile-mcp README) | A NoMac cloud iPhone (simulator-use cloud start), billed per minute (simulator-use README) |
| Needs besides Xcode | Node 20 and the Xcode command line tools. On iOS, mobilecli's on-device agent is required for touch input and UI tree inspection (mobile-mcp README, mobilecli README) | Node 20. Its engine is built on AXe's frameworks, which it bundles (simulator-use README) |
Where simulator-use is better
- Builds the Xcode project and runs its XCTest and XCUITest cases; mobile-mcp installs an app built elsewhere. (simulator-use README, mobile-mcp README)
- MIT throughout, the AXe and IDB frameworks it bundles included; mobile-mcp is built on mobilecli, which is under the Functional Source License 1.1. (simulator-use README, mobile-mcp README, mobilecli LICENSE)
- Signing in, step by step: 3.50 s against mobile-mcp's 6.97 s.
- Tokens read per sign-in (est.): 194 tokens against mobile-mcp's 981 tokens.
- Signing in, batched: 2.87 s against mobile-mcp's 6.97 s.
- Reading the screen: 0.19 s against mobile-mcp's 0.42 s.
- Tokens per screen read (est.): 72 tokens against mobile-mcp's 375 tokens.
- Tapping a button: 0.68 s against mobile-mcp's 0.77 s.
- Typing into a field: 1.14 s against mobile-mcp's 2.52 s.
- Tool list in the agent's context (est.): 2,443 tokens against mobile-mcp's 7,129 tokens.
- Setup its docs ask for: 0.12 s against mobile-mcp's 16.33 s.
- A tap's answer held the new status text in 20 of 20 taps, mobile-mcp's in 0 of 20.
A measured difference is listed when it is 5% or more.
Switching
Add simulator-use to Claude Code with one line (other clients: install):
The calls each made in the benchmark, step for step:
| mobile-mcp | simulator-use | |
|---|---|---|
| Setup | mobile_list_available_devices {}mobile_list_elements_on_screen {"device":"<udid>"}mobile_launch_app {"device":"<udid>","packageName":"dev.simtap.demo"} | device_use {"device":"<udid>"} |
| Read the screen | mobile_list_elements_on_screen {"device":"<udid>"} | ui_look {} |
| Tap a button | mobile_click_on_screen_at_coordinates {"device":"<udid>","ref":"@e8"} | ui_act {"steps":["tap #signIn"]} |
| Type into a field | mobile_click_on_screen_at_coordinates {"device":"<udid>","ref":"@e3"}mobile_type_keys {"device":"<udid>","text":"gary@example.com","submit":false} | ui_act {"steps":["fill #email gary@example.com"]} |
| Several steps in one call | mobile_batch_commands {"device":"<udid>","steps":[{"name":"mobile_click_on_screen_at_coordinates","arguments":{"ref":"@e3"}},{"name":"mobile_type_keys","arguments":{"text":"gary@example.com","submit":false}},{"name":"mobile_click_on_screen_at_coordinates","arguments":{"ref":"@e4"}},{"name":"mobile_type_keys","arguments":{"text":"secret1","submit":false}},{"name":"mobile_click_on_screen_at_coordinates","arguments":{"ref":"@e8"}}],"stopOnError":true} | ui_act {"steps":["fill #email gary@example.com","fill #password secret1","tap #signIn"]} |
Sources
Read on October 31, 2026. The measured numbers: benchmarks and the raw results.