jev-mobile-mcp
Fork of mobile-mcp that adds OCR and lets Jev pick which recognised text element to tap on Android and iOS devices.
Overview
jev-mobile-mcp is an MCP server built on mobile-next/mobile-mcp for agents that drive Android and iOS devices, emulators and simulators, aimed at device testing. It keeps every upstream feature and adds an OCR layer (screenshot plus macOS Vision) between the accessibility tree and screenshots, so agents need full screenshots less often. Many screens, such as Flutter drawers without semantics or canvas UIs, never expose their text in the accessibility tree.
With a TypeSafe key, mobile_tap reads OCR first and asks Jev to pick the matching text; if no confident match, it merges the tree and OCR and asks again; if still unsure, nothing is tapped and candidates are returned for the agent to choose. The README notes OCR takes about 1-1.5 s versus 6-10 s for reading a Flutter debug tree. Element lists are also compacted for all users, roughly 60% shorter.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which on-screen text element matches the tap target? | — |
How it works
- Agent calls mobile_tap with a target
- OCR reads the screen; Jev picks the matching text
- If not confident, merge accessibility tree and OCR and ask again
- If still unsure, tap nothing and return candidates to the agent
Strengths
- Fewer screenshots sent to the agent model
- Faster than reading slow accessibility trees in some apps
- Never taps on low confidence
Caveats
- OCR relies on macOS Vision
- Jev element choice requires a TypeSafe key
- Licence not stated in the list data
At a glance
- Type
- MCP server
- Status
- beta
- Language
- TypeScript
- Runtime
- Node MCP server
- Has code
- yes
Use cases and integrations
How curated lists describe it
a mcp by jev decision and ocr detection for device testing.
wh000wh000/awesome-jev-live
Frequently asked questions
What does Jev decide?
Which OCR or tree element matches the target the agent wants to tap.
What if Jev is not confident?
Nothing is tapped and the candidates are returned for the agent to pick.
Does it work without a TypeSafe key?
The OCR and compact element features work; Jev element choice needs a key.
Related projects
Single-file MCP server giving coding agents typed, budgeted Jev control over the iOS Simulator with gated destructive actions.
MCP serverprototypeJavaScriptRust MCP server for desktop control via accessibility trees, with an optional decision model (Jev or compatible) for small choices.
MCP serverproductionRustRust CLI for desktop computer use via accessibility trees, with optional jev-desktop scripts letting Jev pick the control and action.
Agent skillbetaRustmacOS computer-use package: a background app driver for any agent, plus a loop where Jev picks each UI action for a bounded subtask.
ProjectbetaPythonCodexQA browser skill that indexes in-page controls and has Jev pick the operation and target each step, with no screenshots needed.
Agent skillbetaLocal stdio MCP server that executes whole browser and macOS goals with a Jev-driven observe-decide-act loop.
MCP serverbetaTypeScript