adb-ai
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADBAI_ADB | No | Path to the adb binary if it lives somewhere unusual. | |
| ADBAI_DEVICE | No | Default Android device alias or serial to use when no -d option is supplied. | |
| ADBAI_ALLOW_SHELL | No | Set to 1 in the MCP server's environment to enable the adb_shell tool. It is disabled by default. |
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
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| adb_list_devicesA | List the Android devices adb currently knows about. |
| adb_scanA | Scan the local network for devices with the adb port open. Use when a device's IP changed (DHCP) or nothing is connected. |
| adb_connectC | Connect to a device over the network by ip[:port] or alias. |
| adb_pair_qr_startA | Begin pairing an Android 11+ phone or tablet by QR code. Returns a QR image to show the person; they point the device's camera at it from Wireless debugging > 'Pair device with QR code'. Then call adb_pair_qr_finish. Use this when a device has never been paired with this machine; an already-paired device just needs adb_connect. |
| adb_pair_qr_finishA | Wait for the device to scan the code from adb_pair_qr_start, pair with it, and connect. Blocks until it happens or the timeout runs out. |
| adb_keyB | Press remote-control keys, in order. Names: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, apps, back, blue, captions, channeldown, channelup, delete, down, enter, forward, green, guide, home, info, input, left, menu, mute, next, notifications, ok, pause, play, playpause, power, prev, record, red, rewind, right, search, settings, sleep, space, stop, tab, tv, up, voldown, volup, wake, yellow |
| adb_type_textB | Type text into the field that currently has focus. |
| adb_tapA | Tap a point on the screen. For phones and tablets - a TV is driven with adb_key instead. Take a screenshot first to find the coordinates, and adb_screen_size to know the bounds. |
| adb_swipeA | Swipe from one point to another. The same point twice, with a longer duration_ms, is a long press. |
| adb_scrollB | Scroll the screen up, down, left or right without working out coordinates. |
| adb_screen_sizeB | The screen size in pixels, so taps and swipes can be aimed. |
| adb_list_appsB | List installed packages (third-party by default). |
| adb_open_appA | Launch an app by friendly alias (netflix, youtube, spotify...), full package name, or a fragment of one. |
| adb_close_appC | Force-stop an app. |
| adb_open_urlB | Open a URL or deep link, optionally in a specific app. |
| adb_youtube_searchC | Search YouTube on the device without using the on-screen keyboard. |
| adb_set_alarmA | Set an alarm in the device's clock app. Phones and tablets only - most TVs have no clock app and the call will say so. |
| adb_set_timerB | Start a countdown timer in the device's clock app. |
| adb_stateA | What is in the foreground, whether the screen is on, and whether media is playing. Call this to check an action worked. |
| adb_screenshotA | Capture the screen and return it as an image you can look at. Large screens are scaled down on the way (ffmpeg, when it is installed) so you get the picture sooner; pass max_size to change that, or 0 for the untouched original. |
| adb_volumeB | Change the volume: up, down, mute, or set an exact level. |
| adb_powerC | Put the screen to sleep or wake the device. |
| adb_mirrorA | Open a live window of the device's screen on the operator's computer, using scrcpy, so a human can watch what you are doing and take over with mouse and keyboard. It is for them, not for you: you cannot see the window, so keep using adb_screenshot to look at the screen. Needs scrcpy installed and a desktop session; it does not work from Termux. |
| adb_shellA | Run any adb shell command on the device and return its output - dumpsys, pm, am, settings, getprop, input, wm, content, and so on. Use it for what the other tools do not cover; prefer them when they do. Runs as the shell user (no root). Can be switched off with ADBAI_NO_SHELL=1. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Most tools have clearly distinct purposes, including separate pairing, connection, input, app, and device-state operations. Some overlap exists between convenience tools and lower-level ones, such as adb_scroll vs adb_swipe, adb_volume vs adb_key volume keys, and adb_power vs adb_key power/sleep/wake, but the descriptions generally clarify when to prefer each.
All tool names share a consistent adb_ prefix and snake_case formatting, making the set easy to scan. The main inconsistency is that many names are noun-style resource tools (adb_state, adb_screenshot, adb_volume) while others are verb-first actions (adb_open_app, adb_list_apps, adb_set_alarm).
At 24 tools, the surface is heavy and includes several convenience wrappers that could be folded into broader tools. The domain is broad enough to justify many operations, but this sits in the borderline 16-25 range rather than being tightly scoped.
The server covers device discovery, pairing, connection, input, app control, media/search, alarms/timers, screenshots, state inspection, power, volume, mirroring, and arbitrary shell access. Dedicated tools for file transfer, app install/uninstall, reboot, or screen recording are missing, but adb_shell provides a workaround for most gaps.