mcpField
A
Agent Droid Bridge

Agent Droid Bridge

本地服务
github.com/Neverlow512开发工具2224 周前更新

关于 Agent Droid Bridge

Agent Droid Bridge 是通过 ADB 控制 Android 设备和模拟器的 MCP 服务。它提供结构化工具,适用于移动测试、自动化、调试和应用分析,并支持配置命令限制及可选的应用管理工具。

主要功能

  1. 01通过 ADB 控制 Android 设备和模拟器
  2. 02屏幕截图与结构化 UI 检查
  3. 03触控、滑动、文本和按键输入
  4. 04可选的应用与软件包管理工具
  5. 05可配置的执行限制和会话日志

适用场景

  1. 01自动执行移动应用 UI 测试
  2. 02检查应用行为与权限
  3. 03驱动应用流程进行动态分析
  4. 04开发时安装构建版本并检查 UI

MCP 相关

通过 stdio 向兼容的 AI 客户端提供结构化 ADB 工具。可选工具包可扩展应用和软件包管理能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"neverlow512-agent-droid-bridge": {
"command": "uvx",
"args": [
"agent-droid-bridge"
],
"env": {
"ADB_EXECUTION_MODE": "<ADB_EXECUTION_MODE>",
"ADB_ALLOW_SHELL": "<ADB_ALLOW_SHELL>",
"ADB_PATH": "<ADB_PATH>",
"ADB_EXTRA_TOOL_PACKS": "<ADB_EXTRA_TOOL_PACKS>",
"ADB_DENIED_TOOLS": "<ADB_DENIED_TOOLS>",
"ADB_SHELL_ALLOWLIST": "<ADB_SHELL_ALLOWLIST>",
"ADB_SHELL_DENYLIST": "<ADB_SHELL_DENYLIST>",
"MCP_LOG_ENABLED": "<MCP_LOG_ENABLED>",
"MCP_LOG_DIR": "<MCP_LOG_DIR>",
"ADB_LOG_LEVEL": "<ADB_LOG_LEVEL>",
"ADB_COMMAND_TIMEOUT": "<ADB_COMMAND_TIMEOUT>",
"ADB_SCREENSHOT_TIMEOUT": "<ADB_SCREENSHOT_TIMEOUT>",
"ADB_UI_CHANGE_TIMEOUT": "<ADB_UI_CHANGE_TIMEOUT>",
"ADB_UI_CHANGE_POLL_INTERVAL": "<ADB_UI_CHANGE_POLL_INTERVAL>",
"ADB_AAPT_TIMEOUT": "<ADB_AAPT_TIMEOUT>",
"ADB_CONFIG_SOURCE": "<ADB_CONFIG_SOURCE>"
}
}
}
}
启动命令uvx agent-droid-bridge
需要配置的环境变量
ADB_EXECUTION_MODESecurity mode. 'unrestricted' allows all shell commands with an optional denylist. 'restricted' allows only commands in ADB_SHELL_ALLOWLIST.
ADB_ALLOW_SHELLSet to 'false' to block all adb shell commands regardless of execution mode.
ADB_PATHPath to the ADB binary. Use a full path if adb is not on your system PATH.
ADB_EXTRA_TOOL_PACKSComma-separated list of extra tool packs to load. Set to 'app_manager' to enable 9 additional app management tools.
ADB_DENIED_TOOLSComma-separated list of tool names to hide from the agent at startup.
ADB_SHELL_ALLOWLISTComma-separated list of shell commands permitted in restricted mode. Empty blocks all shell commands.
ADB_SHELL_DENYLISTComma-separated list of shell commands blocked in unrestricted mode.
MCP_LOG_ENABLEDSet to 'true' to enable session logging. Requires MCP_LOG_DIR.
MCP_LOG_DIRAbsolute path to the directory where session logs are written. Required when MCP_LOG_ENABLED is true.
ADB_LOG_LEVELServer process log level.
ADB_COMMAND_TIMEOUTMaximum seconds to wait for any ADB command.
ADB_SCREENSHOT_TIMEOUTMaximum seconds to wait for a screenshot capture.
ADB_UI_CHANGE_TIMEOUTDefault timeout in seconds for detect_ui_change.
ADB_UI_CHANGE_POLL_INTERVALHow often in seconds detect_ui_change polls the UI hierarchy.
ADB_AAPT_TIMEOUTMaximum seconds to wait for aapt dump badging, used by the app_manager pack.
ADB_CONFIG_SOURCESet to 'yaml' to load configuration from adb_config.yaml instead of environment variables.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiagent-droid-bridge0.6.1

工具

14

收录的工具列表 · 更新于 2 周前

参数类型必填说明
device_serialany否目标设备序列号——以 device_serial=<serial> 的形式传入。Android 设备序列号(例如 'emulator-5554' 或 '192.168.1.10:5555')。仅当连接了单台设备时才省略。如果工具返回多设备错误:停止。将设备列表原样提供给用户,并等待其明确选择。不得使用猜测或推断出的序列号重试——这是硬性要求。用户提供序列号后,在本次会话的所有后续调用中都使用该序列号。若要在会话中切换设备,先询问用户。

详细介绍

Python 3.11+ License MIT MCP Compatible PyPI MCP Registry Awesome PyPI Downloads LinkedIn Ask DeepWiki

Agent Droid Bridge

Agent Droid Bridge 是一个 MCP 服务,可通过 ADB 将 AI Agent 连接到 Android 设备和模拟器。它专为移动自动化、应用测试、动态分析和逆向工程打造:将 ADB 的全部功能封装为结构化工具,供任何兼容 MCP 的 AI 客户端直接调用。只要 ADB 能做到,Agent 就能做到。


专用工具会返回精简的结构化响应。不输出原始 XML 转储,不浪费上下文——让 Agent 在长会话中始终保持快速。

agent-droid-bridge MCP server

演示

Agent Droid Bridge Demo

上方的演示通过几个简单任务展示已连接的 Agent 可以做什么,而这仅仅是冰山一角:

  • 安装 Paint 应用,打开应用,并通过计算墙壁和屋顶的像素坐标画一栋房子
  • 打开设备浏览器,搜索“ M C P Wikipedia ”,进入结果页面并截取屏幕截图
  • 打开 Calculator,计算 1337 × 42,并将结果提取到主机
  • 打开 Contacts,创建包含姓名和电话号码的新联系人,并确认已保存
  • 打开 Calendar 并为指定日期安排约会
  • 打开 Settings 并切换深色模式
  • 从设备中提取 Calculator APK 到主机
  • 安装 Notepad,撰写一句话总结所有已完成的任务,并截取最后的屏幕截图

功能

工具

  • 14 个内置工具,用于屏幕捕获、UI 检查、文本读取、元素提取、触摸和滑动输入、文本输入、键码事件、应用启动、ADB 命令和设备检查
  • app_manager 工具包新增 9 个工具,用于软件包管理、应用生命周期管理、APK 提取、权限管理和 Intent 注入。通过 ADB_EXTRA_TOOL_PACKS=app_manager 加载
  • 工具可用性会反映在服务的启动说明中。Agent 在连接时会收到准确的工具目录

设备处理

  • 自动检测单台已连接设备;存在多台设备时会提示选择
  • 通过标准输入/输出运行,兼容任何支持 MCP 的 AI 客户端
  • 返回结构化响应,而非原始 XML 转储,让 Agent 在长时间自动化运行中保持精简上下文

安全

  • 两种执行模式:unrestricted(完整 ADB 访问权限,可选拒绝列表)和 restricted(仅允许列表,阻止所有未明确许可的操作)
  • 设置 ADB_ALLOW_SHELL=false 可在任何模式下禁用所有 shell 命令
  • 使用 ADB_DENIED_TOOLS 对 Agent 隐藏特定工具
  • 所有命令均通过 shlex 解析,不可能发生 shell 注入

可观测性

  • 可选的会话记录器会将每次工具调用、ADB 命令和安全事件记录到结构化 JSONL 文件中。通过 MCP_LOG_ENABLED=true 和 MCP_LOG_DIR 启用

使用场景

移动端 QA 和测试自动化 无需修改应用或编写测试代码,即可在真机和模拟器上自动化 UI 流程。通过自然语言提示词完成点击、滑动、输入、读取屏幕内容和截屏。

应用安全研究 提取 APK、检查声明的权限、发送任意 Intent,并观察屏幕上的运行时行为。无需插桩或越狱。

动态分析 在受控状态下启动应用、执行 UI 交互、捕获每个步骤的屏幕状态并提取产物,所有操作都可通过 AI Agent 编写脚本。

开发与调试 无需离开编码环境即可安装构建版本、验证 UI 状态、检查应用信息并运行 ADB 命令。

安装

uvx agent-droid-bridge

无需克隆代码库或创建虚拟环境。需要 Python 3.11+,并在主机上安装 ADB。

uvx 由 uv 提供。如果尚未安装:curl -LsSf https://astral.sh/uv/install.sh | sh

如需改为从源代码安装,请参阅 docs/setup.md — Option B。

验证安装:uvx agent-droid-bridge --help

快速开始

  1. 安装 ADB — 平台专属说明请参阅 docs/setup.md
  2. 连接 Android 设备或启动模拟器
  3. 将服务添加到 MCP 客户端配置中:
{
  "mcpServers": {
    "agent-droid-bridge": {
      "command": "uvx",
      "args": ["agent-droid-bridge"],
      "env": {
        "ADB_EXECUTION_MODE": "unrestricted",
        "ADB_ALLOW_SHELL": "true",
        "ADB_PATH": "adb",
        "ADB_EXTRA_TOOL_PACKS": "",
        "MCP_LOG_ENABLED": "false",
        "MCP_LOG_DIR": "~/logs/agent-droid-bridge"
      }
    }
  }
}

如需启用会话日志记录,请将 MCP_LOG_ENABLED 设为 "true",并将 MCP_LOG_DIR 更新为计算机上可写入的路径。

变量默认值说明
ADB_EXECUTION_MODEunrestricted安全模式。unrestricted 允许所有 shell 命令(可选拒绝列表);restricted 仅允许 ADB_SHELL_ALLOWLIST 中的命令。
ADB_ALLOW_SHELLtrue设为 false 可在任何执行模式下阻止所有 adb shell 命令。
ADB_PATHadbADB 二进制文件的路径。如果 adb 不在系统 PATH 中,请替换为完整路径(例如 Windows 上的 C:\platform-tools\adb.exe)。
ADB_EXTRA_TOOL_PACKS(empty)要加载的额外工具包列表,以逗号分隔。设为 app_manager 可启用额外的 9 个应用管理工具。
MCP_LOG_ENABLEDfalse设为 true 可启用会话日志记录。需要设置 MCP_LOG_DIR。
MCP_LOG_DIR(none)写入会话日志的目录。MCP_LOG_ENABLED 为 true 时必填。
  1. 提示 Agent 使用 agent-droid-bridge MCP 工具

完整的设置指南和环境变量参考:docs/setup.md

工具

工具功能
get_ui_hierarchy以 XML UI 层级结构的形式返回当前屏幕内容
take_screenshot将屏幕截图编码为 base64 格式的 PNG
tap_screen在像素坐标处发送点击手势
swipe_screen在给定时长内,在两点之间发送滑动手势
type_text在当前聚焦的输入框中输入文本
press_key发送 Android 键码事件(返回、主页、回车等)
launch_app通过 package/activity 组件名称启动应用
execute_adb_command运行任意 ADB 或 ADB shell 命令
list_devices列出 ADB 当前可见的所有 Android 设备及其序列号、状态和型号
snapshot_ui获取轻量级 UI 快照,并返回一个供 detect_ui_change 使用的令牌
detect_ui_change在执行操作后轮询 UI 变化;接受快照令牌作为基线;仅在请求时返回层级结构
get_screen_elements解析 UI 层级结构,并返回包含坐标和交互属性的结构化元素;支持 tappable、interactive、input 和 all 模式
get_screen_text以纯文本形式返回屏幕上所有可见文本,并按从上到下的顺序排列
check_device_capabilities在一次调用中返回结构化的设备信息,包括身份、安全状况和硬件规格;支持 identity、security、hardware 和 all 模式
额外工具包

可选工具包可扩展核心工具集。在 MCP 客户端配置中设置 ADB_EXTRA_TOOL_PACKS 即可启用。请参阅 docs/extra-tool-packs.md。

app_manager

包管理、应用生命周期控制、APK 提取、权限管理和 Intent 注入。

工具功能说明
list_packages列出已安装的软件包,支持可选筛选、搜索和详细程度设置
get_app_info返回单个已安装应用的完整静态元数据
install_app将主机路径中的 APK 安装到设备上
uninstall_app按软件包名称移除已安装的应用
pull_apk将设备上的已安装 APK 提取到主机
manage_permission授予、撤销、检查或列出应用的运行时权限
launch_app_extra按软件包名称启动应用,并自动解析启动器 Activity
manage_app控制应用运行时状态——停止、清除数据、清除缓存、启用、停用
inject_intent通过 am start、am broadcast 或 am startservice 向组件发送 Intent

完整参数参考:docs/tools.md

配置

完全通过 MCP 客户端的 env 块配置服务。无需编辑任何文件。上方快速入门中的 env 块涵盖了最常用的设置。有关完整参考,包括安全筛选、工具可见性和超时设置,请参阅 docs/configuration.md。

如需改用 YAML 配置文件,请设置 ADB_CONFIG_SOURCE=yaml。详情请参阅 docs/configuration.md。

会话记录需单独配置。使用 MCP_LOG_ENABLED=true 和 MCP_LOG_DIR 启用。完整参考:docs/logging.md。

文档

文件描述
docs/setup.md前置条件、安装和 MCP 客户端配置
docs/tools.md所有工具的完整参数参考
docs/configuration.md环境变量和 adb_config.yaml 参考
docs/logging.md会话记录器——日志文件、级别、保留期限和启用方式
docs/extra-tool-packs.md额外工具包——启用工具包、工具包约定和编写自定义工具包
docs/troubleshooting.md常见设置问题和 ADB 故障
docs/workflows.md常见多工具工作流示例
CHANGELOG.md发布历史和版本变更

贡献

欢迎贡献。有关设置、代码规范和提交拉取请求的指南,请参阅 CONTRIBUTING.md。

如需报告安全漏洞,请遵循 SECURITY.md 中的流程——请勿公开提交问题。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。