simulator-use

simulator-use vs MobileBuildMCP

Pick MobileBuildMCP for a wider Xcode workflow from one server: builds for the Simulator, devices and macOS, Swift packages, code coverage and LLDB debugging. (MobileBuildMCP workflows)

Pick simulator-use for driving the Simulator's screen: it reads and taps through its own long-lived engine on AXe's frameworks, where MobileBuildMCP asks its bundled AXe for each read and action. (simulator-use README, MobileBuildMCP docs: UI automation)

Measured on one Mac: simulator-use read 194 tokens per sign-in, MobileBuildMCP 1,561 (est.); simulator-use signed in in 3.50 s, MobileBuildMCP in 12.26 s.

Before version 2.7.1, MobileBuildMCP was called XcodeBuildMCP; its changelog for 2.7.1: "Renamed the project from XcodeBuildMCP to MobileBuildMCP." (MobileBuildMCP CHANGELOG)

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).

MobileBuildMCPsimulator-use
Signing in, step by step12.26 s3.50 s
Tokens read per sign-in (est.)1,561194
Sign-ins completed10 of 1010 of 10
Signing in, batchedno batched run2.87 s
Tokens read, batched (est.)179
Batched sign-ins completed10 of 10
Reading the screen (median)0.62 s0.19 s
Tapping a button (median)2.37 s0.68 s
Typing into a field (median)3.15 s1.14 s
Tool list in context (est.)6,1932,443
Setup its docs ask fornone0.12 s

MobileBuildMCP 2.7.1, simulator-use 0.15.0. Every call is in bench/results/2026-11-01.

With Device Hub open

MobileBuildMCP reads and taps through a bundled AXe, and AXe's README says:

"Xcode 27 simulator automation uses Device Hub; Simulator.app is not required." (AXe README)

Its own changelog, for version 2.7.0: "UI automation tools now work fully with Xcode 27 simulators through Device Hub" (MobileBuildMCP CHANGELOG).

So MobileBuildMCP ran three times on the benchmark's Mac: with the Simulator headless like every tool, again with Device Hub open, and once more with Device Hub closed. The ranking uses the first run.

ConditionTaps that reached the appTypings shownSign-ins completedSign-in
Headless, the ranked run20 of 2010 of 1010 of 1012.26 s
Device Hub open9 of 207 of 100 of 10none
Headless again, last of all20 of 2010 of 1010 of 1017.97 s

With Device Hub open, every tap still answered that it was done; the counts are what the app's own log saw. simulator-use is built on AXe's frameworks: its engine keeps one session open per Simulator instead of starting AXe for each call.

What each does

From each tool's own README, license and docs, read on October 31, 2026.

MobileBuildMCPsimulator-use
LicenseMIT (MobileBuildMCP LICENSE)MIT (simulator-use LICENSE)
Builds the appYes, for the Simulator, devices and macOS (MobileBuildMCP README, MobileBuildMCP workflows)Yes: builds the Xcode project, installs and launches it (app_run) (simulator-use README)
Runs testsYes (MobileBuildMCP README)XCTest and XCUITest, case by case (tests_run) (simulator-use README)
Screen as textIts tap targets, with refs (snapshot_ui) (MobileBuildMCP docs: UI automation)One line per element: kind, label, #id, state and position (simulator-use README)
How it tapsBy elementRef from its latest snapshot (MobileBuildMCP's tap tool)By #id or label, or at @x,y (simulator-use README)
Cloud optionNone in its README (MobileBuildMCP README)A NoMac cloud iPhone (simulator-use cloud start), billed per minute (simulator-use README)
Needs besides XcodemacOS 14.5, Xcode 16 and Node 18. Reads and taps through a bundled AXe (MobileBuildMCP README, MobileBuildMCP docs: UI automation)Node 20. Its engine is built on AXe's frameworks, which it bundles (simulator-use README)

Where simulator-use is better

A measured difference is listed when it is 5% or more.

Switching

Add simulator-use to Claude Code with one line (other clients: install):

claude mcp add simulator-use -- npx -y simulator-use mcp

The calls each made in the benchmark, step for step:

MobileBuildMCPsimulator-use
Setupnonedevice_use {"device":"<udid>"}
Read the screensnapshot_ui {}ui_look {}
Tap a buttontap {"elementRef":"e58"}ui_act {"steps":["tap #signIn"]}
Type into a fieldtype_text {"elementRef":"e33","text":"gary@example.com","replaceExisting":true}ui_act {"steps":["fill #email gary@example.com"]}
Several steps in one callnoneui_act {"steps":["fill #email gary@example.com","fill #password secret1","tap #signIn"]}
Build, install and launchbuild_run_sim (MobileBuildMCP's tool list, as the benchmark recorded it)app_run (simulator-use README)
Run the teststest_sim (MobileBuildMCP's tool list, as the benchmark recorded it)tests_run (simulator-use README)

Sources

Read on October 31, 2026. The measured numbers: benchmarks and the raw results.