Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MOBILEMCP_AUTHNoAuthentication token for HTTP mode. When set, clients must send this as a Bearer token.
MOBILEMCP_FLOWS_DIRNoOptional local directory containing flow files to be used by the server.
MOBILEMCP_DISABLE_TELEMETRYNoSet 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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 35 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues