Mobile Tool Reference All 78 mobile MCP tools for Android and iOS automation — sessions, gestures, elements, app lifecycle, device control, and more.
Copy as Markdown Download .md
Tool Description Key Params mobile_devicesList connected ADB devices — mobile_session_startStart Appium session deviceUdid, platformName, app or bundleId, noReset, extraCapsmobile_session_stopClose session sessionIdmobile_session_statusCheck session health sessionId
Param Type Required Description appiumUrlstring No Appium server URL. Default: http://localhost:4723 deviceUdidstring Yes Device ID from adb devices platformNamestring Yes Android or iOSappstring No Path to APK/IPA — installs before launching appPackagestring No Android: package name of an already-installed app (e.g. com.android.settings) appActivitystring No Android: activity to launch (default: .MainActivity) bundleIdstring No iOS: bundle ID of an already-installed app noResetboolean No Don't reset app state between sessions. Default: false automationNamestring No UiAutomator2 (Android default) or XCUITest (iOS)extraCapsobject No Extra appium: capabilities. Useful for slow emulators: { uiautomator2ServerLaunchTimeout: 60000 }
The mobile_session_start, mobile_screenshot, and mobile_uitree tools also accept legacy parameter names (device, platform) as deprecated aliases for deviceUdid and platformName. Prefer the canonical names above for new code.
Tool Description Key Params mobile_screenshotADB screenshot — no session needed deviceUdidmobile_screenshot_elementCrop screenshot to element bounds sessionId, elementIdmobile_describe_screenAI-readable list of elements on screen sessionIdmobile_assert_textAssert text is visible — throws if not found sessionId, textmobile_wait_for_screen_changeWait until screen content changes after an action sessionId, timeoutmobile_uitreeRaw accessibility XML via ADB — no session needed deviceUdidmobile_sourceFull Appium page source as XML sessionId
Nine tools accept screenshot: true to return a confirmation screenshot after the action:
mobile_tap, mobile_tap_text, mobile_swipe, mobile_type, mobile_fill_field, mobile_long_press, mobile_double_tap, mobile_drag, mobile_scroll_to_text
Tool Description Key Params mobile_tapTap at coordinates sessionId, x, y, screenshotmobile_tap_textFind element by visible text and tap sessionId, text, screenshotmobile_double_tapDouble-tap sessionId, x, y, screenshotmobile_long_pressLong press / hold sessionId, x, y, duration, screenshotmobile_swipeSwipe between two points sessionId, startX, startY, endX, endY, duration, screenshotmobile_dragDrag-and-drop sessionId, startX, startY, endX, endY, screenshotmobile_pinchPinch gesture sessionId, x, y, scalemobile_zoomZoom gesture sessionId, x, y, scalemobile_typeType text via keyboard sessionId, text, screenshotmobile_keyPress hardware key sessionId, key (HOME, BACK, ENTER, VOLUME_UP, VOLUME_DOWN, POWER, DELETE…)mobile_hide_keyboardDismiss soft keyboard sessionIdmobile_press_homeHome button — Android only sessionIdmobile_press_backBack button — Android only sessionIdmobile_set_orientationSet screen orientation sessionId, orientation (PORTRAIT or LANDSCAPE)mobile_get_orientationGet current orientation sessionId
Tool Description Key Params mobile_find_elementFind element by strategy sessionId, strategy, selectormobile_find_all_elementsFind all matching elements sessionId, strategy, selectormobile_find_by_textCross-platform text search sessionId, textmobile_wait_for_elementWait until element appears sessionId, strategy, selector, timeoutmobile_scroll_to_textScroll until text is visible sessionId, text, screenshotmobile_element_textGet element's visible text sessionId, elementIdmobile_fill_fieldClear field + type text sessionId, elementId, text, screenshotmobile_set_valueSet field value bypassing keyboard sessionId, elementId, valuemobile_element_existsCheck if element is present sessionId, strategy, selectormobile_executeRun mobile: script escape hatch sessionId, script, args
Strategy Example selector Platform accessibility id"Login Button"Android (content-desc) + iOS (accessibilityIdentifier) xpath"//android.widget.EditText[@resource-id='email']"Both id"com.example.app:id/login_button"Android class name"android.widget.TextView"Android -android uiautomator"new UiSelector().text(\"Login\")"Android -ios predicate string"label == 'Login'"iOS
Tool Description Key Params mobile_install_appInstall APK or IPA sessionId, appPathmobile_uninstall_appRemove app from device sessionId, bundleId or appPackagemobile_activate_appBring app to foreground sessionId, bundleId or appPackagemobile_clear_app_dataClear data/cache without uninstalling — Android only sessionId, appPackagemobile_app_launchLaunch by package via ADB — no session needed deviceUdid, appPackage, activitymobile_app_stopForce-stop via ADB — no session needed deviceUdid, appPackagemobile_app_stateGet app state sessionId, bundleId
App states returned by mobile_app_state: not_installed, not_running, background_or_suspended, background, running.
Tool Description Key Params mobile_grant_permissionGrant app permission — Android only sessionId, appPackage, permissionmobile_revoke_permissionRevoke app permission — Android only sessionId, appPackage, permissionmobile_deep_linkOpen URL scheme or universal link sessionId, urlmobile_clipboardGet or set clipboard text sessionId, action (get|set), textmobile_geolocationMock GPS coordinates sessionId, latitude, longitudemobile_push_filePush local file to device sessionId, localPath, remotePathmobile_pull_filePull file from device sessionId, remotePath
android.permission.CAMERA
android.permission.ACCESS_FINE_LOCATION
android.permission.READ_CONTACTS
android.permission.RECORD_AUDIO
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.POST_NOTIFICATIONS
Tool Description Key Params mobile_handle_alertAccept or dismiss alert/dialog sessionId, action (accept|dismiss)mobile_get_contextsList Native + WebView contexts sessionIdmobile_switch_contextSwitch between native and WebView sessionId, contextName
To automate Chrome on-device or a WebView embedded in a native app:
mobile_get_contexts — lists contexts like NATIVE_APP, WEBVIEW_com.example.app
mobile_switch_context with the WebView context name
Use mobile_browser_* tools — 20 CDP tools covering navigate, tap, type, evaluate JS, cookies, localStorage, network throttle, geolocation, user agent, and more
Tool Description Key Params mobile_record_startStart screen recording deviceUdidmobile_record_stopStop recording and return file path deviceUdid
mobile_session_start
→ mobile_screenshot # see the screen
→ mobile_describe_screen # get AI-readable element list
→ mobile_tap_text("Menu") # tap something
→ mobile_screenshot # see the result
mobile_session_start
→ mobile_find_by_text("Email") → mobile_fill_field(email)
→ mobile_find_by_text("Password") → mobile_fill_field(password)
→ mobile_tap_text("Sign In")
→ mobile_wait_for_screen_change
→ mobile_assert_text("Dashboard")
→ mobile_screenshot
mobile_session_start
→ mobile_deep_link("myapp://product/abc123")
→ mobile_assert_text("Product Name")
→ mobile_screenshot
mobile_session_start
→ mobile_grant_permission("android.permission.CAMERA")
→ mobile_activate_app("com.example.app")
→ mobile_tap_text("Enable Camera")
→ mobile_assert_text("Camera ready")
mobile_session_start with extraCaps:
{
"uiautomator2ServerLaunchTimeout" : 60000 ,
"uiautomator2ServerInstallTimeout" : 60000 ,
"adbExecTimeout" : 60000
}