MCP.Market

simframe MCP server

by lvlrSajjad·io.github.lvlrSajjad/simframe·v0.23.1

Always-warm iOS Simulator and Android emulator frames: agents read the screen in ~20ms

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

0 stars1.2k downloads/wk

Reviews

Write one

Nobody has reviewed simframe yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

simframe tools (23, 1 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • sim_assert

    Check one thing about the screen and fail loudly if it is not so. Cheaper inside a sim_do flow, where a failed assert stops the remaining steps.

  • sim_capture

    Inspect or control the background capture loops: action "status" (what is running and how fresh), "start", "stop". Capture starts automatically on first use, so you rarely need this.

  • sim_devices

    List the devices simframe can drive — iOS simulators and Android emulators.

  • sim_do

    THE MAIN TOOL, and the cheapest path. Plan the WHOLE flow and run it in one call — tap, type, scroll, wait, assert — asserting after each step that matters. Every step settles and is checked against what that action did here before, so a wrong turn halts the flow instead of tapping on. Single-action tools are for recovery.

  • sim_find

    Resolve one intent to one control: "tap Save", "the Assets tab", "back". Understands verbs, typos, and where on screen you meant. When two things answer equally well it says so and lists them rather than guessing. Use it when you doubt a selector will resolve; otherwise just tap. Prefer a label or a #ref over coordinates.

  • sim_flow_runwrite action

    Replay a saved flow by name, verifying each step. Omit `name` to list the saved flows. Save one with sim_do's `saveAs`.

  • sim_goal

    Hand simframe a goal in words and let it drive there locally, returning only at a milestone: done (with evidence), blocked by the verify barrier, ambiguous, not found, or out of budget. Use it instead of a sequence of single taps when you know where you want to be: "open Time Sheets", "find Larger Text", "Settings > Accessibility > Display & Text Size". It walks remembered routes first, taps what

  • sim_goto

    Walk to a screen simframe already knows, over edges it has already verified, with no model call per step. Names come from sim_recall or a previous map. Refuses rather than guesses when the route is unknown or the name is ambiguous — a refusal is cheap and a wrong walk is not.

  • sim_launch

    Launch or relaunch an app, optionally with launch arguments and environment variables — the way to put an app into a test mode without touching its UI.

  • sim_look

    A screenshot: ~1600 tokens, the most expensive call here. Only for what text cannot answer — layout, colour, spacing, a control the map omits. NOT for what a field contains, whether a button is enabled, or whether an action worked: sim_ui reports the first two and the flow's own verdict already answered the third.

  • sim_map

    Crawl an app unattended and record every screen and transition into the graph, so later goals and sim_goto are served from memory with no model calls. Opt-in and slow on purpose: minutes, not seconds. Read-only by default — it opens doors and never types, toggles, or opens a write flow; the verify barrier (Delete, Pay, Send, Sign out, Submit, Save…) and leaving the app are never crossed. Resumes a

  • sim_open_url

    Open a URL or deep link on the device — the fastest way to reach a screen when the app has a link for it.

  • sim_permission

    Grant, revoke or reset a privacy permission for an app. Do this instead of tapping the system alert: the alert is not part of the app under test, and its buttons move between OS versions. Not every service exists on every platform — the device's own backend refuses one it does not have. Services: ….

  • sim_recall

    What happened recently, as text: the screens visited, the actions taken, and what each one did. Use it to re-orient after a failure instead of taking a screenshot, and to learn the screen names sim_goto accepts.

  • sim_scroll_to

    Scroll until something is in view. A control that scrolled off the bottom of a list is not missing, and this is the difference.

  • sim_state

    Cheapest possible check: a stable screen hash, whether anything changed SINCE YOUR LAST LOOK in this session, how long the screen has been still, and an ASCII map of which regions moved. A fraction of the cost of even the text screen map. Use it to poll ("has it finished loading?"). To find out WHAT is on screen, use sim_ui.

  • sim_storage

    What the app saved, as text: its UserDefaults and (for React Native) its AsyncStorage, read straight out of

  • sim_strip

    Return the last few buffered frames tiled into ONE image, oldest first — an image, so not cheap. Lets you understand a transition, animation or flicker in a single call instead of a burst of screenshots. Looks backwards in time; it does not wait.

  • sim_tap

    Tap one thing. For more than one step, use sim_do — it batches the verification and costs one round trip. Returns the screen map afterwards.

  • sim_type_into

    Focus a field and type into it. Prefer a sim_do step when this is part of a sequence.

  • sim_ui

    READ THE SCREEN as text: every element numbered, with region, type, label, state, contents and tap point, plus which screen this is and what simframe knows about it. A tenth the cost of a screenshot and more useful, because it says what is tappable and where. Act on what it shows by NAME — whatever it calls "General", you can tap as "General"; the #3 numbers are exact but only until the screen mov

  • sim_wait

    Wait for the screen to change, settle, or both. sim_do already settles after every step, so you rarely need this inside a flow — reach for it when something moves without you acting, like a push or a background load. Pass `since` from a hash captured before the thing you are waiting on.

  • sim_wait_for

    Block until something appears on screen, then return the screen map. Use this instead of pausing and re-reading.

Public scan report

scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it

no findings
  • Code scan48 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 10 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How simframe compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 95% of 48,255 servers
Tools
23
the typical server has 7
Tools that change things
4%
typical: 0%. Fewer write tools means less an agent can break
Downloads a week
1,219
more than 95% of 12,191 servers with a package

What its tools let an agent do: 22 read · 1 change

Release history: 7 versions in the registry since 2026-09-17, latest 2026-10-03, typically one every 2 days.

Install simframe in Claude Code, Cursor or VS Code

Runs npx -y simframe on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add simframe -- npx -y simframe
Add to Cursor

What the publisher says

From the simframe repository's README, as published. We do not edit it. Read it on GitHub

simframe

Eyes, hands and memory for an agent driving the iOS Simulator or an Android emulator.

Website · npm

An agent driving a simulator is slow for three reasons, and only the first one is obvious:

latency, paid again on every glance — and paid twice whenever the agent captures mid-animation and has to look again.

  1. Every look is a wait. simctl io screenshot costs ~130 ms of blocking

twelve-step flow costs twelve model turns, and the model turns cost far more than the milliseconds.

  1. Every step is a round trip. Tap, screenshot, reason, tap, screenshot. A

every single time it appears.

  1. Nothing is remembered. The same screen gets re-read and re-reasoned about

And there is a fourth that is pure waste: an image is the most expensive way to ask what is on screen. A screenshot costs ~1,600 tokens when it is handled as a native image block and 15,000–25,000 when it is not, and it does not tell you what is tappable or where — you have to measure that by eye.

simframe attacks all four: a background loop keeps the newest frame warm, whole flows run in one call, screens the agent has seen before are answered from memory, and every answer is text with tap points in it. Nothing returns an image unless you ask for one.

It is also a study case, and the numbers are the point

Almost everything here was decided by a measurement rather than by an argument, and several of those measurements reversed a decision that had already shipped. They are written down in full, with what we expected beforehand, what it cost to find out, and the mistakes made getting there — because a benchmark that only records the winner teaches nothing.

The headline results, all free to reuse:

isolated with a three-pass field experiment, and corroborated to three points by an independent estimate. Operator knowledge is worth twice that, and no tool here carries it yet. (§14)

  • A warm transition graph removes ~27% of an agent's model round trips —

qwen3:8b — 82% against 91% — while being 79% larger and 62% slower. A one-line threshold on a number already computed beat all of them at 95% and zero latency.

  • A bigger local judge is not a better one. qwen3:14b scored lower than

83% of them have no text at all. Screen recognition*, though, did not need the tree once. The ladder splits there: semantics need a tree, identity needs pixels.

  • **Every interactive element came from the accessibility tree — 72 of 72 — and

capture primitive itself about a thousand times faster.

  • Capture is ~31× faster than a screenshot for the same work, and the

a confident wrong answer is expensive. Every serious bug they found was a component reporting more certainty than it had.

  • Three independent reporters converged on one thing: a refusal is cheap and

What changed, measured

Same four-tab navigation flow, on a real production app:

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Grade history

  • 2026-09-19restoreB → Ascore 92
  • 2026-09-19restoreC → Bscore 74: Shell command built from a string (injection risk)

simframe: common questions

Is simframe MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the simframe safety report
How do I install simframe?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does simframe need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is simframe maintained?
The last commit was 30 days ago (2026-10-05). The latest release is v0.23.1.
What can I use instead of simframe?
Servers from other publishers that do the same job: Mobilerun MCP server, Mobile MCP server and MCP Appium - Mobile Development and Automation Server MCP server. Compare all simframe alternatives.
How does simframe compare with other MCP servers?
safety score 92/100 (higher than 95% of 48,255 servers); tools 23 (the typical server has 7); tools that change things 4% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to simframe

Same job from other publishers: the closest match first, then the best rated.

All simframe alternatives →
  • Mobilerun
    Let AI agents control Android and iOS devices on Mobilerun Cloud: screen, input, apps, workflows.
    A
  • Mobile
    MCP server for iOS and Android Mobile Development, Automation and Testing
    A
  • MCP Appium - Mobile Development and Automation Server
    MCP server for Appium mobile automation on iOS and Android devices with test creation tools.
    A