Android MCP 方案深度调研与组合评估
Codex 核验(2026-10-10):ADB 可通过 shell、文件传输及设备特定服务操作文件和部分剪贴板,因此“不支持”应限定为所评估 MCP 的公开工具接口,不能推广为 Android/ADB 不具备该能力。打开通知栏、读取 UI 树与具有 NotificationListenerService 通知访问权限是不同能力;UI 延迟、设备兼容、持续采集和权限边界仍需实机验证,本文性能数值未重跑。
目标:评估现有 Android MCP 方案能否直接构成/组合成「全视窗」手机深度监控方案 梯度权限 T1→T4:手机状态 → 通知读取 → UI树+录屏 → ADB控制+剪贴板+文件系统
一、项目逐一分析
1. android-mcp-server(781⭐)
| 维度 | 详情 |
|---|---|
| 仓库 | https://github.com/minhalvp/android-mcp-server |
| 语言 | Python (FastMCP) |
| 工具数 | 5 个(极简) |
工具清单:
get_packages()— 列出所有安装的包execute_adb_shell_command(command)— 执行任意 ADB shell 命令get_uilayout()— 基于 uiautomator dump,返回 clickable 元素(text/bounds/center)get_screenshot()— 截图(自动压缩至 30% 大小)get_package_action_intents(pkg)— 查询 Activity Resolver Table
底层实现: 纯 Python,基于 pure-python-adb (ppadb) 库。截图使用 screencap + PIL 压缩。UI 树解析手动 XML 提取 clickable 元素。
评分:
| 指标 | 评分 | 说明 |
|---|---|---|
| 监控深度 | ⭐⭐ | 有截图+UI树+ADB shell,但无通知、无剪贴板、无文件系统 |
| MCP 完整性 | ⭐ | 仅 5 个工具,无 device/list/input 等基础工具 |
| 权限模型 | ⭐ | 无任何权限控制,ADB shell 是 all-or-nothing |
| 可扩展性 | ⭐⭐⭐ | Python FastMCP 框架容易扩展,但底层 ppadb 能力有限 |
结论: 星数最多但功能最薄。纯 ADB 桥接,适合做最基础的 starting point,但需要大量扩展才有实用价值。
2. claude-in-mobile(318⭐)
| 维度 | 详情 |
|---|---|
| 仓库 | https://github.com/AlexGladkov/claude-in-mobile |
| 语言 | TypeScript |
| 工具数 | 8 个 meta-tool + 3 可选模块(约 40+ 具体 action) |
核心 Meta-Tools:
| Meta-Tool | Actions |
|---|---|
device | list, set, set_target, get_target, enable_module, disable_module, list_modules |
input | tap, double_tap, long_press, swipe, text, key |
screen | capture, annotate(带标注的截图) |
ui | tree, find, find_tap, tap_text, analyze, wait, assert_visible, assert_gone |
app | launch, stop, install, list |
system | activity, shell, wait, open_url, logs, clear_logs, info, webview, clipboard_*, permission_*, file_*, metrics, reset_metrics |
flow_batch | 批量执行(最多 50 条) |
flow_run | 条件/循环流(最多 20 步) |
Android 支持的关键能力:
- ✅ 截图(自动压缩优化)
- ✅ UI 树(uiautomator + 标注截图)
- ✅ 剪贴板(clipboard_get/set — 系统级)
- ✅ 权限管理(grant/revoke/reset)
- ✅ 文件操作(file_* — 系统级)
- ✅ 多设备并行
- ⚠️ 通知 — 未直接提到 notification 监控,但有
open_url和webview间接能力 - ⚠️ 无实时屏幕流
附加模块: Browser (CDP)、Desktop (macOS)、Store (Google Play 发布)
评分:
| 指标 | 评分 | 说明 |
|---|---|---|
| 监控深度 | ⭐⭐⭐⭐ | 截图+UI树+剪贴板+文件+权限,覆盖 T2-T4 大部分能力 |
| MCP 完整性 | ⭐⭐⭐⭐⭐ | 设计优雅的 meta-tool 模式,工具集最丰富 |
| 权限模型 | ⭐⭐⭐ | 有 permission_* 工具管理 app 权限,但 MCP 层自身是 all-or-nothing |
| 可扩展性 | ⭐⭐⭐⭐ | TypeScript 模块化架构,容易添加新平台/模块 |
结论: 综合能力最强的现有方案。ADB 层能力全面,clipboard/permission/file 三件套覆盖了全视窗 T3-T4 的核心需求。缺少的是:通知实时监听、屏幕实时流、以及精细的梯度权限模型。
3. native-devtools-mcp(119⭐)
| 维度 | 详情 |
|---|---|
| 仓库 | https://github.com/sh3ll3x3c/native-devtools-mcp |
| 语言 | Rust |
| 工具数 | ~13 个 Android 工具 |
Android 工具清单:
android_list_devices— 列出 ADB 设备android_connect— 连接设备android_disconnect— 断开设备android_screenshot— 截图android_find_text— 通过 uiautomator 查找 UI 元素android_click— 屏幕点击android_swipe— 滑动android_type_text— 输入文字android_press_key— 按键(HOME/BACK 等)android_launch_app— 启动应用android_list_apps— 列出应用android_get_display_info— 屏幕分辨率/密度android_get_current_activity— 当前前台 Activity
亮点:
- 使用 Rust 原生 ADB 协议(
adb_clientcrate),不依赖 adb shell 命令 - 跨平台:macOS + Windows + Android 统一
- OCR + CDP + Desktop 自动化整合
- 附带完整的安全审计文档
评分:
| 指标 | 评分 | 说明 |
|---|---|---|
| 监控深度 | ⭐⭐⭐ | 截图+UI查找+设备信息,但无通知、无剪贴板、无文件系统 |
| MCP 完整性 | ⭐⭐⭐ | 工具覆盖基础操作,数量适中 |
| 权限模型 | ⭐ | 无专门的权限控制 |
| 可扩展性 | ⭐⭐⭐ | Rust 架构性能好,但扩展门槛比 Python/TS 高 |
结论: Rust 实现性能优秀,但 Android 功能集偏基础。原生 ADB 协议层是独特的卖点,可作为底层 ADB 通信的替代选择。
4. scrcpy-mcp(56⭐)
| 维度 | 详情 |
|---|---|
| 仓库 | https://github.com/JuanCF/scrcpy-mcp |
| 语言 | TypeScript |
| 工具数 | 36 个 |
核心工具分类:
- Session管理: start_session, stop_session
- 视频流: start_video_stream, stop_video_stream(MJPEG + ffplay)
- 设备管理: device_list, device_info, screen_on/off, rotate, expand_notifications/settings, collapse_panels
- 视觉: screenshot(~33ms), screen_record_start/stop
- 输入: tap, swipe, long_press, drag_drop, input_text, key_event, scroll
- App管理: app_start/stop/install/uninstall/list, app_current
- UI自动化: ui_dump, ui_find_element
- Shell & 文件: shell_exec, file_push/pull, file_list
- 剪贴板: clipboard_get, clipboard_set(含 paste 选项)
独特能力:
- ✅ scrcpy 二进制协议 — 输入延迟 5-10ms(比 ADB 快 10-50x)
- ✅ ~33ms 截图(ADB 方案 ~500ms)
- ✅ MJPEG 实时视频流
- ✅ 剪贴板 — 绕过 Android 10+ 限制
- ✅ 通知面板 — expand_notifications/collapse_panels(需 scrcpy session)
- ✅ 文件系统 — push/pull/list
- ⚠️ 无通知实时监听(只能拉下通知面板查看)
评分:
| 指标 | 评分 | 说明 |
|---|---|---|
| 监控深度 | ⭐⭐⭐⭐ | 截图+UI+剪贴板+文件系统+视频流,但无通知/权限管理 |
| MCP 完整性 | ⭐⭐⭐⭐ | 36 个工具,覆盖全面 |
| 权限模型 | ⭐ | 无梯度权限,all-or-nothing |
| 可扩展性 | ⭐⭐⭐⭐ | TypeScript,模块化设计,容易扩展 |
结论: 性能王者。scrcpy 协议层提供了远超 ADB 的截图/输入速度,是「全视窗」T3(录屏)和 T4(快速控制)的理想底层。剪贴板绕过 Android 10+ 限制是独特价值。
5. uiautomator2-mcp-server(31⭐)
| 维度 | 详情 |
|---|---|
| 仓库 | https://github.com/tanbro/uiautomator2-mcp-server |
| 语言 | Python |
| 工具数 | 70+(数量最多) |
工具分类:
- Device — 连接、信息、截图、层次结构、shell
- Actions — 触摸、手势、按键、屏幕控制
- Apps — 安装、启动、管理、列表
- Element — XPath 元素定位与交互
- Input — 文本输入、键盘控制
- Clipboard — 读写
- Toast — Android Toast 消息检测
- Scrcpy — 屏幕镜像
亮点:
- 70+ 工具(数量最多的 Android MCP)
- XPath 元素定位(高级)
- 标签系统工具过滤
- HTTP 模式支持远程连接 + Token 认证
- 多设备
- 支持 scrcpy 集成
- 支持 PyInstaller 打包成独立可执行文件
评分:
| 指标 | 评分 | 说明 |
|---|---|---|
| 监控深度 | ⭐⭐⭐⭐ | 截图+UI树+剪贴板+Toast,缺通知/文件/权限管理 |
| MCP 完整性 | ⭐⭐⭐⭐ | 70+ 工具,数量最多,标签系统过滤 |
| 权限模型 | ⭐⭐ | HTTP Token 认证但无梯度授权 |
| 可扩展性 | ⭐⭐⭐⭐⭐ | Python + uiautomator2 库,扩展门槛最低 |
结论: 工具数量冠军。uiautomator2 库的底层能力丰富(XPath、Toast、Clipboard),标签系统是最大的架构亮点。缺通知监听和文件系统。Python 生态最容易定制和扩展。
6. PalmWindow / 掌心窗(16⭐)
| 维度 | 详情 |
|---|---|
| 仓库 | https://github.com/linzhi-524/linjian-peek-public |
| 语言 | Python + Android APK (Kotlin?) |
| 工具数 | 14 个 |
架构:
Android App (AccessibilityService) ←HTTP→ Python Server (Render/HF) ←MCP→ AI Client
工具清单:
linjian_status— 检查后端在线get_life_state— 轻量生活状态(电量/充电/网络/亮灭/当前App/屏幕时间/解锁次数/Top App/天气备注/权限状态)get_phone_state— 最近手机状态peek_screen— 请求新截图latest_screen— 读取服务器最近截图list_known_apps— 白名单 App 列表open_app— 打开白名单 Appphone_home/back/recents— 系统导航send_phone_command— 底层命令send_notification— 发送系统通知set_alarm— 设置系统闹钟
独特能力:
- ✅ AccessibilityService 方案 — 不需 ADB,可后台运行
- ✅ 轻量状态 — 电池/屏幕时间/解锁次数等生活状态
- ✅ 发送通知 — 系统通知/闹钟
- ✅ 主动提醒 — 低电量/喝水/休息提醒规则
- ✅ 隐私安全设计 — 用户自部署、Token 认证、白名单
- ✅ 无需 USB 连接 — 全无线
- ⚠️ 无 UI 树 — 不能获取布局
- ⚠️ 无剪贴板
- ⚠️ 无文件系统
- ⚠️ 无通知监听(只能发不能读)
- ⚠️ 截图依赖 AccessibilityService(慢于 ADB/scrcpy)
评分:
| 指标 | 评分 | 说明 |
|---|---|---|
| 监控深度 | ⭐⭐⭐ | 生活状态丰富+截图,但无UI树/剪贴板/文件/通知读取 |
| MCP 完整性 | ⭐⭐⭐ | 14 个工具,覆盖状态/截图/控制/通知 |
| 权限模型 | ⭐⭐⭐⭐ | 用户部署+Token+白名单+主动授权,最接近梯度理念 |
| 可扩展性 | ⭐⭐⭐ | 三组件架构清晰但耦合紧,扩展需修改 App 端 |
结论: 独特的 AccessibilityService 路径提供无线后台能力,是全视窗「手机状态(T1)」和「通知发送」的理想基础。App 层可做梯度授权的载体。但缺少 UI 树和剪贴板支持。
二、综合评分对比
| 项目 | 监控深度 | MCP完整性 | 权限模型 | 可扩展性 | 总分 |
|---|---|---|---|---|---|
| claude-in-mobile | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | 16/20 |
| uiautomator2-mcp-server | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | 15/20 |
| scrcpy-mcp | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐ | 14/20 |
| PalmWindow | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | 13/20 |
| native-devtools-mcp | ⭐⭐⭐ | ⭐⭐⭐ | ⭐ | ⭐⭐⭐ | 10/20 |
| android-mcp-server | ⭐⭐ | ⭐ | ⭐ | ⭐⭐⭐ | 7/20 |
三、全视窗需求对照矩阵
| 全视窗层 | 能力需求 | android-mcp-server | claude-in-mobile | native-devtools-mcp | scrcpy-mcp | uiautomator2-mcp-server | PalmWindow |
|---|---|---|---|---|---|---|---|
| T1 手机状态 | 电量/信号/网络/运行时间 | ❌ | ✅ info/system | ✅ display_info | ✅ device_info | ✅ device:info | ✅ 丰富 |
| 当前App/Activity | ❌ | ✅ activity | ✅ current_activity | ✅ app_current | ✅ | ✅ | |
| 屏幕使用时间/解锁 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 独家 | |
| 主动状态推送 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 独家 | |
| T2 通知 | 读取通知 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 发送通知 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | |
| 展开通知面板 | ❌ | ❌ | ❌ | ✅ (scrcpy) | ❌ | ❌ | |
| T3 视觉 | 截图 | ✅ | ✅ (标注) | ✅ | ✅ (~33ms) | ✅ | ✅ |
| UI树 | ✅ (basic) | ✅ (uiautomator) | ✅ (uiautomator) | ✅ (ui_dump) | ✅ (XPath) | ❌ | |
| 实时视频流 | ❌ | ❌ | ❌ | ✅ (MJPEG) | ❌ | ❌ | |
| 屏幕录制 | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | |
| T4 控制 | 点击/滑动/输入 | ❌ (仅有shell) | ✅ | ✅ | ✅ (5ms) | ✅ | ✅ |
| 应用管理 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (白名单) | |
| 剪贴板读写 | ❌ | ✅ | ❌ | ✅ (绕过10+) | ✅ | ❌ | |
| 文件系统 | ❌ | ✅ file_* | ❌ | ✅ push/pull/list | ❌ | ❌ | |
| 权限管理 | ❌ | ✅ permission_* | ❌ | ❌ | ⚠️ (app:config) | ❌ | |
| Shell命令 | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ (基本) |
四、组合建议
推荐方案 A:「claude-in-mobile + PalmWindow」互补组合 ⭐⭐⭐⭐⭐
| 组件 | 负责 | 理由 |
|---|---|---|
| claude-in-mobile | T3+T4 核心 | UI树/截图/剪贴板/文件/权限/多设备 |
| PalmWindow | T1+T2 + 授权载体 | 手机状态/通知发送/主动提醒/AccessibilityService 授权模型 |
| 扩展: scrcpy layer | T3 实时屏幕 | 可选增强,使用 scrcpy-next 或合并到 claude-in-mobile |
覆盖度: T1(80%) + T2(40%) + T3(100%) + T4(100%)
差距分析:
- T2 通知读取: 所有项目都欠奉。需要额外开发 Android 端 NotificationListenerService
- T1 屏幕时间统计: PalmWindow 已有基础,可扩展
- 梯度权限模型: 全视窗需要 T1→T4 渐进授权,目前没有项目原生支持。可以在 PalmWindow 的 App 层构建授权 UI
推荐方案 B:「scrcpy-mcp + uiautomator2-mcp-server + PalmWindow」三合一
| 组件 | 负责 | 理由 |
|---|---|---|
| scrcpy-mcp | 性能层 | 快速截图(~33ms)/输入(5ms)/视频流/剪贴板(绕过10+) |
| uiautomator2-mcp-server | 深度UI层 | XPath元素定位/70+工具/Toast检测/标签过滤 |
| PalmWindow | 授权+状态层 | 手机状态/通知/主动提醒/AccessibilityService |
优势: 性能最优(scrcpy)+ 工具最多(uiautomator2)+ 授权模型(PalmWindow)
劣势: 三个独立 MCP server 并运行,架构复杂,跨 server 协调成本高
推荐方案 C:从零构建(基于 uiautomator2 + scrcpy)
如果有资源从零构建全视窗,推荐技术栈:
- 底层:
uiautomator2(Python) +scrcpy— Android 端核心能力 - App 层: AccessibilityService + NotificationListenerService (Kotlin) — 无线/后台能力+通知读取
- MCP 层: Python FastMCP — 快速开发 MCP server
- 传输: HTTP/SSE — 远程访问
核心新增开发量:
- NotificationListenerService — 读取通知并推送(所有项目都缺)
- 梯度权限模型 — App 端的授权 UI + MCP 端的权限 gate
- T1 状态扩展 — 屏幕时间统计、运营商信息等
五、关键差距总结
全视窗现有方案不可直接覆盖的能力:
| 能力 | 重要性 | 现有方案 | 解决方案 |
|---|---|---|---|
| 通知读取 | 🔴 高 | 全部缺失 | 开发 NotificationListenerService |
| 通知展开查看 | 🟡 中 | scrcpy-mcp 可拉下面板 | 已部分覆盖 |
| 实时视频流 | 🟡 中 | scrcpy-mcp MJPEG | 已覆盖 |
| 剪贴板(Android 10+) | 🔴 高 | scrcpy-mcp 绕过 | 可复用 |
| UI树(XPath) | 🔴 高 | uiautomator2/claude-in-mobile | 已覆盖 |
| 梯度权限 | 🔴 高 | 全部缺失 | 需自建 PalmWindow App 层 |
| T1 状态深度 | 🟡 中 | PalmWindow 覆盖最好 | 可扩展 |
| 无线后台运行 | 🔴 高 | PalmWindow(AccessibilityService) | 可复用 |
六、最终建议
立即可采用: claude-in-mobile 作为全视窗的 MCP 骨架 + PalmWindow 的 App 层作为授权载体和 T1 状态补充。
需要自研:
- NotificationListenerService — 通知读取(所有方案缺失的核心能力)
- 梯度权限 Gate — 在 MCP server 层实现工具级别的授权检查
- 全视窗 App — 整合 PalmWindow 的 AccessibilityService + 通知监听 + 授权 UI
可直接复用的成熟组件:
- scrcpy 的剪贴板绕过机制
- uiautomator2 的 UI 树/元素交互
- claude-in-mobile 的 meta-tool 设计模式
- PalmWindow 的后端+App 通信架构
技术选型建议: Python 为主(uiautomator2 + FastMCP)+ Kotlin App 层(AccessibilityService + NotificationListenerService)+ 可选 scrcpy 增强性能层。