Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
JAVA_HOMENoJDK location. Falls back to Android Studio's bundled JBR when unset.
ASMCP_PORTNoHTTP mode only: port (default 3939).
ASMCP_TOKENNoHTTP mode only: auth token (random if unset).
ANDROID_HOMENoAlternative to ANDROID_SDK_ROOT for the SDK location. Falls back to the project's `local.properties` `sdk.dir`, then the default SDK path.
ANDROID_SDK_ROOTNoSDK location. Falls back to the project's `local.properties` `sdk.dir`, then the default SDK path.
ANDROID_PROJECT_DIRNoDefault project. Otherwise every project tool takes `projectDir`, or the server's cwd is searched upward. Leave unset for Claude Code, which starts the server in the opened folder.
ANDROID_STUDIO_HOMENoAndroid Studio install dir (for `studio_open` and the JBR fallback) when it's not in the default location.

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
environmentA

Report the Android toolchain this server sees: SDK path and installed packages, Android Studio install, JAVA_HOME, and the resolved project. Call this first when something isn't found.

project_infoB

Summarize the Android project: modules, their type, namespace/applicationId, SDK levels, launcher activities, Gradle and AGP versions.

project_apksB

List APKs produced by previous builds, newest first.

studio_openB

Open a project, or a file at a line, in Android Studio (reuses the running IDE window if one is open). Handy for handing off to the human.

sdk_managerA

List installed/available SDK packages or install packages (e.g. 'platforms;android-36', 'system-images;android-36;google_apis;x86_64'). Requires the SDK Command-line Tools package.

job_statusA

Check a background job (build, run_app, emulator_start). Optionally wait for it to finish. Omit id to list all jobs.

job_cancelC

Cancel a running background job.

gradle_tasksC

List the Gradle tasks available in the project (or one module).

gradle_runA

Run Gradle tasks through the project's wrapper (e.g. ['assembleDebug'], [':app:testDebugUnitTest'], ['clean','build']). Returns parsed compiler errors. Runs as a job; poll with job_status if still running.

buildA

Assemble an APK for a module and variant (default: the app module, debug). Returns compiler errors and the APK path.

run_appB

The Android Studio 'Run' button: assemble the variant, install it on the device, and launch the launcher activity. Runs as a job.

test_resultsA

Parse JUnit XML results from the last unit test (testUnitTest) or instrumented test (connectedAndroidTest) run. Run tests with gradle_run first.

lint_resultsB

Parse the Android Lint XML report (run gradle_run with lintDebug or lint first).

devices_listA

List connected Android devices and running emulators (adb devices -l).

device_infoB

Model, Android version, API level, ABI, screen size and density of a device.

adb_shellA

Run an arbitrary shell command on the device (e.g. 'pm list packages -3', 'dumpsys battery'). Output is truncated to the tail.

app_installA

Install (or reinstall, keeping data) an APK on a device. Use project_apks to find built APKs.

app_uninstallC

Uninstall an app package from a device.

app_launchC

Start an app's launcher activity (or a given activity) and report launch time.

app_stopA

Force-stop an app, optionally also clearing all of its data.

packages_listB

List installed packages, third-party only by default.

logcatB

Read recent device logs. Filter by app package (uses its current PID), minimum priority, tag, or a regex. Use crashesOnly to get the crash buffer.

screenshotB

Capture the device screen as a PNG image. Optionally also save it to a file on this machine.

ui_dumpA

Dump the on-screen view hierarchy via uiautomator, as a compact list of nodes with text, resource-id, content-desc and tap-ready center coordinates.

inputA

Drive the device UI: tap or long-press at coordinates, swipe, type text, or press a key (BACK, HOME, ENTER, APP_SWITCH, DEL, or any KEYCODE_*). Get coordinates from ui_dump.

file_transferC

Copy a file between this machine and the device (adb push / adb pull).

emulator_listA

List Android Virtual Devices and which are currently running (with their serials).

emulator_startA

Boot an AVD in the background and wait for it to finish booting. Returns a job; if it isn't done within waitSec, poll it with job_status.

emulator_stopA

Shut down a running emulator by serial (e.g. emulator-5554).

ide_statusA

Whether Android Studio (with the bridge plugin) is running, its version, and its open projects and indexing state.

ide_editorsC

Files open in Android Studio, which have unsaved changes, and the active file with caret position and selection.

ide_read_fileA

Read a file as Android Studio currently has it, including unsaved edits. Prefer this over reading from disk when the user is editing in the IDE.

ide_problemsA

Errors and warnings from Android Studio's live analysis of a file (Kotlin/Java compiler checks, Android Lint, inspections), without running Gradle. Opens the file in the IDE if needed.

ide_openA

Open a file at a line/column in the running Android Studio and bring its window to the front.

ide_save_allA

Save all unsaved editor buffers to disk (build and run_app do this automatically when Studio is running).

ide_actionsB

Search Android Studio's action ids by id or menu text (e.g. 'sync', 'reformat', 'rebuild').

ide_actionA

Invoke an Android Studio action by id, as if chosen from the menu. Useful ids: Android.SyncProject (Gradle sync), ReformatCode, OptimizeImports, MakeGradleProject (Build › Make), CompileDirty, Android.RunAndroidLint. Editor actions apply to the active editor; use ide_open first.

ide_run_configurationsA

List the project's run/debug configurations and which one is selected.

ide_runB

Run or debug a run configuration in Android Studio, like its toolbar buttons (deploys to the IDE's selected device). Defaults to the selected configuration.

ide_find_usagesA

Find every reference to the symbol at path:line:column across the project using the IDE's semantic index (Kotlin and Java aware, not text search).

ide_renameA

Rename the symbol at path:line:column and update all references, like Shift+F6 (classes also rename their file). Saves all files afterwards. If the IDE detects conflicts it shows a dialog in Studio and this call times out; resolve it there.

ide_project_problemsA

Run Android Studio's analysis (compiler checks, inspections, on-the-fly lint) over the project or given files/folders without opening them or running Gradle. Errors only by default; faster than a build for checking an edit compiles.

ide_gradle_syncB

Run 'Sync Project with Gradle Files' in Android Studio and wait for the result (success, or the failure message).

ide_sync_statusA

State of the most recent Gradle sync in Android Studio (running / succeeded / failed with error).

ide_screenshotA

Capture Android Studio's window (or just the active editor area) as an image: see Compose previews, the layout editor, tool windows and error balloons as the user does.

ide_find_filesA

Find project files by name using the IDE index: exact name ('MainActivity.kt') or glob ('*ViewModel.kt').

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 46 tools

Disambiguation3/5

Most tools target distinct resources, but several overlap enough to cause misselection: studio_open vs ide_open (both open files in Studio), run_app vs ide_run (both deploy and launch a variant), and ide_problems vs ide_project_problems vs lint_results (three ways to surface errors). The detailed descriptions mitigate but don't fully resolve the boundaries.

Naming Consistency3/5

There is a general prefix-based convention (ide_*, app_*, emulator_*, device_*, project_*), but ordering is inconsistent (app_launch is noun_verb while ide_read_file is prefix_verb_noun) and several tools are bare unprefixed names (build, input, screenshot, logcat, environment). Readable, but the conventions are mixed rather than predictable.

Tool Count2/5

46 tools is well past the '25+ is too many' threshold, and while the IDE+device+build surface is broad, there are real consolidation opportunities (multiple run tools, multiple problem-analysis tools, IDE-action plumbing). The weight increases the chance of an agent picking a near-duplicate.

Completeness4/5

The surface covers the full lifecycle: environment discovery, project introspection, Gradle build/test, IDE control, device/emulator management, UI automation, screenshots, logs, and file transfer. Gaps are minor (no breakpoint/debugger control or profiling tools), which agents can work around.

Maintenance

ActivityMaintained
ResponsivenessNo issues