Skip to main content
Glama

ADB MCP Server

通过 MCP 协议 控制 Android 设备的服务器,为 AI 助手(如 Claude)提供 ADB 操作能力。

功能特性

  • 设备信息 — 获取型号、Android 版本、屏幕分辨率、电池状态、IP、序列号

  • 屏幕控制 — 截图、获取屏幕尺寸

  • 输入模拟 — 点击、滑动、输入文本、按键事件(HOME/BACK/音量等)

  • 应用管理 — 列出/查看/启动/停止应用、获取前台应用

  • Shell 执行 — 执行任意 ADB Shell 命令、Termux 命令(需确认)

  • 文件传输 — 从设备拉取文件到本地

  • UI 解析 — 获取界面元素树、按文本定位并点击

Related MCP server: scrcpy-mcp

环境依赖

运行时

依赖

版本

说明

Node.js

>= 18

JavaScript 运行环境

@modelcontextprotocol/sdk

^1.6.1

MCP 协议服务端 SDK

zod

^3.23.8

输入参数模式校验

开发

依赖

版本

说明

typescript

^5.7.2

TypeScript 编译器

tsx

^4.19.2

TypeScript 开发热重载

@types/node

^22.10.0

Node.js 类型定义

系统

需求

说明

ADB

Android Debug Bridge,详见安装方式

Android 设备

通过 USB 连接,开启开发者选项和 USB 调试;或使用 Android 模拟器

Termux(可选)

用于 adb_termux_exec 工具,需在设备上安装 Termux

环境变量

变量

说明

默认值

ADB_PATH

adb 可执行文件的完整路径(不设置则自动查找 PATH 和常用路径)

自动检测

ADB_SCREENSHOT_DIR

截图文件保存目录

screenshots/

快速开始

# 1. 安装依赖
npm install

# 2. 构建
npm run build

# 3. 配置 MCP
# 将 opencode.json 中的 mcpServers.adb 配置添加到你的 MCP 客户端

# 4. 运行
npm start

配置

在 MCP 客户端中添加以下配置(以 opencode 为例):

{
  "mcpServers": {
    "adb": {
      "command": "node",
      "args": ["path/to/adb-mcp-server/dist/index.js"],
      "env": {
        "ADB_PATH": "C:\\Users\\<username>\\AppData\\Local\\Android\\platform-tools\\adb.exe",
        "ADB_SCREENSHOT_DIR": "path/to/screenshots"
      }
    }
  }
}

工具列表

设备信息

工具

描述

adb_device_info

获取设备信息:型号、Android 版本、屏幕、电池、IP、序列号

adb_battery

获取电池电量、充电状态、温度、健康度

adb_clipboard

读取剪贴板内容(Android 10+)

屏幕

工具

描述

adb_screenshot

截图,支持返回文件路径或 base64

adb_screen_size

获取屏幕分辨率

输入

工具

描述

adb_tap

在指定坐标点击

adb_swipe

从 (x1,y1) 滑动到 (x2,y2),支持设置持续时间

adb_text

输入文本(自动选择 ASCII 直输或 Unicode 剪贴板方案)

adb_keyevent

发送按键事件(HOME、BACK、ENTER、音量等 60+ 按键)

应用管理

工具

描述

adb_list_packages

列出已安装应用,支持按关键字、类型(用户/系统/全部)筛选

adb_app_info

获取应用详情:版本、SDK 目标、安装时间、权限列表

adb_app_launch

启动应用,可指定 Activity

adb_app_stop

强制停止应用

adb_current_app

获取当前前台应用包名和 Activity

Shell

工具

描述

需确认

adb_shell

执行 Android Shell 命令

confirm=true

adb_termux_exec

在 Termux bash 中执行命令

confirm=true

文件

工具

描述

adb_pull

从设备拉取文件到本地

UI

工具

描述

adb_ui_tree

获取界面无障碍元素树(含位置、可点击状态等)

adb_observe

截图 + UI 树一站式观察屏幕

adb_tap_text

按文本查找 UI 元素并点击

使用示例

查看设备信息:

调用 adb_device_info 即可获取设备型号、Android 版本、屏幕参数、电池状态等。

输出示例:
- Model: Google Pixel 7
- Android: 14 (SDK 34)
- Screen: 1080x2400
- Battery: 85% (charging, 32.5°C)

观察屏幕并点击:

1. 调用 adb_observe 获取当前屏幕截图(base64)+ UI 元素列表
2. AI 根据 UI 元素坐标,调用 adb_tap 或 adb_tap_text 进行操作

截图:

调用 adb_screenshot,截图自动保存到 ADB_SCREENSHOT_DIR

安装 ADB

Windows 用户可直接运行项目根目录的 setup-adb.ps1 脚本一键安装:

.\setup-adb.ps1

该脚本会依次尝试 winget 安装和手动下载安装。

其他方式:

  • Android Developer 官网 下载 Platform Tools

  • macOS: brew install android-platform-tools

  • Linux: apt install adbpacman -S android-tools

安全说明

  • adb_shelladb_termux_exec 需要设置 confirm=true 才能执行,防止误操作

  • 按键事件白名单机制,仅允许安全的系统按键(无电源键、重启等危险按键)

  • 文本输入长度限制 500 字符

许可证

MIT

Available Tools

20 tools
adb_app_infoGet App InfoA
Read-onlyIdempotent

Get version, SDK, install date, permissions for an installed app.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesAndroid package name (e.g., 'com.termux')
response_formatNoOutput formatmarkdown

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context about the returned information (version, SDK, install date, permissions), which is useful beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence that front-loads the purpose. Every word is necessary and no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 parameters, no output schema), the description sufficiently details the return fields (version, SDK, install date, permissions), making the tool's behavior predictable. No gaps identified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline 3. The description does not add additional meaning to the parameters beyond what is in the schema; it only lists the fields returned. No extra semantic value for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and specifies the resource: version, SDK, install date, permissions for an installed app. It effectively distinguishes from siblings like adb_app_launch (launch) and adb_list_packages (list names only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the usage is implied by the name and description, there is no explicit guidance on when to use this tool versus alternatives like adb_list_packages or adb_device_info. The context is clear but lacks explicit when-not-to-use or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_app_launchLaunch AppA

Launch an app by package name. Optionally specify an activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesPackage name to launch (e.g., 'com.android.chrome')
activityNoSpecific activity (e.g., '.MainActivity'). Default: launcher activity

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false. Description adds no behavioral details beyond 'launch', such as side effects (e.g., foregrounding, state changes) or requirements. Minimal added value over annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence that front-loads the core action and parameters. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple launch tool with two well-documented parameters and annotations, description is complete. Lacks error handling info but that is acceptable for minimal viable description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage. Description merely restates parameter purposes from schema without adding new meaning. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Launch an app by package name' with optional activity, using specific verb and resource. Differentiates from sibling tools like adb_app_info or adb_app_stop by focusing on launching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for launching apps but lacks explicit guidance on when to use this tool versus alternatives like adb_app_stop or adb_current_app. No when-not or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_app_stopStop AppA

Force-stop an app by package name.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesPackage name to stop (e.g., 'com.android.chrome')

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide hints (e.g., destructiveHint=false) and the description adds the specific action 'force-stop', which is a behavioral trait beyond what annotations convey. No contradiction detected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple with one parameter and no output schema. The description is minimal; missing details like return values or error conditions, but annotations partially compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a clear description for package_name. The description adds no extra meaning beyond the schema, so baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'force-stop', the resource 'app', and the method 'by package name'. It distinguishes from siblings like adb_app_launch or adb_app_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like adb_app_launch or adb_app_info. The description does not provide when-not to use or mention any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_batteryGet Battery StatusA
Read-onlyIdempotent

Get battery level, charging status, and temperature.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput formatmarkdown

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, indicating safe behavior. The description adds the specific data fields (level, charging status, temperature) but does not disclose additional behavioral traits beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is short, front-loaded, and contains all necessary information without any waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature (one optional param, no output schema, clear annotations), the description is sufficient for an agent to understand what the tool does and how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a description for the parameter. The tool description does not add meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get battery level, charging status, and temperature.' clearly states the tool retrieves specific battery data. The name and title are aligned and it distinguishes from siblings like adb_device_info which is more general.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage is for obtaining battery information, but no explicit guidance on when to use this tool over alternatives like adb_device_info. No when-not-to-use or prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_clipboardGet Device Clipboard ContentA
Read-onlyIdempotent

Get clipboard text (Android 10+).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey read-only, idempotent, non-destructive behavior. Description adds the Android 10+ version constraint, which is valuable beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with no wasted words. Front-loaded with verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool, it covers purpose and version constraint, but lacks mention of return value (e.g., null if empty) or error cases. Without output schema, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema; baseline is 4. Description provides no parameter info, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (Get), the resource (clipboard text), and a constraint (Android 10+). It is specific and distinguishes from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use vs alternatives, but since there is no sibling clipboard tool, usage is implied. Lacks any exclusions or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_current_appGet Current Foreground AppA
Read-onlyIdempotent

Get the package name and activity of the foreground app.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, so the description carries a lower burden. It adds that the tool returns 'package name and activity,' but does not mention edge cases (e.g., no foreground app) or output format. This is adequate but not enhanced beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the action and result. Every word contributes to understanding, with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and annotations covering safety, the description covers the core function. However, the output format is unspecified (e.g., 'com.example.app/.MainActivity'), and potential edge cases (e.g., no app in foreground) are not mentioned. With no output schema, these details would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so schema coverage is 100%. The description need not explain parameters, and it adds no extra meaning for them. The baseline score for no parameters is 4, and the description meets that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves 'the package name and activity of the foreground app.' It uses a specific verb ('get') and resource ('foreground app'), and distinguishes it from siblings like adb_app_info (info on specific app) or adb_list_packages (list all packages).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool versus alternatives, such as adb_app_info or adb_ui_tree. It merely states what it does without context on prerequisites, limitations, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_device_infoGet Android Device InfoB
Read-onlyIdempotent

Get device model, Android version, screen, battery, IP, and serial.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput formatmarkdown

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds context by listing retrieved data fields, but does not disclose any additional behavioral traits (e.g., authentication, rate limits, or side effects).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that lists key data points without extraneous information. It is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, rich annotations, and full schema coverage, the description is adequate. However, it lacks detail on the structure or format of the returned data (e.g., whether battery is percentage or voltage), leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single optional parameter (response_format). The description does not add any meaning beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly lists specific resources (device model, Android version, screen, battery, IP, serial), making the tool's purpose unambiguous. However, it does not explicitly differentiate this aggregate info tool from sibling tools that retrieve individual details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like adb_battery or adb_screen_size. There is no mention of use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_keyeventSend Key EventA

Send a safe key event (HOME, BACK, ENTER, etc.). Allowed: navigation, editing, media, alphanumeric keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey name (e.g., HOME, BACK, ENTER)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only, non-destructive, and open-world behavior. The description adds 'safe' and limits allowed keys, but does not disclose behavior for invalid keys or permissions, or further context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, no redundant info, and front-loads the key action. Each part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is sufficient. It explains what keys are safe to send. Could mention that it is for Android ADB, but the tool name implies it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers the parameter key with 100% description coverage (examples). The description adds explicit allowed categories (navigation, editing, media, alphanumeric) which goes beyond the schema's examples, providing extra semantic meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Send' and the resource 'key event' with concrete examples (HOME, BACK, ENTER) and allowed categories. It distinguishes from sibling tap/text tools but does not explicitly differentiate from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (sending key events) and lists allowed keys, but does not provide when-not-to-use or alternative sibling tools like adb_tap or adb_text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_list_packagesList Installed PackagesA
Read-onlyIdempotent

List installed packages, filterable by keyword and type (user/system/all).

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoKeyword to filter package names
typeNoPackage type filteruser
limitNoMaximum results
response_formatNoOutput formatmarkdown

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate safe, read-only, idempotent behavior. The description adds context about filtering, which is helpful, though it doesn't mention ordering or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with 9 words, front-loaded with the action, and contains no unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with comprehensive annotations and fully described schema, the description is adequate. It provides the essential purpose and filtering behavior without requiring additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning the input schema already documents all parameters. The description adds minimal extra meaning beyond summarizing the filter and type parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (installed packages), and mentions the filtering capabilities by keyword and type, distinguishing it from sibling tools like adb_app_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used for listing packages with filtering but does not provide explicit guidance on when to use it over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_observeObserve Screen (Screenshot + UI Tree)A
Read-only

Take screenshot (base64) + UI tree in one call. Recommended for "looking" at the screen.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_elementsNoMaximum UI elements to return

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description does not need to repeat these. The description adds that the tool returns both screenshot (base64) and UI tree, which is useful behavioral context. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that contains all essential information: the tool's action and when to use it. No extraneous words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with annotations, the description adequately covers the return values (screenshot base64 and UI tree). However, it does not specify the format of the UI tree (likely XML), which could be helpful. Given no output schema, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter max_elements is fully described in the schema (type, default, min, max). The description does not add any additional meaning beyond what the schema provides. With 100% schema coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool captures both screenshot (base64) and UI tree in one call, distinguishing it from sibling tools like adb_screenshot (screenshot only) and adb_ui_tree (UI tree only). The phrase 'Recommended for looking at the screen' reinforces the specific use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends the tool for 'looking' at the screen, implying it is the preferred choice when both screenshot and UI tree are needed. However, it does not explicitly mention when to use alternatives like adb_screenshot or adb_ui_tree individually, leaving some implicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_pullPull File from DeviceA
Read-only

Copy a file from device to local computer.

ParametersJSON Schema
NameRequiredDescriptionDefault
remote_pathYesPath on device (e.g., '/sdcard/Download/file.txt')
local_dirNoLocal directory to save the file (default: current directory '.')

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint=true, so the description's statement of copying is consistent but adds no extra behavioral detail (e.g., overwrite policy, permission requirements). Given annotations carry the safety profile, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple pull operation with two parameters and no output schema, the description suffices, but missing overwrite behavior and error cases is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with parameter descriptions. The tool description does not add meaning beyond the schema; default values and format are already in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states action (copy), resource (file), and direction (device to local). It is specific and distinguishes from sibling tools, which mostly involve device queries or interaction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., adb push for sending to device) or any prerequisites. Does not mention file existence or overwrite behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_screenshotTake ScreenshotA
Read-only

Take screenshot, returns file path or base64.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoCustom filename (without extension, default: timestamp)
response_formatNoOutput format: path or base64path

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and destructiveHint, so the description bears a lower burden. The description adds that the tool returns file path or base64, but does not disclose where the file is saved or whether it blocks until capture is complete. This adds marginal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 7 words, but may be too terse. It front-loads the action 'Take screenshot' effectively, but could include more information without losing conciseness. There is no unnecessary content, but it sacrifices completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the optional parameters and no output schema, the description could be more complete by mentioning that it works on an ADB-connected device and that the file is saved on the device by default. It is minimally adequate but lacks context for an agent to fully understand the tool's operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for both parameters, describing them adequately. The description does not add new meaning beyond what the schema provides, such as the default behavior for filename. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool takes a screenshot and returns either a file path or base64. This provides a specific verb and resource, and no sibling differentiation is needed as there is no other screenshot tool. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool or how to choose between output formats. While there are no direct siblings to differentiate, the description could mention that it's for capturing the current device screen. It lacks context on prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_screen_sizeGet Screen SizeA
Read-onlyIdempotent

Get screen resolution in pixels.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, not destructive. Description adds that output is screen resolution in pixels, which is useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is clear and front-loaded. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, rich annotations, and no output schema needed, the description is complete. It states the single function and the return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in input schema. Since schema coverage is 100% and there are no params, baseline is 4. Description adds no additional param info, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool returns screen resolution in pixels, which is a specific verb+resource. Distinguishes from siblings like adb_device_info or adb_screenshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. Usage is implied from the purpose, but no when-not-to or references to other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_shellExecute Android Shell CommandA
Destructive

Execute an Android shell command. ⚠️ Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesShell command to execute
confirmYesConfirmation flag - must be true
timeoutNoTimeout in seconds

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, indicating a write operation. The description adds the critical behavioral constraint that confirm must be true, which is beyond the annotations. However, it does not disclose output format or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with a clear warning symbol, conveying essential information without unnecessary words. It is optimally concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the destructive nature and lack of output schema, the description is minimally sufficient. It covers the action and confirm requirement but does not explain return values (stdout/stderr) or execution details. Could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, so the baseline is 3. The description does not add semantic meaning beyond what the schema provides (e.g., it repeats that confirm must be true, already documented).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Execute an Android shell command' clearly states the verb and resource, distinguishing it from siblings like adb_termux_exec which likely executes terminal commands. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a usage requirement ('Requires confirm=true') but offers no guidance on when to use this tool vs. alternatives like adb_termux_exec or adb_app_launch. Context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_swipeSwipe on ScreenA

Swipe from (x1,y1) to (x2,y2) with optional duration (ms).

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesStart X coordinate
y1YesStart Y coordinate
x2YesEnd X coordinate
y2YesEnd Y coordinate
durationNoSwipe duration in ms (default: 300)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only, non-destructive, non-idempotent, and open-world behavior. The description adds the swipe gesture and optional duration but no additional behavioral context beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys all necessary information without any extraneous content. It is front-loaded with the action and parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple swipe gesture tool, the description covers the essential aspects: coordinates and duration. It does not need to elaborate further given the schema coverage and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description repeats the parameter roles but adds no additional meaning beyond what the schema already provides (e.g., coordinates and duration).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Swipe'), the resource ('on Screen'), and the parameters (coordinates and optional duration). It distinguishes from sibling tools like adb_tap and adb_text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for swiping gestures but does not explicitly state when to use this tool versus alternatives like adb_tap or adb_keyevent. No exclusions or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_tapTap Screen at CoordinatesB

Tap screen at pixel coordinates (x, y).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate in pixels
yYesY coordinate in pixels

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide basic behavioral hints (non-readonly, non-destructive, non-idempotent), but the description adds no additional traits such as prerequisites or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (6 words), but could still benefit from minor additions; it is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tap operation, the description is adequate though it omits details like screen-on requirement or coordinate origin; sibling tools suggest more context could be useful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the parameters (x and y coordinates in pixels), and the description adds no further meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Tap' and the resource 'screen at pixel coordinates', effectively distinguishing it from sibling tools like adb_swipe and adb_tap_text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use adb_tap versus alternatives; the description merely states the action without context or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_tap_textTap UI Element by TextA

Find UI element by text/ID/content-desc and tap its center. Regex partial match.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to search for (case-insensitive partial match)
typeNoMatch typetext
wait_msNoWait time before tap in ms

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false) indicate mutation; description confirms tapping. Discloses regex partial match and center tapping. Does not detail failure behavior or timeout beyond wait_ms. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no extraneous text. Front-loaded with core action and constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Captures core functionality but lacks details on error states (element not found, multiple matches), scope (current UI tree), and does not explain return value (no output schema). Adequate for simple tool but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters have schema descriptions (100% coverage), but the description adds 'Regex partial match' (which is slightly different from schema's 'case-insensitive partial match') and 'tap its center', providing behavioral context beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it finds a UI element by text/ID/content-desc using regex partial match and taps its center. Distinguishes from siblings like adb_tap (coordinate tap) and adb_text (text input).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for tapping elements by text but does not explicitly state when to use it vs alternatives like adb_tap for coordinates or adb_ui_tree for inspection. No when-not or conditional guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_termux_execExecute Command in TermuxA
Destructive

Execute a command in Termux bash. ⚠️ Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesCommand to execute in Termux bash environment
confirmYesConfirmation flag - must be true
timeoutNoTimeout in seconds

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds the confirm requirement, which is valuable safety context, but does not disclose other behaviors like non-idempotency or open-world side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two sentences stating the action and a key requirement—with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with 3 parameters and annotations, the description covers the core action but lacks details like timeout behavior, return values, or what happens when confirm is false.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter having a description. The tool description does not add any new parameter information beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Execute' and the resource 'command in Termux bash', which distinguishes it from siblings like adb_shell that target the general shell environment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage guidance is 'Requires confirm=true', which is a prerequisite but does not explain when to use this tool versus alternatives (e.g., adb_shell) or provide context about execution environment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_textInput TextA

Type text into focused input. ASCII via key injection, Unicode via clipboard paste (Android 10+).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to input (max 500 chars)
methodNoInput method: auto, input (ASCII only), clipboard (paste)auto

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals behavioral traits beyond annotations: it notes that ASCII uses key injection while Unicode relies on clipboard paste (Android 10+), which implies platform limitations. However, it does not mention failure modes (e.g., if no input field is focused) or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that conveys essential information efficiently. Every word adds value, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two parameters, no output schema) and adequate annotations, the description provides sufficient context for effective use. It explains the key behavioral distinction (ASCII vs. Unicode). A minor gap is not stating that the tool depends on an active focused input.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers both parameters with descriptions (100% coverage). The description adds minimal additional value by linking the Unicode limitation to the method parameter, but most parameter semantics are clear from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Type text into focused input') and specifies two mechanisms (ASCII key injection, Unicode clipboard paste) for distinct use cases, distinguishing it from sibling tools like adb_keyevent or adb_tap_text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for typing text into a focused input, but it does not explicitly mention when to use this tool versus alternatives (e.g., adb_tap_text for tapping on text, adb_keyevent for key presses). No exclusion criteria or context triggers are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adb_ui_treeGet UI Element TreeA
Read-only

Get UI element tree (accessibility dump) with bounding boxes and positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput formatjson
max_elementsNoMaximum elements to return

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds value by specifying the output format (accessibility dump with bounding boxes and positions), providing useful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently communicates the tool's purpose without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema), the description is mostly complete. It could mention the hierarchical nature of the tree, but it adequately covers the key elements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear parameter descriptions for 'response_format' and 'max_elements'. The description does not add extra semantics, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'UI element tree', and adds specifics about bounding boxes and positions. This differentiates it from sibling tools like adb_screenshot and adb_current_app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives or when not to use it. With 18 siblings, explicit usage guidelines would be beneficial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 20 tool updatesv1.0.0
    • First observedadb_app_info
    • First observedadb_app_launch
    • First observedadb_app_stop
    • First observedadb_battery
    • First observedadb_clipboard
    • First observedadb_current_app
    • First observedadb_device_info
    • First observedadb_keyevent
    • First observedadb_list_packages
    • First observedadb_observe
    • First observedadb_pull
    • First observedadb_screen_size
    • First observedadb_screenshot
    • First observedadb_shell
    • First observedadb_swipe
    • First observedadb_tap
    • First observedadb_tap_text
    • First observedadb_termux_exec
    • First observedadb_text
    • First observedadb_ui_tree

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct ADB operation: app lifecycle, device info, input simulation, file transfer, and UI inspection. Even similar tools like adb_tap and adb_tap_text are clearly differentiated by targeting method (coordinates vs. element search). There is no ambiguity between tools.

Naming Consistency5/5

All tools follow the consistent pattern 'adb_' + descriptive snake_case noun or verb_noun. Examples: adb_app_info, adb_app_launch, adb_screenshot. No mixing of styles or vague prefixes.

Tool Count5/5

The 20 tools cover a comprehensive but focused set of ADB capabilities for mobile automation. The count is appropriate for the domain—neither sparse nor bloated. Each tool serves a clear purpose without redundancy.

Completeness4/5

Core workflows like app info/launch/stop, UI interaction (tap, swipe, text, key events), screenshots, and device info are covered. Missing common operations like file push, app install/uninstall, and logcat, but the set is sufficient for typical UI automation tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server that gives AI agents full vision and control over Android devices via ADB and scrcpy. Supports screenshots, input, apps, UI automation, shell, files, and clipboard.
    38
    391
    91
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A powerful MCP server that provides comprehensive Android device automation capabilities through ADB, enabling AI agents to interact with Android devices for testing, automation, and device control tasks.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that wraps Android ADB functionality into AI assistant tools, enabling device management, shell execution, file operations, app management, media capture, and log analysis via natural language.
    26
    2
    MIT

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/LLL-404/adb-mcp-server'

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