ADB MCP Server
Allows AI assistants to control Android devices via ADB, providing capabilities for device information, screen control, input simulation, app management, shell execution, file transfer, and UI parsing.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ADB MCP Servercheck device info"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ADB MCP Server
通过 MCP 协议 控制 Android 设备的服务器,为 AI 助手(如 Claude)提供 ADB 操作能力。
功能特性
设备信息 — 获取型号、Android 版本、屏幕分辨率、电池状态、IP、序列号
屏幕控制 — 截图、获取屏幕尺寸
输入模拟 — 点击、滑动、输入文本、按键事件(HOME/BACK/音量等)
应用管理 — 列出/查看/启动/停止应用、获取前台应用
Shell 执行 — 执行任意 ADB Shell 命令、Termux 命令(需确认)
文件传输 — 从设备拉取文件到本地
UI 解析 — 获取界面元素树、按文本定位并点击
Related MCP server: scrcpy-mcp
环境依赖
运行时
依赖 | 版本 | 说明 |
>= 18 | JavaScript 运行环境 | |
| ^1.6.1 | MCP 协议服务端 SDK |
| ^3.23.8 | 输入参数模式校验 |
开发
依赖 | 版本 | 说明 |
| ^5.7.2 | TypeScript 编译器 |
| ^4.19.2 | TypeScript 开发热重载 |
| ^22.10.0 | Node.js 类型定义 |
系统
需求 | 说明 |
ADB | Android Debug Bridge,详见安装方式 |
Android 设备 | 通过 USB 连接,开启开发者选项和 USB 调试;或使用 Android 模拟器 |
Termux(可选) | 用于 |
环境变量
变量 | 说明 | 默认值 |
|
| 自动检测 |
| 截图文件保存目录 |
|
快速开始
# 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"
}
}
}
}工具列表
设备信息
工具 | 描述 |
| 获取设备信息:型号、Android 版本、屏幕、电池、IP、序列号 |
| 获取电池电量、充电状态、温度、健康度 |
| 读取剪贴板内容(Android 10+) |
屏幕
工具 | 描述 |
| 截图,支持返回文件路径或 base64 |
| 获取屏幕分辨率 |
输入
工具 | 描述 |
| 在指定坐标点击 |
| 从 (x1,y1) 滑动到 (x2,y2),支持设置持续时间 |
| 输入文本(自动选择 ASCII 直输或 Unicode 剪贴板方案) |
| 发送按键事件(HOME、BACK、ENTER、音量等 60+ 按键) |
应用管理
工具 | 描述 |
| 列出已安装应用,支持按关键字、类型(用户/系统/全部)筛选 |
| 获取应用详情:版本、SDK 目标、安装时间、权限列表 |
| 启动应用,可指定 Activity |
| 强制停止应用 |
| 获取当前前台应用包名和 Activity |
Shell
工具 | 描述 | 需确认 |
| 执行 Android Shell 命令 | ✅ |
| 在 Termux bash 中执行命令 | ✅ |
文件
工具 | 描述 |
| 从设备拉取文件到本地 |
UI
工具 | 描述 |
| 获取界面无障碍元素树(含位置、可点击状态等) |
| 截图 + UI 树一站式观察屏幕 |
| 按文本查找 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-toolsLinux:
apt install adb或pacman -S android-tools
安全说明
adb_shell和adb_termux_exec需要设置confirm=true才能执行,防止误操作按键事件白名单机制,仅允许安全的系统按键(无电源键、重启等危险按键)
文本输入长度限制 500 字符
许可证
MIT
Available Tools
20 toolsadb_app_infoGet App InfoARead-onlyIdempotent
Get version, SDK, install date, permissions for an installed app.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | Android package name (e.g., 'com.termux') | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | Package name to launch (e.g., 'com.android.chrome') | |
| activity | No | Specific activity (e.g., '.MainActivity'). Default: launcher activity |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | Package name to stop (e.g., 'com.android.chrome') |
TDQS
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.
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.
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.
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.
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.
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 StatusARead-onlyIdempotent
Get battery level, charging status, and temperature.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 ContentARead-onlyIdempotent
Get clipboard text (Android 10+).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 AppARead-onlyIdempotent
Get the package name and activity of the foreground app.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 InfoBRead-onlyIdempotent
Get device model, Android version, screen, battery, IP, and serial.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key name (e.g., HOME, BACK, ENTER) |
TDQS
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.
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.
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.
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.
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.
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 PackagesARead-onlyIdempotent
List installed packages, filterable by keyword and type (user/system/all).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Keyword to filter package names | |
| type | No | Package type filter | user |
| limit | No | Maximum results | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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)ARead-only
Take screenshot (base64) + UI tree in one call. Recommended for "looking" at the screen.
| Name | Required | Description | Default |
|---|---|---|---|
| max_elements | No | Maximum UI elements to return |
TDQS
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.
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.
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.
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.
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.
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 DeviceARead-only
Copy a file from device to local computer.
| Name | Required | Description | Default |
|---|---|---|---|
| remote_path | Yes | Path on device (e.g., '/sdcard/Download/file.txt') | |
| local_dir | No | Local directory to save the file (default: current directory '.') |
TDQS
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.
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.
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.
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.
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.
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 ScreenshotARead-only
Take screenshot, returns file path or base64.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Custom filename (without extension, default: timestamp) | |
| response_format | No | Output format: path or base64 | path |
TDQS
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.
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.
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.
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.
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.
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 SizeARead-onlyIdempotent
Get screen resolution in pixels.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 CommandADestructive
Execute an Android shell command. ⚠️ Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Shell command to execute | |
| confirm | Yes | Confirmation flag - must be true | |
| timeout | No | Timeout in seconds |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | Start X coordinate | |
| y1 | Yes | Start Y coordinate | |
| x2 | Yes | End X coordinate | |
| y2 | Yes | End Y coordinate | |
| duration | No | Swipe duration in ms (default: 300) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate in pixels | |
| y | Yes | Y coordinate in pixels |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to search for (case-insensitive partial match) | |
| type | No | Match type | text |
| wait_ms | No | Wait time before tap in ms |
TDQS
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.
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.
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.
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.
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.
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 TermuxADestructive
Execute a command in Termux bash. ⚠️ Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Command to execute in Termux bash environment | |
| confirm | Yes | Confirmation flag - must be true | |
| timeout | No | Timeout in seconds |
TDQS
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.
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.
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.
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.
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.
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+).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to input (max 500 chars) | |
| method | No | Input method: auto, input (ASCII only), clipboard (paste) | auto |
TDQS
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.
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.
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.
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.
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.
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 TreeARead-only
Get UI element tree (accessibility dump) with bounding boxes and positions.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format | json |
| max_elements | No | Maximum elements to return |
TDQS
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.
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.
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.
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.
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.
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.
20 tool updates
v1.0.0- First observed
adb_app_info - First observed
adb_app_launch - First observed
adb_app_stop - First observed
adb_battery - First observed
adb_clipboard - First observed
adb_current_app - First observed
adb_device_info - First observed
adb_keyevent - First observed
adb_list_packages - First observed
adb_observe - First observed
adb_pull - First observed
adb_screen_size - First observed
adb_screenshot - First observed
adb_shell - First observed
adb_swipe - First observed
adb_tap - First observed
adb_tap_text - First observed
adb_termux_exec - First observed
adb_text - First observed
adb_ui_tree
TDQS
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.
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.
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.
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
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA MCP server that enables LLMs to control Android devices via ADB, supporting input, UI hierarchy, device management, and shell commands.14MIT
- AlicenseAqualityAmaintenanceMCP 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.3839191MIT
- FlicenseNot gradedqualityDmaintenanceA 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-
- AlicenseNot gradedqualityDmaintenanceAn 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.262MIT
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/LLL-404/adb-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server