mobile-mcp-allinone
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MOBILEMCP_AUTH | No | Authentication token for HTTP mode. When set, clients must send this as a Bearer token. | |
| MOBILEMCP_FLOWS_DIR | No | Optional local directory containing flow files to be used by the server. | |
| MOBILEMCP_DISABLE_TELEMETRY | No | Set to '1' to disable PostHog telemetry. Example: MOBILEMCP_DISABLE_TELEMETRY=1 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mobile_list_available_devicesA | List all available devices. This includes both physical mobile devices and mobile simulators and emulators. It returns both Android and iOS devices. |
| mobile_list_appsA | List all the installed apps on the device |
| mobile_launch_appB | 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. |
| mobile_terminate_appB | Stop and terminate an app on mobile device |
| mobile_install_appB | Install an app on mobile device |
| mobile_uninstall_appB | Uninstall an app from mobile device |
| mobile_get_screen_sizeA | Get the screen size of the mobile device in pixels |
| mobile_click_on_screen_at_coordinatesA | Click on the screen at given x,y coordinates. If clicking on an element, use the list_elements_on_screen tool to find the coordinates. |
| mobile_double_tap_on_screenA | Double-tap on the screen at given x,y coordinates. |
| mobile_long_press_on_screen_at_coordinatesA | Long press on the screen at given x,y coordinates. If long pressing on an element, use the list_elements_on_screen tool to find the coordinates. |
| mobile_list_elements_on_screenA | List elements on screen and their coordinates, with display text or accessibility label. Do not cache this result. |
| mobile_press_buttonC | Press a button on device |
| mobile_open_urlA | Open a URL in browser on device |
| mobile_swipe_on_screenC | Swipe on the screen |
| mobile_type_keysA | Type text into the focused element |
| mobile_save_screenshotA | Save a screenshot of the mobile device to a file |
| mobile_take_screenshotA | Take a screenshot of the mobile device. Use this to understand what's on screen, if you need to press an element that is available through view hierarchy then you must list elements on screen instead. Do not cache this result. |
| mobile_set_orientationA | Change the screen orientation of the device |
| mobile_get_orientationA | Get the current screen orientation of the device |
| mobile_start_screen_recordingA | Start recording the screen of a mobile device. The recording runs in the background until stopped with mobile_stop_screen_recording. Returns the path where the recording will be saved. |
| mobile_stop_screen_recordingA | Stop an active screen recording on a mobile device. Returns the file path, size, and approximate duration of the recording. |
| mobile_list_crashesA | List crash reports available on the device |
| mobile_get_crashA | Get the full content of a crash report by its ID. Use mobile_list_crashes to find available crash IDs. |
| webview_connectA | 连接/重连目标 App 的 in-app 系统 WebView(自动 adb forward),返回当前页 url/title/路由。读 webview DOM 前必须先调它。 |
| webview_evaluateA | 在 webview 页面执行 JS 并返回 JSON 结果(Runtime.evaluate,returnByValue+awaitPromise)。⚠ chrome68 老机型禁用 ?./??,用 a&&a.b。 |
| webview_get_computed_styleB | 取 webview 内某元素的 computed CSS + 包围盒(getComputedStyle)。 |
| webview_dom_outlineA | 取 webview 内某元素(默认 body)的 outerHTML 概要(截断,排错 DOM 结构用)。 |
| webview_click_textA | 按可见文本点击 webview 内元素(找最外层匹配且可见者)。 |
| webview_screenshotB | page 级截图(Page.captureScreenshot)并落盘,返回文件路径(不回传 base64)。 |
| webview_network_captureA | 抓 N 毫秒内 webview 的网络请求(Network 域:url/method/status/类型)。 |
| webview_disconnectA | 断开本工具对 webview 的 CDP 连接,释放该 page 的唯一 CDP socket(把 webview 交给 Appium/chromedriver 前先调它)。 |
| webview_pagesA | 列出目标 App webview 的调试目标(/json/list,自动 adb forward),确认 type:page 页面。 |
| run_flowA | 按序回放一段步骤(原生+webview 混合,搭积木)。传 steps(内联数组)或 name(已存 flow)二选一;device=默认设备。step 例:[{op:'launch_app',packageName:'..'},{op:'webview_connect',packageName:'..'},{op:'assert_route',contains:'main'},{op:'tap_text',text:'登录'}]。op 全集见 flows.ts(launch_app/terminate_app/tap/tap_text/press_button/swipe/type_keys/screenshot/wait/log + webview_connect/webview_evaluate/webview_computed_style/webview_click_text/webview_disconnect + assert_route/assert_eval)。 |
| save_flowA | 把一段步骤序列存为具名 flow(下次用 run_flow name= 直接回放)。 |
| list_flowsA | 列出所有已存的具名 flow。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 35 tools
Most tools divide into clear mobile, webview, and flow groups, but run_flow's op list overlaps with many individual tools (launch_app, screenshot, webview_connect, tap_text), and there are three screenshot-related tools (mobile_take_screenshot, mobile_save_screenshot, webview_screenshot). Descriptions clarify some boundaries, but an agent could easily select a single-step run_flow or the wrong screenshot tool.
Snake_case verb_noun naming is used throughout, with clear mobile_ and webview_ prefixes plus flow verbs. Minor inconsistencies exist: the webview group lacks the mobile_ prefix, coordinate suffixes vary (click_on_screen_at_coordinates vs double_tap_on_screen vs long_press_on_screen_at_coordinates), and run_flow/save_flow/list_flows form a separate prefix family.
With 35 tools, this exceeds the 25+ threshold for 'too many' even for an all-in-one mobile/webview/flow server. Several tools could be consolidated, such as the screenshot variants and the overlap between run_flow's op set and individual action tools.
App lifecycle, device interactions, screenshots, and webview inspection are broadly covered. However, flows can be saved, listed, and run but not deleted or updated, and some run_flow operations (wait, tap_text, assert_route) have no standalone equivalents, forcing workarounds. These are notable gaps but not fatal.