Mobile MCP - An MCP server for controlling mobile devices (iOS and Android) including simulators and emulators
24 tools with consistent verb-noun naming (mobile_*) and clear descriptions (avg ~120 chars). All tools have input schemas with typed parameters and descriptions. However, output schemas are undocumented, responses are returned as plain text strings rather than structured objects. Error handling exists but lacks recovery guidance. Tool annotations (readOnlyHint, destructiveHint) are present and correctly applied. Missing: pagination for list tools, per-item success/failure for batch operations, and explicit output field documentation.
Reserve a device from the remote fleet
Double tap on a specific coordinate on the device screen
Get all UI elements currently visible on the device screen
Get the current device screen orientation
Get the screen size and scale of the device
Take a screenshot of the device screen
Install an app on the device from a file path
Output schemas undocumented. All tools return plain text strings; LLMs cannot parse structured results or chain downstream calls. No documented field names, types, or pagination info.
List tools lack pagination. mobile_list_available_devices, mobile_list_fleet_devices, and mobile_list_apps return unbounded results with no limit, offset, or cursor parameters. Large device fleets will blow context windows.
Error handling lacks recovery guidance. ActionableError messages are generic ('Device not found. Use mobile_list_available_devices'). No categorization of retryable vs fatal errors, no invalid-value echoing for self-correction.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Launch an app on mobile device. Use this to open a specific app. You can find the package name of the app by calling list_apps_on_device.
List all the installed apps on the device
List all available devices. This includes both physical mobile devices and mobile simulators and emulators. It returns both Android and iOS devices.
List devices available in the remote fleet
Long press on a specific coordinate on the device screen
Open a URL on the device
Press a hardware button on the device
Release a device back to the remote fleet
Send text input to the device
Set the device screen orientation
Start recording video on the device
Stop recording video on the device
Swipe on the device screen in a specified direction
Swipe from a specific coordinate on the device screen in a specified direction
Tap on a specific coordinate on the device screen
Stop and terminate an app on the device
Uninstall an app from the device
Coordinate-based tools (tap, double_tap, long_press, swipe) lack bounds validation. No documented min/max for x, y, distance. LLMs can pass negative or out-of-bounds coordinates without guidance.
No confirmation step for destructive operations. mobile_uninstall_app and mobile_release_fleet_device are marked destructive but lack dry-run or confirmation patterns. Agents can uninstall apps without verification.