Run verified iOS and Android UI workflows in one agent tool call with Jev.
Complete a mobile UI sequence in one agent tool call.
JevSim is a local MCP server for agents working with iOS and Android apps. Give it a short plan—navigate, enter text, save, verify—and it executes the steps without returning to your main reasoning loop after every interaction. Jev, a text-based selection model, matches descriptions to current accessibility controls. XcodeBuildMCP (iOS) or Appium/UIAutomator2 (Android) performs the actions and checks the results.
If you are a human, give your agent this repository URL and ask: “Install JevSim for my iOS/Android project, connect it to your MCP tools, and verify the setup.” The instructions below are for that agent.
We reran the same ten-tap iOS Settings tour with the same checks after every action: open five sections and return from each. Pure agent means the main agent reads each screen and chooses the next control through XcodeBuildMCP. Agent + JevSim means it delegates the full route in one jevsim_run_steps call, with Jev selecting all ten targets.
| Approach | Median execution time | Verified runs | Speedup |
|---|---|---|---|
| Pure agent + XcodeBuildMCP | 117.3 s | 3/3 | 1× |
| Agent + JevSim + XcodeBuildMCP | 35.7 s | 3/3 | 3.3× |
Measured September 21, 2026: GPT-6-astra (high reasoning) in Codex, Jev 1.13.0, XcodeBuildMCP 2.7.0, iPhone 17e / iOS 26.5 Simulator. Times include observations, target decisions, actions, checks, and intermediate agent/tool round trips; setup and initial route planning are excluded. This is one navigation benchmark with three runs per approach, not a general debugging or Android speed guarantee. Run details and reproduction.
npx -y --package=@huaaudio/jevsim@0.1.0 jevsim. This downloads the compiled package; no clone or build is needed. Use an absolute path to Node.js 24’s npx if the client has a restricted PATH. Source installation remains available for development.TYPESAFE_API_KEY through your client's secret/environment configuration. The npm launcher does not automatically read .env; use the env-file launch option if needed. Preserve an existing .env; use .env.example only as a template. Never print or commit the key. Exact-identifier workflows also work without a key.| Tool | Use it to |
|---|---|
jevsim_status | Check backend connectivity, credential presence, and device inventory |
jevsim_inspect | Read the current accessibility state of one explicit device |
jevsim_run_steps | Execute 1–10 supplied steps within 60 seconds; receive outcomes, timings, and any stop reason |
Call status and inspect first. For iOS, pass the observed simulatorId; for Android, pass platform: "android" and the ADB deviceId. Derive the plan from the app and the user's task. Every step must include a backend-verifiable expect condition.
For example, this is one step only if your app exposes the stated destination identifier:
{
"action": "tap",
"target": { "description": "Open the profile editor" },
"expect": { "predicate": "exists", "identifier": "profile.name" }
}
Use a unique observed target.identifier when available; it skips the model request. Otherwise, Jev selects among current action-compatible controls or abstains. It cannot invent steps or generate typing text. Supported actions are tap, type, scroll, wait, and assert. See the request schema and complete example.
Reserve the device until the call returns. A completed result means every supplied expectation matched. If execution stops, inspect completedSteps, reason, and actionStatus, then inspect the app and re-plan. Never blindly replay a workflow or an uncertain action. See agent usage and recovery.
Delegate known sequences: reproduce a bug, navigate to a screen, exercise a form, or verify a change. Keep builds, code edits, visual interpretation, and decisions that depend on new information in your main agent. Split longer work into bounded sequences.
Agent installation · Agent usage · Tools · Configuration · Troubleshooting · Release notes
Contributors: development guide for fixtures, tests, benchmark reproduction, and implementation history.
MIT. Independent project; automation backends and the TypeSafe service have their own terms and licenses.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @huaaudio/jevsimMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-huaaudio-jevsim": {
"command": "npx",
"args": [
"-y",
"@huaaudio/jevsim"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceJevSim works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.