Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ANDROID_HOMENoPath to the Android SDK; used to locate the SDK (platform-tools/adb and the emulator) along with ANDROID_SDK_ROOT, ~/Android/Sdk, ~/Library/Android/sdk or PATH.
ANDROID_SDK_ROOTNoPath to the Android SDK; used to locate the SDK (platform-tools/adb and the emulator) along with ANDROID_HOME, ~/Android/Sdk, ~/Library/Android/sdk or PATH.
ANDROID_MCP_AGENTNoSet ANDROID_MCP_AGENT=0 in the server's environment to always use `uiautomator dump` instead of the on-device Appium UiAutomator2 agent (used when the agent can't be started).1
ANDROID_MCP_KEEP_ANIMATIONSNoSet ANDROID_MCP_KEEP_ANIMATIONS=1 to leave the device's window, transition and animator duration scales alone (by default they are set to 0 and restored when the server exits).0

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
list_devicesA

List connected adb devices (emulators and physical) and available AVDs.

start_emulatorA

Start an Android emulator (AVD) and wait until it has booted. Returns immediately if it is already running.

get_screen_infoC

Screen size, density, coordinate scale and the app in the foreground.

set_orientationA

Lock the screen to portrait or landscape, or re-enable auto-rotation.

list_dev_appsA

List the apps this server may use. Only debug builds installed from Android Studio (Run) are allowed: debuggable + testOnly + installed via adb.

current_appC

Package and activity currently in the foreground.

launch_appC

Launch an allowed dev app by package (its launcher activity), or a specific activity of it.

stop_appC

Force-stop an app.

clear_app_dataA

Delete all data of an app (like a fresh install). Also stops it.

open_urlB

Open a URL / deep link in an allowed dev app with an ACTION_VIEW intent.

screenshotA

Take a screenshot (costs far more tokens than get_ui; use it for visuals the tree lacks). Its pixel coordinates are the screen coordinates every other tool uses. With region, returns a sharper crop for reading small text; a crop's pixels are NOT screen coordinates.

get_uiA

The visible UI as a list of elements: [ref] (stable across calls), text, desc, id, centre, size, flags. Target elements by ref (index), text or id. Falls back to a screenshot when no tree is available.

wait_forC

Wait until an element with the given text/id appears (or, with gone=true, disappears).

logcatA

Read the log of an allowed dev app (including lines of crashed earlier processes). By default returns only lines that are new since the previous call with the same filters.

list_crashesB

List recorded crashes, ANRs and native crashes of a dev app, newest first, with exception and top frame. Reports survive the process and logcat rotation.

get_crashB

Full report of one crash from list_crashes: header (process, version, time) and the complete stack trace.

tapC

Tap an element (by index, text or id) or a screen point (x, y).

long_pressB

Long-press an element (by index, text or id) or a screen point (x, y).

swipeA

Swipe/drag from one screen point to another. A slow swipe (duration >= 1000) acts like a drag.

read_allA

Read a whole scrollable list or form in one call: scrolls it to the end and returns every entry it contains, in order. Much cheaper than scrolling step by step. Afterwards the list stays at the end.

scrollA

Scroll the content in a direction (down = reveal content below). Scrolls the given element (index), otherwise the largest scrollable element on screen (the screen centre only when no UI tree is available).

type_textA

Type text into the focused field. Optionally tap a target first to focus it, clear it, and press enter afterwards.

press_keyB

Press a key: back, home, enter, del, backspace, forward_del, tab, escape, app_switch, menu, search, power, wakeup, volume_up, volume_down, dpad_up, dpad_down, dpad_left, dpad_right, dpad_center, move_home, move_end, any KEYCODE_* name, or a key code number.

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 23 tools

Disambiguation4/5

Tools are well separated by resource and action: interaction (tap/long_press/swipe/scroll/type_text/press_key), capture (screenshot/get_ui), and diagnostics (logcat/list_crashes/get_crash) are clearly differentiated, and descriptions explicitly resolve the screenshot-vs-get_ui and read_all-vs-scroll boundaries. The only mild overlap is get_screen_info vs current_app, both of which report the foreground app, and get_ui vs read_all for reading content.

Naming Consistency4/5

Most tools follow a predictable verb_noun pattern (open_url, get_ui, list_devices, start_emulator, launch_app, clear_app_data, press_key). A few deviate to bare nouns/actions (screenshot, logcat, tap, swipe, current_app), which is readable but not fully uniform.

Tool Count4/5

At 23 tools it sits at the high end, but the surface is cleanly partitioned across device lifecycle, app lifecycle, UI interaction, capture and diagnostics, so each tool earns its place. It is slightly heavy but not bloated or redundant.

Completeness4/5

The set covers a full Android automation lifecycle: device/emulator management, app listing/launch/stop/clear-data, rich UI interaction, capture, and crash/log diagnostics, with sensible helpers like wait_for and read_all. Minor gaps remain (no install/uninstall or file push-pull, no multi-touch/pinch or double-tap gestures), but they are workaroundable.

Maintenance

ActivityMaintained
ResponsivenessNo issues