Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
doctorA

Check the Android development environment: SDK location, adb, emulator, avdmanager, Java, and connected devices. Run this first if any other tool fails with a missing-binary error.

session_set_defaultsA

Set default projectDir/module/variant/serial/appId used by other tools when the corresponding argument is omitted. Set these once after discovering the project.

session_show_defaultsA

Show the current session defaults.

session_clear_defaultsB

Clear all session defaults, or only the listed keys.

discover_projectsA

Find Android/Gradle projects (directories with settings.gradle[.kts]) under a path. Use the result to session_set_defaults projectDir.

list_modulesA

List modules declared in settings.gradle(.kts) of the project.

list_variantsA

List build variants of a module by inspecting its Gradle assemble tasks (runs './gradlew :tasks').

get_app_idA

Get the applicationId (package name) of a module, parsed from its build.gradle(.kts). Needed by install/launch/log tools.

show_gradle_configA

Show toolchain versions: Gradle (from wrapper properties) and everything in the version catalog (AGP, Kotlin, Compose, ...).

build_appA

Build an APK with Gradle (assemble). On failure returns compact compiler errors with file:line. On success returns the APK path.

build_runA

Build the APK, install it on a device/emulator (adb install -r), and launch the app. Needs appId (session default or argument) to launch.

test_appA

Run local JVM unit tests (testUnitTest) and return a parsed pass/fail summary with failure messages.

test_instrumentedB

Run instrumented tests on a connected device/emulator (connectedAndroidTest) and return a parsed summary. Requires a booted device.

lintB

Run Android Lint (lint) and return the textual report summary.

cleanB

Run gradle clean for the project.

get_apk_pathA

Locate the most recent built APK for a module/variant without building.

stop_gradleA

Stop the project's Gradle daemons (use when a build hangs or to free memory).

list_devicesA

List connected devices and emulators with serial, state, model, Android version and API level.

install_appA

Install an APK on a device/emulator (adb install -r).

launch_appA

Launch an app by application id (resolves the launcher activity automatically).

stop_appA

Force-stop a running app (am force-stop).

uninstall_appB

Uninstall an app from a device/emulator.

clear_app_dataA

Clear all data of an app (pm clear) — resets it to a fresh-install state.

get_app_infoA

Get installed-app info from the device: version, target/min SDK, install path, running PID.

list_avdsA

List available Android Virtual Devices and which ones are currently running.

boot_emulatorA

Boot an AVD in the background and wait until Android finishes booting. Returns the adb serial. Set wipeData to factory-reset the AVD on boot.

kill_emulatorA

Shut down a running emulator (adb emu kill).

create_avdA

Create an AVD from an installed system image (e.g. 'system-images;android-35;google_apis;arm64-v8a'). If systemImage is omitted, lists the installed images to choose from.

delete_avdB

Delete an AVD permanently.

set_emulator_locationB

Set the GPS location of a running emulator.

set_appearanceA

Switch a device/emulator between dark and light mode (cmd uimode night).

statusbar_demo_modeA

Enable clean status bar for screenshots (fixed clock, full battery, full signal) or disable it.

record_video_startA

Start recording the device screen (adb screenrecord, max 3 minutes). Returns a recordingId for record_video_stop.

record_video_stopA

Stop a screen recording and pull the MP4 to the local machine.

start_log_captureA

Start capturing logcat to a file in the background. Filter by app (via its pid) and/or tag. Returns a sessionId for stop_log_capture. The app must be running to filter by appId.

stop_log_captureA

Stop a log capture session and return the file path plus the last lines.

get_logsA

One-shot dump of recent logcat lines, optionally filtered by app (must be running) and/or tag.

get_crash_logsA

Dump the crash log buffer (Java exceptions, native crashes, ANRs).

screenshotA

Take a screenshot of the device/emulator screen and return it as an image. With annotate: true (needs the Google android CLI), UI elements get numbered bounding boxes — including text inside images/WebViews that snapshot_ui cannot see.

snapshot_uiA

Dump the current UI as a compact list of actionable elements (text, id, content-desc, tap coordinates). Use the @(x,y) centers with tap/long_press. Text-heavy screens are capped; pass 'filter' to search within them.

tapA

Tap the screen. Coordinates from snapshot_ui are exact device pixels — prefer them over estimating positions by looking at a screenshot image. Instead of pixels you can pass screen percentages (0-1): safer when estimating positions from a screenshot image.

tap_elementA

Tap element #N from the most recent screenshot { annotate: true } capture — no coordinate math needed. The mapping is exact even if your client displays the image scaled. Re-capture after the UI changes: element numbers go stale.

scrollA

Scroll the screen in a direction (computes a safe swipe in the middle of the screen, avoiding the status bar and navigation areas). Prefer this over raw swipe for scrolling.

long_pressA

Long-press the screen at coordinates. Instead of pixels you can pass screen percentages (0-1): safer when estimating positions from a screenshot image.

swipeA

Swipe from one point to another (scrolling, dismissing). For drag-and-drop use drag instead. Instead of pixels you can pass screen percentages (0-1): safer when estimating positions from a screenshot image.

dragB

Drag an element from one point to another (input draganddrop). Instead of pixels you can pass screen percentages (0-1): safer when estimating positions from a screenshot image.

type_textA

Type ASCII text into the focused field. Waits for the soft keyboard first, so it is safe to call right after tapping a field. Options: clear the field first, press ENTER after. Non-ASCII characters are not supported by adb input.

key_pressA

Press a hardware/navigation key: BACK, HOME, ENTER, TAB, DELETE, ESCAPE, MENU, APP_SWITCH, DPAD_*, or any KEYCODE_ name.

key_sequenceA

Press several keys in order (same names as key_press).

wait_for_uiA

Poll the UI until an element containing the given text / content-desc / resource-id appears. Returns its tap coordinates.

get_coverage_reportA

Run a coverage Gradle task (Kover or Jacoco) and summarize line coverage per package. Tries koverXmlReport by default; pass 'task' for a custom one (e.g. jacocoTestReport). The project must apply a coverage plugin.

get_file_coverageA

Show covered/uncovered line numbers of one source file from the latest coverage report (run get_coverage_report first).

scaffold_android_projectA

Create a new minimal Jetpack Compose app project (single module, version catalog, Gradle wrapper included) ready to build with build_app.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dev-jackson/androidbuild-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server