Mobile MCP
Drives iOS and Android simulators, emulators and real devices from an assistant
Desktop and mobile app control for agents, run in background sessions over MCP
By Astrid Gealer (individual) Rust Local · stdio Developer toolsTesting
16 popularity score ★ 20
Opens the app, which asks before it adds the server.
brew tap IAmJSD/OpenComputerUse https://github.com/IAmJSD/OpenComputerUse
brew trust iamjsd/opencomputeruse
brew install --cask opencomputeruseclaude mcp add opencomputeruse -- opencomputeruse mcp{
"mcpServers": {
"opencomputeruse": {
"command": "opencomputeruse",
"args": [
"mcp"
]
}
}
}{
"mcpServers": {
"opencomputeruse": {
"command": "opencomputeruse",
"args": [
"mcp"
]
}
}
}{
"servers": {
"opencomputeruse": {
"type": "stdio",
"command": "opencomputeruse",
"args": [
"mcp"
]
}
}
}[mcp_servers.opencomputeruse]
command = "opencomputeruse"
args = ["mcp"]gemini mcp add --scope user opencomputeruse opencomputeruse -- mcpOCU_MOBILE |
Optional: 1 turns on the phone, simulator and emulator tools; 0 turns them off (default off). |
|---|---|
OCU_LINUX_DISPLAY |
Optional: Default Linux display for sessions: x11 (default) or wayland. |
OCU_RECIPE_PROVIDER |
Optional: Which decision model run_recipe uses. |
TYPESAFE_API_KEY |
Optional: Key for the TypeSafe Jev recipe model. |
CLOUDFLARE_ACCOUNT_ID |
Optional: Cloudflare account for the Workers AI recipe model. |
CLOUDFLARE_API_TOKEN |
Optional: Cloudflare token for the Workers AI recipe model. |
OCU_LINUX_FILE_PORTAL |
Optional: 1 lets choose_file answer Linux file dialogs through a private portal. |
OCU_WINDOWS_PANEL_HOOK |
Optional: 1 loads a hook so Windows open/save dialogs go to the agent. |
OCU_VIEW_LISTEN |
Optional: Address for the Linux live view (needs OCU_VIEW_TOKEN). |
OCU_VIEW_TOKEN |
Optional: Token for the live view, at least 16 characters. |
OCU_LOG |
Optional: Set to debug for logs on stderr. |
OpenComputerUse is a computer-use server written in Rust. An agent opens a session on a named app, gets a session id back, and then takes screenshots, reads the accessibility tree and sends clicks, drags, scrolls, keystrokes and typed text to that app's windows. The aim is that the app runs out of the way: on macOS it stays behind your own windows without taking the pointer or keyboard focus, on Linux each session gets a private Xvfb display or a built-in headless Wayland compositor, and on Windows apps are started in a Job Object and sent to the back. Sessions and the apps they started are cleaned up when the server process exits.
Each action returns a new screenshot unless the call turns that off, and elements from the tree (ids such as e12) can be clicked, given a value or sent actions directly. Optional extras: Android phones, Android emulators and iOS simulators or devices as sessions; a run_recipe tool that hands a fixed list of steps to an outside decision model (TypeSafe Jev or Cloudflare Workers AI); a token-protected HTTP mode (serve) so other machines or several clients share one server; and a Linux live view where a person can watch and drive a session from a browser.
From the v0.8.0 source (src/tools.rs), the macOS build also offers an unlock_screen tool not listed in the README's tool table, which unlocks a locked Mac when "Work while the Mac is locked" is turned on. The device tools appear only when mobile support is switched on, and run_recipe only when a recipe provider is set up, so the tool list a client sees varies by platform and settings.
| Runtime | Rust |
|---|
macOS, Linux or Windows; install the Homebrew cask or a release binary (macOS app, or a single binary on Linux and Windows). macOS needs Accessibility and Screen Recording permission granted to the OpenComputerUse app. Linux needs Xvfb for the default X11 display (or libpixman-1 and xkb-data for Wayland) and dbus-daemon for the accessibility tree. Phones need adb (Android 11+ for the helper) or Xcode for iOS. Recipes need a TypeSafe or Cloudflare account and key.
On Linux, apps without AT-SPI (Xt, Motif, SDL, most games, Java without the ATK wrapper) give no accessibility tree, so only screenshots and coordinates work; Wayland is opt-in and X11-only apps need X11. choose_file works on macOS, on Windows, and on Linux only with the file portal option on. Device tools are off by default; move_mouse fails on devices, and without the Android helper only ASCII is typed. Recipes have no branching and stop at a step they cannot place. The HTTP mode has no TLS and listens on every adapter unless limited. Live view is Linux only.
Suits developers who want an agent to operate native desktop apps, or test mobile apps on simulators and phones, without giving up their own screen while it works. It runs locally and is a personal project rather than a vendor product. If the target is only web pages, a browser-automation server is a narrower choice; on Linux, apps with no accessibility support reduce it to screenshot-and-click work.
start_sessionend_sessionlist_sessionslist_windowsscreenshotget_ui_treeclickmove_mousedragscrolltype_textpress_keyset_valueelement_actionchoose_filewaitpermissionsunlock_screenrun_recipephone_listphone_appsphone_start_sessionios_simulator_listios_simulator_appsios_simulator_start_sessionandroid_emulator_listandroid_emulator_appsandroid_emulator_start_sessionhttp_serverlist_devicesgenerate_skillregenerate_keyremove_device