ADB MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB_APK_ROOT | No | Directory from which APK installation is allowed. Defaults to `ADB_PROJECT_ROOT`. | |
| ADB_EXECUTABLE | No | ADB executable path. Defaults to `adb`. | adb |
| ADB_TIMEOUT_MS | No | Default ADB command timeout. Defaults to `30000`. | 30000 |
| OBS_EXECUTABLE | No | OBS application name, `.app` path, or executable path. Defaults to `OBS` on macOS and `obs` elsewhere. | OBS |
| VEGA_EXECUTABLE | No | Vega CLI executable path used for Vega/Kepler backends. Defaults to `vega`. | vega |
| ADB_ALLOWED_AVDS | No | Optional comma-separated allowlist of AVD names. | |
| ADB_BUILD_CONFIG | No | Path to build profile JSON. Defaults to `adb-mcp.config.json` in the server working directory when present. | adb-mcp.config.json |
| ADB_PROJECT_ROOT | No | Project root used for default config and APK root. Defaults to the server working directory. | |
| OBS_WEBSOCKET_URL | No | OBS WebSocket endpoint. Defaults to `ws://127.0.0.1:4455`. | ws://127.0.0.1:4455 |
| OBS_EMULATOR_SCENE | No | Configured OBS scene for emulator recording. | |
| OBS_EMULATOR_SOURCE | No | Configured OBS source for emulator recording. | |
| ADB_MAX_OUTPUT_BYTES | No | Default ADB output limit. Defaults to `5242880`. | 5242880 |
| OBS_WEBSOCKET_PASSWORD | No | OBS WebSocket authentication password. | |
| ADB_SCREENSHOT_MAX_BYTES | No | Maximum raw PNG size accepted from `adb screencap`. Defaults to `33554432`. | 33554432 |
| ADB_SCREENSHOT_MAX_WIDTH | No | Maximum delivered screenshot width. Defaults to `1280`. | 1280 |
| ADB_SCREENSHOT_MAX_HEIGHT | No | Maximum delivered screenshot height. Defaults to `720`. | 720 |
| OBS_PHYSICAL_DEVICE_SCENE | No | Configured OBS scene for physical-device recording. | |
| OBS_PHYSICAL_DEVICE_SOURCE | No | Configured OBS source for physical-device recording. | |
| ANDROID_EMULATOR_EXECUTABLE | No | Android Emulator executable. Defaults to `$ANDROID_SDK_ROOT/emulator/emulator`, `$ANDROID_HOME/emulator/emulator`, or `emulator` from `PATH`. | |
| ADB_SCREENSHOT_OUTPUT_MAX_BYTES | No | Maximum optimized PNG size. Defaults to `1048576`. | 1048576 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List Android emulators, USB devices, and network-connected devices visible to ADB, including authorization state. |
| list_avdsA | List configured Android Virtual Devices and report which ones are currently running. |
| start_emulatorA | Start an Android Virtual Device with quick or cold boot, wait for Android to finish booting, and select it as active. |
| connect_deviceA | Connect ADB to a physical device or emulator already listening on TCP using host:port. |
| disconnect_deviceA | Disconnect an ADB-over-TCP target. This does not affect USB devices. |
| select_deviceA | Select an emulator or physical device as active for this MCP session. |
| clear_active_deviceA | Clear the active device for this MCP session. |
| set_project_rootA | Set the user-confirmed repository root for this MCP session. install_apk will only accept APKs contained within this directory. |
| get_device_infoA | Read model, manufacturer, Android version, SDK, screen size/density, and whether the target reports itself as an emulator. |
| screenshotA | Capture the current screen, resize and compress it as an analysis-friendly PNG, and return it directly to the agent. |
| get_current_activityA | Read the currently resumed Android activity/window for diagnosis and assertions. |
| dump_uiA | Return the current Android UI Automator hierarchy as XML when supported by the device. |
| wait_for_ui_nodeA | Poll Android UI Automator until a node matching exact text, resource_id, content_desc, and/or focused state exists. |
| assert_ui_nodeA | Assert that the current Android UI Automator hierarchy does or does not contain a matching node. |
| press_keyB | Send a safe, named Android key event, including D-pad and Fire TV remote navigation keys. |
| press_key_sequenceA | Send a timed sequence of safe, named Android key events. Use this for gestures requiring precise intervals, such as BACK, wait 1s, BACK. |
| tapB | Tap an absolute screen coordinate. |
| swipeB | Swipe between two absolute screen coordinates with a bounded duration. |
| type_textA | Type restricted plain text into the focused field. Shell metacharacters are rejected for safety. |
| install_apkA | Install an APK contained within the active session project root, or the configured ADB_APK_ROOT when no session root is set. |
| uninstall_appB | Uninstall an Android application by package name. |
| launch_appA | Launch an app by package name, optionally using a specific Android activity component. |
| stop_appA | Force-stop an Android application by package name. |
| get_logcatA | Read recent logcat lines, optionally retaining only lines containing a case-insensitive text fragment. |
| get_obs_statusA | Report whether OBS WebSocket is reachable and whether OBS is currently recording. |
| open_obsA | Open OBS if necessary and optionally select the configured emulator or physical-device scene. |
| start_obs_recordingA | Select and verify the configured OBS source for an emulator or physical device, then start recording. |
| stop_obs_recordingA | Stop and finalize the current OBS recording, returning the saved video path. |
| list_build_profilesA | List the server-side build profiles that this MCP instance is allowed to execute, such as debug or release. |
| run_buildA | Run a configured server-side build profile. Optionally install the resulting APK when the profile declares artifactPath. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| ADB Device Catalog | Live catalog of Android emulators and physical devices visible to ADB. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/francbonet/Adb-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server