Agent-Android

Agent-Android

A local MCP server that controls Android devices via ADB, enabling AI agents and users to manage devices, execute UI automation, and perform testing through 27 MCP tools and an optional web console.

Category
访问服务器

README

Agent-Android

简体中文 | English

CI Python 3.11 License: MIT

Agent-Android 是一个通过原生 ADB 控制 Android 设备的本地 MCP Server,同时提供可选的 Web 控制台。AI Agent 与浏览器用户复用同一套控制层,可管理 USB、无线 ADB 和多台设备。

适合 Android 自动化测试、重复操作、Agent 实验、真机任务编排和人工协同控制。当前版本:0.3.2。

[!WARNING] 本项目能够点击屏幕、启动应用、输入文字和触发真实外部操作。只在你拥有或获准控制的设备上运行,并在发送消息、付款、删除数据等操作前保留人工确认。

主要能力

  • 27 个 MCP 工具:设备发现、截图、点击、滑动、按键、文字输入、应用管理、UI 树、OCR、等待条件和无线配对。
  • Agent-first UI 操作:screen_summary、find_element、wait_for_element、tap_element。
  • Unicode 输入:通过用户自行提供并核验的 ADBKeyBoard 输入中文和 Emoji,并恢复原输入法。
  • Web 控制台:实时画面、点击/拖动、应用列表、UI/OCR 标注和活动日志。
  • 多进程安全:MCP 与 Web 通过设备文件锁串行化命令;Web 截图流会为 Agent 操作让路。
  • 本地持久化:SQLite/WAL 保存设备和最近 500 条操作,敏感文字和配对码自动脱敏。
  • 远程访问边界:Web 默认仅监听 127.0.0.1,支持 API Token 与 Tailscale Serve。

Windows EXE

从 Releases 下载 Agent-Android.exe 或便携 ZIP,直接双击 EXE:

  1. 自动检查电脑上是否已有 adb;
  2. 如果没有,显示 Google 官方 Android SDK License 和 Platform Tools 发布页;
  3. 用户阅读后输入 ACCEPT,程序从 dl.google.com 直接下载 stable Windows Platform Tools, 并校验 Google 仓库元数据公布的文件大小和 SHA-1;
  4. 启动只监听 127.0.0.1:8765 的内置 Web 控制台并打开默认浏览器;
  5. 关闭控制台窗口或按 Ctrl+C 即停止服务。

EXE 已包含 Agent-Android、Python 运行时以及 OCR/scrcpy 的 Python 侧依赖,不需要另装 Python 或 Git。由于 Android SDK License 的再分发边界, Release 不捆绑 adb.exe;只有用户明确同意许可后,程序才会从 Google 官方仓库下载到 %LOCALAPPDATA%\Agent-Android\platform-tools。ADBKeyBoard APK、scrcpy-server 和手机厂商 USB 驱动也不会捆绑。

因此在有网络的新 Windows 电脑上,下载一个 EXE 即可完成软件侧环境;手机仍需开启开发者选项和 USB/无线调试,部分品牌的 USB 连接还需要厂商驱动。

命令行模式:

.\Agent-Android.exe                 # 启动 Web 控制台并打开浏览器
.\Agent-Android.exe web             # 启动 Web 控制台,不自动打开浏览器
.\Agent-Android.exe web --open-browser
.\Agent-Android.exe setup           # 交互式安装 Google Platform Tools
.\Agent-Android.exe setup --accept-android-sdk-license
.\Agent-Android.exe mcp             # 启动 stdio MCP Server
.\Agent-Android.exe --version

首次注册 MCP 前,先在普通控制台完成 ADB 设置,避免许可提示进入 MCP stdio:

.\Agent-Android.exe setup
codex mcp add agent-android -- "C:\path\to\Agent-Android.exe" mcp

一键部署 MCP

前置条件

  • Windows 10/11
  • Git for Windows
  • Python 3.11
  • Android SDK Platform Tools(adb)
  • 手机已开启开发者选项和 USB/无线调试

安装器不会下载 ADBKeyBoard APK 或 scrcpy-server,也不会绕过 Android 的设备授权。

Codex

在 PowerShell 中运行:

$p = "$env:TEMP\install-agent-android.ps1"; Invoke-WebRequest https://raw.githubusercontent.com/xiaoran7/Agent-Android/main/scripts/install.ps1 -OutFile $p; powershell -ExecutionPolicy Bypass -File $p

脚本会:

  1. 克隆或更新仓库到 %LOCALAPPDATA%\Agent-Android;
  2. 创建隔离的 Python 3.11 虚拟环境并安装 MCP 包;
  3. 自动发现 adb;
  4. 注册名为 agent-android 的 Codex stdio MCP Server;
  5. 输出当前可见设备。

重新打开 Codex 任务后即可使用。

Claude Desktop

$p = "$env:TEMP\install-agent-android.ps1"; Invoke-WebRequest https://raw.githubusercontent.com/xiaoran7/Agent-Android/main/scripts/install.ps1 -OutFile $p; powershell -ExecutionPolicy Bypass -File $p -Client claude

安装完成后重启 Claude Desktop。

只安装,不修改客户端配置

.\scripts\install.ps1 -Client none

可选依赖:

.\scripts\install.ps1 -WithOcr
.\scripts\install.ps1 -WithScrcpy
.\scripts\install.ps1 -WithOcr -WithScrcpy

建议先查看 scripts/install.ps1 再执行远程安装命令。

手动安装

git clone https://github.com/xiaoran7/Agent-Android.git
cd Agent-Android
.\scripts\setup_venv.ps1
.\scripts\check_adb.ps1

启动 MCP:

.\.venv\Scripts\agent-android.exe mcp

也可以使用模块入口:

.\.venv\Scripts\python.exe -m agent_android.cli mcp

Codex 手动注册示例:

codex mcp add agent-android --env "ADB_PATH=C:\Android\platform-tools\adb.exe" -- "C:\path\to\Agent-Android\.venv\Scripts\python.exe" -m agent_android.cli mcp

其他支持 stdio MCP 的客户端可参考 .mcp.json.example。

快速验证

连接设备后,让 Agent 执行:

列出已连接的 Android 设备,读取当前屏幕摘要,然后告诉我当前前台应用。

建议的安全操作顺序:

  1. list_devices
  2. screen_summary
  3. find_element / wait_for_element
  4. 在必要时执行 tap_element、input_text 等动作
  5. 再次读取 UI 或前台应用,验证真实结果

动作调用返回成功不等于目标应用一定完成了业务操作。对消息发送、表单提交等外部副作用,应读取操作后的 UI 进行确认。

MCP 会一直运行吗?

不会因为安装而成为 Windows 常驻服务。Agent-Android 使用 stdio MCP:

  • Codex 或 Claude 启动 MCP 进程,并在同一客户端会话内复用它;
  • 客户端断开或退出后,MCP 进程通常随之结束;
  • 每次工具调用不会额外启动一个新进程;
  • 双击 EXE 启动的是持续运行的 Web 控制台,不是 MCP;关闭窗口或按 Ctrl+C 即结束;
  • Android 的 adb server 是独立的后台进程,可能在 MCP 退出后继续存在,可用 adb kill-server 停止。

Agent-Android 自身不会在 Android 手机上安装常驻控制服务;ADBKeyBoard 和可选的 scrcpy-server 由用户独立提供,并遵循各自的生命周期。

Unicode 文字输入

原生 adb shell input text 可能被中文拼音输入法截获。可靠的中文和 Emoji 输入需要 ADBKeyBoard:

.\scripts\install_adb_keyboard.ps1 -DeviceId "<device-id>" -ApkPath "C:\path\to\ADBKeyboard.apk"

项目不会自动下载或信任第三方 APK。请自行核验来源和哈希后提供文件。

input_text(method="auto") 仅在 ADBKeyBoard 可用时工作;否则明确失败,不会悄悄降级到可能误报成功的原生输入。

部分 vivo OriginOS 版本会通过私有 fast_freezer 机制冻结或杀死 ADBKeyBoard。当前代码会等待 IME 切换并处理常见冻结唤醒,但长期无人值守任务仍应读取目标输入框确认文字确实落地。详见 gotchas。

Web 控制台

本机启动:

.\.venv\Scripts\agent-android.exe web

打开 http://127.0.0.1:8765。

带随机 Token 启动:

.\scripts\start_secure_web.ps1

不要把无 Token 的服务绑定到 0.0.0.0。异地访问优先使用 Tailscale Serve。

低延迟 scrcpy 预览是可选功能,需要自行核验并提供 scrcpy-server:

.\scripts\install_scrcpy_server.ps1 -JarPath "C:\path\to\scrcpy-server-v4.1" -Version "4.1"
$env:AGENT_ANDROID_STREAM_BACKEND = "scrcpy"
.\.venv\Scripts\agent-android.exe web

配置

常用环境变量:

变量 用途
ADB_PATH adb 可执行文件路径
AGENT_ANDROID_DATA_DIR SQLite、锁和可选二进制的数据目录
AGENT_ANDROID_WEB_HOST Web 监听地址,默认 127.0.0.1
AGENT_ANDROID_WEB_PORT Web 端口,默认 8765
AGENT_ANDROID_API_TOKEN 非回环 Web 访问所需 Token
AGENT_ANDROID_STREAM_BACKEND screenshot 或 scrcpy

一键安装时默认数据目录为 %LOCALAPPDATA%\Agent-Android。源码 editable 安装默认使用仓库内的 data/。

开发与验证

.\scripts\setup_venv.ps1
.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe -m ruff check .
.\.venv\Scripts\python.exe -m ruff format --check .
.\.venv\Scripts\python.exe -m bandit -q -r src
.\.venv\Scripts\python.exe -m build
.\scripts\build_exe.ps1

当前基线:104 项自动化测试,Ruff 与 Bandit 通过;主要能力已在 Android 模拟器和两台 vivo 真机上验证。

构建产物位于 dist/:

python -m pip install .\dist\agent_android-0.3.2-py3-none-any.whl
agent-android mcp

已知边界

  • 当前定位是个人或可信小团队使用,不是公网多租户平台。
  • Session Cookie 仍与原始 API Token 同值,不能单独吊销单个会话。
  • scrcpy 子进程生命周期主要依赖真机验证,自动化覆盖仍有限。
  • Android OEM 的输入法、后台冻结和无线调试行为可能不同。
  • Tailscale Serve 只保护 Web 控制台,不会隧道化 Wireless ADB。

完整记录见 开发踩坑与遗留项。

文档

许可证

本项目采用 MIT License。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选