MCP 服务已内置于 AYA 桌面端

让 AI 直接操控你的 Android 设备

AYA 内置一个只监听 127.0.0.1 的 MCP(Model Context Protocol)服务,把手机能力封装成 73 个 aya_* 工具。在 CodeBuddy、WorkBuddy、Claude 里说一句"打开设置,把字体调到最大并截图",剩下的交给 AI —— 不用再写脚本、跑命令、粘输出。

Model Context Protocol

MCP 是什么?为什么手机需要它

MCP 是 AI 客户端与工具之间的开放协议。过去 AI 只能"教你怎么操作手机",现在它能自己调工具、看结果、再决定下一步——AYA MCP 把 adb 的几十年积累翻译成 73 个标准工具。

会说人话就够了

不用记 adb shell am start -n ...。描述目标,AI 自己选工具、组合调用,失败还会自我纠正。

看得见界面,不只是命令

aya_ui_dump 给带坐标的层级树,aya_screencap 回传截图,AI 既读结构也看画面。

一次调用干完一串动作

aya_batch 串行执行最多 20 个动作,避开播放器控制栏这类 1–3 秒就消失的控件。

Tool Reference

73 个工具,11 个分类

73 个 aya_* 工具:29 个只读默认开放,44 个写需勾选「允许写操作」。下面是最高频的 10 个, 完整清单见 工具清单页。

上手最常用的 10 个 10 / 73
工具权限说明
aya_ui_dump只读UI 层级树,节点带 bounds / center,可过滤与分页。
aya_tap写坐标 / nodeIndex / text·id·desc 定位,点完即回传新界面。
aya_text写向焦点输入框写文本,中文与 emoji 直接写入。
aya_screencap只读截图并返回图片,设备端压缩,体积比 PNG 小 436 倍。
aya_batch写一次串行执行最多 20 个动作,专治 1–3 秒消失的控件。
aya_wait_for只读等控件出现或消失,命中即返回,比反复 dump 省往返。
aya_ui_watch只读订阅界面事件,等界面自己动起来,不用盲等。
aya_logcat只读日志快照,过滤在设备端完成,附崩溃摘要。
aya_shell写adb shell 兜底,30s 超时、输出截断。
aya_serial_logs只读串口启动日志,支持关键字与增量读取。
定位小贴士:i 是完整树的 DFS 序号(过滤不改变它);snapshotId 60s 过期, 输入类操作后立即失效,报 STALE_SNAPSHOT 就重新 dump。

Benchmark

同一台设备实测:比 uiautomator2 快 1.7–5 倍

同一台 RK3576 / Android 14、同一界面交替测量(aya 走 MCP 端点、u2 走 Python),每个用例 10–20 次取中位数,方法见 TEST_REPORT 第 8 节。

同板实测 RK3576 · Android 14
操作uiautomator2AYA MCP差异
读取界面层级 309 ms / 93 KB 131 ms / 3.9 KB 2.35× 快 · 24× 小
点击(坐标) 180 ms 91 ms 2.0× 快
滑动(300 ms 动作时长) 1160 ms 390 ms 3.0× 快
写入文本 253–476 ms 93 ms 2.7–5.1× 快
按控件定位点击 937 ms 338 ms 2.8× 快
截图 145 ms / 6.2 MB PNG 162 ms / 14 KB JPEG 体积 436× 小

上下文成本差 24 倍

一次层级读取,aya 回 3.9 KB(约 1.2k tokens),u2 回 93 KB(约 30k)。长任务里这比毫秒差距更致命。

少一次模型往返

aya_tap 默认回传点击后的新界面;u2 要 AI 自己写代码、解析 XML,再喂回上下文。

u2 没有的能力

事件订阅、事件驱动等待、串口启动日志、录屏投屏、屏幕适配,共 73 个工具。

什么时候仍然用 uiautomator2:上百步固定回归、需要断言与 CI 报告、或需要 OCR / 图像处理。 注意:两者争抢同一个设备端无障碍连接,同一台设备上不能同时运行。

Enable MCP

打开 MCP 服务:入口就在设置里

服务由 AYA 桌面端托管,没有命令行、没有额外进程。关掉这个开关,AYA 就回到原版状态。

  1. 打开「设置」 主界面右上角的齿轮图标,或菜单 工具 → 设置。
  2. 切到 MCP 分组 弹窗左侧「外观 / ADB / MCP」,点最下面的 MCP。
  3. 勾选「启用 MCP 服务」 立即在本机启动,默认端口 7788,并自动生成访问令牌。
  4. 按需放开能力 要点击、输入、shell 就勾「允许写操作」;要跨机连接再勾「允许局域网访问」。
AYA 设置 → MCP 面板:勾选启用 MCP 服务、允许写操作、允许局域网访问,端口 7788,状态显示 http://198.18.0.1:7788/mcp 运行中
设置 → MCP:三项开关 + 端口 + 实时状态。图中已勾选局域网访问,所以地址显示为 http://198.18.0.1:7788/mcp;只用本机时这里是 127.0.0.1。
面板上每一项管什么 跟着截图看
控件默认作用
启用 MCP 服务打开总开关,开启即监听本机端口并提供 aya_* 工具。
允许写操作按需暴露点击、输入、shell 等 44 个写工具;不勾只有只读工具。
允许局域网访问关闭监听地址从 127.0.0.1 变为 0.0.0.0,同网段可连。
端口 / 令牌7788端口可改;「查看 MCP 配置」复制片段,「重置访问令牌」作废旧令牌。

Quick Start

三步,把手机交给 AI

无需 Root,手机上也无需安装任何 App。只要开启 USB 调试 / 无线调试,电脑上跑着 AYA 就行。

开启 MCP 服务

设置 → MCP → 勾选「启用 MCP 服务」,默认端口 7788。需要点击、安装、shell 时再勾「允许写入操作」 (面板截图)。

复制配置片段

弹窗给出三种写好的配置:stdio(推荐)、stdio(无 env)、HTTP。点「复制」,端口与令牌已填好。

粘贴到 AI 客户端

CodeBuddy 粘贴到 ~/.codebuddy/mcp.json;其他 MCP 客户端同理,重连后即可看到 aya_* 工具列表。

// AYA 设置 → MCP → 查看配置,直接复制即可(令牌已填好)
{
  "mcpServers": {
    "aya": {
      "type": "stdio",
      "command": "C:/Path/To/AYA.exe",      // 客户端用 AYA 自带的 node 启动桥接脚本
      "args": [
        "resources/mcp/aya-mcp-stdio.cjs",
        "--url=http://127.0.0.1:7788/mcp",
        "--token=<your-token>"
      ],
      "env": {
        "ELECTRON_RUN_AS_NODE": "1",
        "AYA_MCP_URL": "http://127.0.0.1:7788/mcp",
        "AYA_MCP_TOKEN": "<your-token>"
      },
      "description": "AYA Android device control"
    }
  }
}
桥接脚本收到 tools/list_changed 会通知客户端热刷新;客户端不支持热更新时重连一次即可。

Use Cases

AI 能替你干这些活

下面每条都是真实可跑的工具组合,把「写脚本 → 运行 → 解析输出」的往返压缩成一句话。

自动化回归与冒烟

"装上新构建,走完登录 → 下单 → 支付,每步截图,失败把 E 级日志带回来。"——aya_install_app → aya_batch → aya_screencap。

UI 走查与适配检查

"把字体缩放到 2.0,逐个页面截图,列出文字被截断的控件。"——aya_set_font_scale + aya_screencap。

崩溃与 ANR 排查

"清一下日志,复现这个操作,把 E 级日志和 tombstone 拉回本机。"——aya_clear_logcat → aya_logcat → aya_pull_file。

复现视频与缺陷留证

"开始录屏,执行刚才那串操作,停录,把 mp4 存到桌面。"——开录 → aya_batch → aya_stop_recording。

性能体检

"滚动首页 30 秒,采样帧率和内存,告诉我掉帧的时段。"——aya_performance + aya_swipe。

H5 / 混合应用调试

"列出前台应用的 WebView,把 devtools 调试地址给我。"——aya_list_webviews 自动 forward 端口并读 /json。

Security

默认收紧,能力给你、风险留给自己可控

MCP 服务跑在你自己的电脑上,设备数据不出本机;危险能力需要你显式授权。

  • 只监听 本机或内网:外部网络无法访问,端口 1024–65535,默认 7788。
  • Bearer Token 鉴权:首次开启时生成并持久化,可随时「重置访问令牌」。
  • 写操作默认隐藏:44 个写工具需勾选才暴露,29 个只读工具始终可用。
  • Origin 校验 + 2MB 请求体限制:防跨站调用与超大 payload。
  • shell 有兜底:aya_shell 30s 超时、输出截断 20000 字符。

FAQ

常见问题

AYA MCP 和原版 AYA 是什么关系?

基于开源项目 AYA(AGPL-3.0)二次开发, 完整保留原版投屏、文件管理、日志、性能、Shell 等桌面能力,只新增了 MCP 服务层;关掉 MCP 开关就是原版 AYA。

需要 Root 或在手机上安装 App 吗?

都不需要。AYA 走 adb,只需在手机上开启 USB(或无线)调试并授权本机。

客户端只看到 29 个只读工具怎么办?

说明未勾选「允许写入操作」。勾选后重连或等 tools/list_changed 热刷新,即可看到全部 73 个; 目标工具是只读还是写可在 工具清单 里查。

aya_tap 返回 STALE_SNAPSHOT?

快照 60s 过期,输入类操作后立即失效。重新 aya_ui_dump 拿新的 snapshotId 与 nodeIndex 再点。

点开播放器控制栏后读不到控件?

这类控件只停留 1–3 秒。用 aya_tap 默认的 withUi(点完立刻抓一帧),或把「点击 → 等待 → 再点击」合成一次 aya_batch。

MCP 开关打不开,提示端口被占用?

默认 7788 被占。在设置里换一个 1024–65535 的端口重试,设置项会直接显示错误原因。

支持哪些 AI 客户端?

任何支持 MCP 的客户端都可以:CodeBuddy、WorkBuddy、Claude Desktop、Cursor、Cline 等。配置片段在 AYA 设置里一键复制。

MCP 支持局域网或远程访问吗?

默认不支持:服务只监听 127.0.0.1,局域网与公网都连不上。确有跨机需求时,用 SSH 隧道 / frp / ngrok 转发本机端口,开放前务必开启 Bearer Token,且只暴露给可信网络。

AYA MCP 和 Python uiautomator2 有什么区别?该用哪个?

同一台 RK3576 / Android 14 上交替实测:层级 131 ms vs 309 ms、点击 91 vs 180 ms、滑动 390 vs 1160 ms、写文本 93 vs 253–476 ms、截图 14 KB vs 6.2 MB。模型即席操作选 aya;上百步固定回归、要断言与 CI、或要 OCR / 图像处理选 u2。两者争抢同一个设备端无障碍连接,不能同时运行。

What's New

最近更新

本分支在同步上游 AYA 的基础上,围绕「AI 可控 + 桌面体验」持续增强;完整历史见 GitHub Releases。

更新日志 2026-10
版本改动
v2.1.3 注入通道提速:tap / swipe / key / text / screencap 改走常驻 UiAutomation,单次动作从 200–400ms 降到几十毫秒;文本改用 ACTION_SET_TEXT,中文与 emoji 原样写入;截图在设备端压缩透传;新增 aya_ui_watch 无障碍事件订阅, aya_wait_for 改为事件驱动;官网改版。
v2.1.2 新增 aya_long_press 与手势注入,aya_batch 支持 gesture 步骤;定位失败返回 nearMatches 与可见性诊断; 短 resource-id 可直接匹配;多窗口节点合并与 visibleOnly 过滤;工具总数 72。
v2.1.0 新增串口调试面板(bootloader / kernel / android 分段识别、过滤、暂停、波特率探测)与 8 个 aya_serial_* 工具,工具总数 50。

现在就让 AI 帮你操作手机

下载 AYA,设置 → MCP → 启用,复制配置粘贴进 AI 客户端,全程不到一分钟。