adbridge
    
用于人工智能辅助开发的Android Bridge。一个CLI工具和MCP服务器,让AI编码助手直接访问您的Android设备:屏幕截图、OCR、logcat、输入控制和设备状态检查。
不再需要手动截屏、复制粘贴日志或描述屏幕上的内容。只需让你的AI助手查看设备即可。
它做什么
adbridge作为一个 独立CLI 或作为 MCP服务器 它将您连接的Android设备作为结构化、可查询的工具公开。任何与MCP兼容的AI工具(Claude Code、Cursor、Cline等)都可以:
- 捕获屏幕截图(自动压缩JPEG以提高令牌效率)并通过OCR提取文本
- 从视图层次结构中解析带有点击坐标的交互式UI元素
- 读取筛选后的日志条目
- 向设备发送轻击、滑动、击键和文本
- 检查当前活动、片段回溯和内存统计数据
- 列出连接的设备及其型号和版本信息
- 提取具有完整上下文的碰撞报告
ADB protocol
Android ◄──────────────────► adbridge
Device │
┌──────┴──────┐
│ │
CLI MCP Server
(human) (AI tools)安装
先决条件
- 防锈工具链 (1.75+): https://rustup.rs
- ADB服务器 跑步(
adb start-server) - 泰瑟光学字符识别 (为
--ocr功能):
# Arch
sudo pacman -S tesseract tesseract-data-eng
# Ubuntu/Debian
sudo apt install tesseract-ocr libtesseract-dev libleptonica-dev
# macOS
brew install tesseract来自crates.io
cargo install adbridge来源
git clone https://github.com/Slush97/adbridge.git
cd adbridge
cargo install --path .验证
adbridge --version
adbridge --help命令行用法
截图+OCR
# Capture screenshot, save to file
adbridge screen --output screenshot.png
# Capture with OCR text extraction
adbridge screen --ocr
# Full context: screenshot + OCR + view hierarchy as JSON
adbridge screen --ocr --hierarchy --json
# Parsed interactive UI elements with tap coordinates
adbridge screen --elements日志猫
# Recent errors
adbridge log --level error --lines 20
# Filter by app
adbridge log --app com.myapp --level warn
# Filter by tag, JSON output
adbridge log --tag NetworkManager --json输入
# Type text on device
adbridge input text "hello world"
# Tap coordinates
adbridge input tap 540 1200
# Swipe (scroll down)
adbridge input swipe 540 1500 540 500 --duration 300
# Hardware keys
adbridge input key home
adbridge input key back
# Set clipboard
adbridge input clip "copied text"设备状态
# Current activity, fragments, display info
adbridge state
# Include memory stats, as JSON
adbridge state --memory --json设备
# List connected devices
adbridge devices
# As JSON
adbridge devices --json崩溃报告
# Full crash context: stacktrace + recent errors + screenshot
adbridge crash --json
# Pipe into an AI for analysis
adbridge crash --json | claude "what caused this crash?"MCP服务器
adbridge通过MCP的stdio传输公开了7个工具:
| 工具 | 说明 |
|---|---|
device_screenshot | 默认情况下,截图(JPEG,缩小)+UI元素;可选OCR和原始层次结构 |
device_logcat | 按应用程序、标签和级别筛选日志条目 |
device_state | 当前活动、片段回溯、显示、内存 |
device_input | 将文本、点击、滑动、按键或剪贴板发送到设备 |
device_info | 列出连接的设备及其型号和版本信息 |
device_shell | 运行原始ADB shell命令(例如。 getprop, pm list, dumpsys) |
device_crash_report | Stacktrace+截图+最近的错误 |
克劳德代码
添加 ~/.mcp.json:
{
"mcpServers": {
"adbridge": {
"command": "adbridge",
"args": ["serve"]
}
}
}重新启动克劳德代码。你现在可以说:
“现在手机屏幕上有什么?” “检查我的应用程序中的日志错误” “点击登录按钮,告诉我会发生什么” “应用程序刚刚崩溃,出了什么问题?”
其他MCP客户端
任何支持MCP stdio传输的客户端都可以使用adbridge。服务器以以下方式启动:
adbridge serve运作原理
- 亚洲开发银行通信 通过
adb_client,原生Rust-ADB协议,无adb二进制依赖关系(仍然需要ADB服务器) - 光学字符识别 通过
leptess,FFI与Tesseract/Leptonica的绑定 - 图像处理 通过
image用于JPEG压缩和缩小 - MCP服务器 通过
rmcp,官方Rust MCP SDK - 命令行界面 通过
clap
所有设备命令都会执行 adb shell 引擎盖下。该工具将原始输出结构化为JSON,AI助手可以对其进行推理。
令牌优化
MCP服务器旨在与AI助手通信时最大限度地减少令牌使用:
- 截图 被缩小到720px宽度并压缩为JPEG(80%质量),而不是全分辨率PNG
- 查看等级 XML去掉了默认/错误属性(checkable=“false”、enabled=“true”、空字符串等),通常会将大小减小50%+
- OCR输出 经过后处理以去除噪声线(来自壁纸等非文本屏幕的垃圾)
- UI元素 默认情况下,作为原始层次结构XML的紧凑、结构化的替代方案自动包含
项目结构
src/
├── main.rs Entry point, CLI dispatch
├── cli.rs Clap argument definitions
├── adb/
│ ├── mod.rs Core ADB shell commands
│ └── connection.rs Device discovery and info
├── screen/
│ ├── mod.rs Screenshot, OCR, hierarchy stripping, image compression
│ └── elements.rs UI element parser (view hierarchy to compact format)
├── logcat/mod.rs Log parsing and filtering
├── input/mod.rs Text, tap, swipe, key, clipboard
├── state/mod.rs Activity state, memory, crash reports
└── mcp/mod.rs MCP server with 7 tools (stdio)许可证
麻省理工学院
