AutoMobile
AutoMobile is a mobile automation MCP server for UI testing and development workflow automation, primarily supporting Android with iOS planned.
Device Management
List, start, kill, and set active devices; list available device images
Rotate orientation, shake device, configure device modes (exploration/test authoring)
App Management
Launch (with optional cold boot/data clearing), terminate, and install apps
List installed apps, open URLs, query deep links and intent filters
UI Interaction
Observe the current view hierarchy on screen
Tap (single, double, long press), swipe on elements or full screen, scroll within containers
Open system tray, navigate home, open recent apps, press hardware buttons (home, back, menu, power, volume)
Text Input
Input text, clear text, select all text, trigger IME actions (done, next, search, send, etc.)
Intent Handling
Detect and dismiss system intent chooser dialogs (always, just once, or a specific app)
Demo Mode
Enable/disable demo mode with customizable status bar indicators for consistent screenshots
Configuration & Dependencies
Set app source directories for source mapping, retrieve/reset configs
Install and verify platform dependencies for Android/iOS automation
Provides UI testing and automation capabilities for Android applications, allowing for interaction with app elements, view hierarchy analysis, and source mapping to identify rendered code.
Mentioned as a planned future platform for mobile automation, though not currently supported.
The AutoMobile tool is published on npm, allowing users to install and use the mobile automation toolset.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AutoMobile take a screenshot of the current screen and save it as test_failure.png"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AutoMobile
β οΈ PROJECT ARCHIVED
AutoMobile is no longer maintained or supported by Zillow. Zillow does not provide warranties or support for this project.
This repository has been archived and is read-only. For continued development and support, please see the community-maintained fork by Jason Pearson:

AutoMobile is a set of tools for mobile automation. You can use it for UI testing or as a development workflow assistant.
The first platform supported is Android with plans to extend to iOS.
How it works
π§ Powerful MCP Server: AutoMobile provides comprehensive actions through MCP tool calls with a fast observations to drive the interaction loop.
πΊοΈ Source Mapping: Combining project path config with deep view hierarchy analysis we know exactly what code is being rendered.
βοΈ Automated Test Authoring: When used in test authoring mode AutoMobile will write tests for you. It is the only way it writes tests.
π§ͺ Test Execution - Run tests locally or on CI without extra infrastructure.
π± Device Management: Multi-device support with emulator control and app lifecycle management.
All together you get a system that looks like this:

Related MCP server: XcodeBuildMCP
Documentation
π» Installation & Getting Started - AutoMobile is published on npm and we have instructions for agents we've tested with.
π Change Log - coming soon
Contributing
Contributing - coming soon
Acknowledgement
By continuing to use AutoMobile, you acknowledge and agree to the warnings and responsible use requirements.
Available Tools
38 toolscheckPlatformDependenciesB
Check the installation status of platform dependencies and tools
Inputs: platform (required).
clearTextC
Clear text from the currently focused input field
Inputs: platform (required).
detectIntentChooserB
Detect system intent chooser dialog in the current view hierarchy
Inputs: no named parameters.
disableDemoModeC
Disable demo mode and return to normal status bar behavior
Inputs: platform (required).
enableDemoModeA
Enable demo mode with consistent status bar indicators for screenshots
Inputs: platform (required), time, batteryLevel, batteryPlugged, +4 more.
getAllConfigsB
Retrieve current configuration.
Inputs: no named parameters.
getDeepLinksC
Query available deep links and intent filters for an Android application
Inputs: appId (required).
handleIntentChooserC
Automatically handle system intent chooser dialog with specified preferences
Inputs: preference, customAppPackage.
homeScreenB
Return to the home screen by pressing the home button
Inputs: platform (required).
imeActionC
Perform an IME action (e.g., done, next, search)
Inputs: action (required), platform (required).
inputTextC
Input text to the device
Inputs: text (required), platform (required), imeAction.
installAppC
Install an APK file on the device
Inputs: apkPath (required).
installPlatformDependenciesC
Install required dependencies and tools for the specified platform
Inputs: platform (required), update.
killDeviceC
Kill a running device
Inputs: device (required).
launchAppC
Launch an app by package name
Inputs: appId (required), clearAppData, coldBoot.
listAppsC
List all apps installed on the device
Inputs: platform (required).
listDeviceImagesB
List all available device images for the specified platform
Inputs: platform (required).
listDevicesC
List all connected devices (both physical and virtual devices)
Inputs: platform (required).
observeC
Get the view hierarchy of what is displayed on screen
Inputs: platform (required).
openLinkB
Open a URL in the default browser
Inputs: url (required), platform (required).
openSystemTrayA
Open the system notification tray by swiping down from the status bar
Inputs: platform (required).
pressButtonC
Press a hardware button on the device
Inputs: button (required), platform (required).
pressKeyB
Press a hardware key on the device (Maestro equivalent of pressButton)
Inputs: key (required), platform (required).
recentAppsC
Open the recent apps list
Inputs: platform (required).
resetConfigB
Reset to default settings. This will clear all saved configuration.
Inputs: no named parameters.
rotateC
Rotate the device to a specific orientation
Inputs: orientation (required), platform (required).
scrollC
Scroll in a direction on a scrollable container, optionally to find an element (supports text and selectors)
Inputs: containerElementId (required), direction (required), platform (required), lookFor, +1 more.
selectAllTextA
Select all text in the currently focused input field using long press + tap on 'Select All'
Inputs: platform (required).
setActiveDeviceC
Set the active device ID for subsequent operations
Inputs: deviceId (required), platform (required).
setAppSourceC
For a given appId, set the source code path and platform.
Inputs: sourceDir (required), appId (required), platform (required).
setDeviceModeC
Set parameters for a particular device in a given mode.
Inputs: deviceId (required), platform (required), exploration, testAuthoring.
shakeC
Shake the device
Inputs: platform (required), duration, intensity.
startDeviceC
Start a device with the specified device image
Inputs: localDevice (required), platform (required).
swipeC
Unified scroll command supporting direction and speed (no index support due to reliability)
Inputs: containerElementId (required), direction (required), platform (required), lookFor, +1 more.
swipeOnElementC
Swipe on a specific element
Inputs: elementId (required), direction (required), duration (required), platform (required), +1 more.
swipeOnScreenC
Swipe on screen in a specific direction
Inputs: direction (required), includeSystemInsets (required), duration (required), platform (required).
tapOnD
Tap supporting text or resourceId
Inputs: action (required), platform (required), containerElementId, text, +1 more.
terminateAppC
Terminate an app by package name
Inputs: appId (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 38 tools
Most tools have distinct purposes, but there is notable overlap between pressButton and pressKey (both press hardware buttons, with pressKey described as the 'Maestro equivalent'), and between scroll and swipe (both handle directional movement, with swipe described as a 'unified scroll command'). These overlaps could cause confusion for an agent trying to select the right tool.
Tool names are mostly consistent with a verb_noun pattern (e.g., clearText, installApp, launchApp), but there are minor deviations like observe (verb only) and getAllConfigs (verb_adjective_noun). Overall, the naming is readable and follows a predictable convention with only a few outliers.
With 38 tools, the count is excessive for an Android automation server, making it feel heavy and potentially overwhelming. A more focused set of 10-20 tools would be more appropriate for this domain, as many tools could be consolidated or omitted without losing functionality.
The tool surface is highly complete for Android device automation, covering installation, configuration, navigation, input, interaction, and device management. It includes CRUD-like operations (e.g., installApp, listApps, terminateApp) and supports core workflows without obvious gaps, ensuring agents can handle most automation tasks effectively.
Maintenance
Related MCP Connectors
Remote MCP for Android CLI agent build gate, structured receipts, audit logs, and reviewer-ready evi
Phones for your agents: each agent gets its own cloud Android phone over MCP, reads the screen, taps, types and installs your APK. Ready in ~20 s, $0.01/min, parked phones free.
MCP server for Appcircle mobile CI/CD platform.
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Related MCP Servers
- AlicenseBqualityBmaintenanceA Model Context Protocol server that enables scalable mobile automation through a platform-agnostic interface for iOS and Android devices, allowing agents and LLMs to interact with mobile applications using accessibility snapshots or coordinate-based interactions.3533,974 npm10,383Apache 2.0
- AlicenseBqualityBmaintenanceA Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.832,909 npm6,566MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-driven mobile test automation through planning, generation, and self-healing agents for Android and iOS, exposed as callable MCP tools.10ISC
- AlicenseNot gradedqualityDmaintenanceLocal MCP server for Android and iOS mobile automation and performance telemetry, enabling device control (screenshot, tap, swipe, input, app launch) and metric collection (CPU, memory, launch time) via ADB, simctl, and WebDriverAgent with SQLite session history.24 npm1MIT