Drive the iOS Simulator from an agent: read the screen, tap/type/swipe, replay flows in CI.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Drive the iOS Simulator like a human β from an AI agent.
Real HID touches (every gesture), screen reading via the accessibility tree
or on-device OCR, token-efficient, fast, and zero third-party dependencies.
Test React Native / Expo and native SwiftUI apps end-to-end β without adding a
single testID β then save the run as a flow file and let CI replay it for free.
An agent tapping, pinching, rotating, dragging-and-dropping, and typing β all verified through the accessibility tree, no screenshots.
Agents are great at writing iOS apps and clumsy at the part that comes next: actually exercising them in the simulator. Testa is built for that β and three things set it apart from the rest of the field: it drives screens that expose zero accessibility (via on-device OCR), it turns an agent session into a deterministic flow file that CI replays with no model in the loop, and it's a single, fully-open, dependency-free binary.
testID.e5 Button "Save" #save @120,300)
β a ui snapshot of a real screen measures ~203 tokens against ~1,500
for the same screen as an image. Measure it yourself βtap/type/swipe
reply ends with -- ui changes --, so the loop is act β read the diff, not
act β full snapshot.testa flow record save smoke.flow writes
what the agent just did as plain text; testa flow run smoke.flow replays it
deterministically β zero tokens, JUnit output, failure artifact bundles.bench/).testa audit β accessibility audit (missing labels, sub-44 pt tap
targets, duplicate labels) that fails a CI job.testa vdiff β visual regression with an antialiasing-tolerant pixel
diff, a red heatmap, and OCR-aware - lost: / + new: lines so a
percentage becomes a sentence.testa mcp), a Claude Code skill,
a Claude Code plugin manifest, and a composite GitHub Action.0600 per-user Unix socket. No network, no telemetry.CoreSimulator,
SimulatorKit, AccessibilityPlatformTranslation, Vision and simctl.| Testa | Argent | idb | Appium | Maestro | |
|---|---|---|---|---|---|
| Agent-native (MCP + token-efficient snapshots) | β | β | β | β | β οΈ |
| Drives screens with zero accessibility (on-device OCR) | β | β | β | β | β |
| Pinch Β· rotate Β· drag-and-drop Β· multi-touch | β | β οΈ | β | β | β οΈ |
| Flow files replayed deterministically in CI | β | β οΈ | β | β οΈΒ code | β |
| Record an agent session β flow file | β | β οΈ | β | β οΈ | β οΈ |
| Visual regression built in (pixel + OCR diff) | β | β οΈ | β | β οΈΒ plugin | β οΈΒ cloud |
| Device environment: push Β· location Β· biometrics Β· appearance | β | β οΈ | β οΈ | β | β οΈ |
| Accessibility audit as a CI gate | β | β | β | β | β |
| Self-contained: one native binary, no Node/SDK runtime | β | β | β | β | β |
| Fully open source, no proprietary parts | β Β MIT | β οΈ | β | β | β |
| Platforms | iOS | iOS Β· Android | iOS | iOS Β· Android Β· web | iOS Β· Android |
| Live debugging & profiling (logs Β· network Β· RN tree Β· Instruments) | β | β | β οΈ | β | β |
High-level summary, checked against each project's public documentation. These are all good tools. β οΈ means "partial, plugin-only, commercial-tier, or not documented" β it is not a criticism, and where a project's docs did not settle the question we marked it β οΈ rather than guess. The closest tool is Argent (Software Mansion): broader than Testa (cross-platform, deep debugging & profiling), but accessibility-only (no OCR), Node-based, and Apache-2.0 source plus proprietary binaries. Maestro's YAML flows are the reference for declarative mobile flows and are excellent; Appium's XCUITest driver has the richest device environment surface of any of these. Testa's niche: fully-open, dependency-free, OCR-driven, iOS-focused, and the same tool for both the agent loop and the token-free CI replay. Corrections welcome β open an issue.
First call boots a background daemon and warms accessibility (a few seconds, once). Every call after is ~60 ms. Requires macOS + Xcode 26 (iOS 26 sims), Swift 6.
testa ui (on-screen elements) Β· testa see (OCR every visible
text) Β· testa find <q> Β· testa scrollto <sel>.tap Β· typein Β· setvalue Β· clear Β· swipe Β· drag Β· dragdrop Β· pinch Β· rotate Β· keycombo Β· button. Address things by eN ref, #identifier,
"label", or x y. The reply carries the settled UI diff β no follow-up
ui needed.testa assert <sel> [exists|gone|value=β¦|label=β¦] (exit 0/1),
testa wait <sel> [gone] [timeoutMs]. Both β and find β fall back to OCR
when the tree has no match, and say which source answered:
PASS exists (ocr) "Settings" @200,703. --ocr skips the tree entirely.testa flow record save smoke.flow, then CI replays it forever.No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/testa)<a href="https://allmcps.com/mcp/testa"><img src="https://allmcps.com/api/badge/testa?style=directory" alt="Testa on AllMCPs" /></a>