Mobile MCP :用一句话让 AI 接管手机,安卓与 iOS 自动化不再写脚本

开源项目 Mobile MCP 通过 MCP 协议让 AI 直接操作安卓与 iOS 设备,靠无障碍树识别界面,可点按、输入、装包、抓日志与崩溃。本文整理其能力、接入命令与实测过程。

Mobile MCP 是一个把手机交给 AI 来操作的开源项目,思路很直接:借助 MCP 协议,让模型直接在你的设备上完成点击、滑动和文字输入。接入之后,用户只要用自然语言说明目标即可,安卓与 iOS 两端都覆盖,真机和模拟器同样适用。

该项目由 Mobile Next 团队维护,采用 TypeScript 编写,以 Apache-2.0 协议开源,可免费使用,商业用途也不受限。目前在 GitHub 上的 Star 数已超过 7k。

MCP 是什么

(熟悉 MCP 的读者可以跳过本节。)

MCP 是 Anthropic 提出的开放协议,作用是为大模型挂载外部工具。每注册一个 MCP 服务,模型就多掌握一项能力。常见的 MCP 服务对接的是文件、数据库或网页,而 Mobile MCP 对接的对象是手机。

服务进程运行在用户自己的电脑上,AI 所操控的是本机连接的设备,数据不经过第三方服务器。

客户端与设备支持

客户端方面,凡支持 MCP 的都能接入。官方支持列表里包含 Claude Code、Codex、Cursor、Gemini CLI、Copilot、Windsurf 等主流工具;国产客户端中 Trae 同样支持 MCP,也可以直接连。

设备覆盖情况如下:

官方提供的架构图如下:左侧为各类 MCP 客户端,中间是 Mobile MCP,右侧连接手机、模拟器与数据源。项目把手机操作封装成三十余个工具,命名统一带 mobile_ 前缀,由模型按需调用。

靠无障碍树识别界面

判断屏幕上有什么,它主要依赖系统无障碍树,而不是靠截图去猜。无障碍树指 App 为按钮、文字、输入框附带的结构化数据——控件位置、显示文本、当前是否可点击,都是确定值。只有当界面拿不到无障碍信息时(例如游戏画面),它才退回截图加坐标的方式。读取结构化数据比截图更快,消耗的 token 更少,也不依赖视觉模型,结果更稳定。

用模拟器实测,让它列出当前屏幕的元素,返回的是一份清单:按钮、文字、输入框各自附带坐标与属性,而不是丢回一张图片。

能做的事

  • 交互动作:单击、双击、长按、上下左右滑动均有现成工具;输入框打字、按 Home 键、返回键、音量键也都支持。用户把目标讲清楚,AI 自行组合这些动作执行,无需编写脚本。
  • 应用管理:可先列出设备上已安装的 App,再按包名启动、关闭正在运行的进程、从本地文件安装 apk 或 ipa、以及卸载。做测试时,装包、启动、验证这一整套都能交给它。
  • 设备与系统操作:查询屏幕尺寸、切换横竖屏、设置虚拟 GPS 定位、读写剪贴板。做地图类或基于位置的功能时,虚拟定位尤其实用,不必带着手机到处跑。
  • 屏幕与录制:随时截取当前屏幕查看状态,也能把一段操作录成视频留存。让 AI 跑完一个流程顺手录屏,后续检查会方便很多。
  • 日志与崩溃:对开发者最有价值的是这部分——可直接拉取设备实时日志,安卓端为 logcat,iOS 端为系统统一日志;还能列出设备上的崩溃报告,并按编号取出完整内容。以往复现崩溃要自己翻日志,现在让 AI 顺手取一下即可。
  • 批量执行:支持把「点这里、输入、再点那里」合并进一次调用,长流程无需反复对话。

手头设备不足时,Mobile Next 官方还提供云端真机池,iOS 与安卓真机均有。

接入步骤

由于本机一直装有安卓模拟器,直接调用它比较省事;没有模拟器的读者可以用 Mobile Next 现成的云端真机池,跟 Codex 说明使用云设备即可。

实测环境:客户端为 Codex,本地开启一台安卓模拟器,整个接入过程很快。

动手前需准备:Node.js 版本 20 以上;使用安卓需装好 Android SDK 中的 platform-tools,确保 adb 命令可用,并先启动模拟器;使用 iOS 需安装 Xcode 命令行工具。

在 Codex 中挂载只需一条命令:

codex mcp add mobile-mcp npx "@mobilenext/mobile-mcp@latest"

习惯改配置文件的话,在 ~/.codex/config.toml 中加入下面这段效果相同:

[mcp_servers.mobile-mcp]
command = "npx"
args = ["@mobilenext/mobile-mcp@latest"]

使用其他客户端则粘贴这段通用 JSON,Cursor、Trae、Claude Code、Gemini CLI 均识别:

{
  "mcpServers": {
    "mobile-mcp": {
      "command": "npx",
      "args": ["-y", "@mobilenext/mobile-mcp@latest"]
    }
  }
}

挂载完成后重启 Codex 验证。对着它说一句「列出可用的设备」,若它把本地运行的模拟器列了出来,就说明已经接上。

实测效果

之后便可正常对话,想到什么说什么。让它「打开设置,把深色模式打开」,它会先读一遍屏幕,按文字定位到显示设置的入口,点进去按下开关,完事再读一遍系统状态,确认确实切换成功。全程没有手动碰过模拟器。

再试一个步骤更多的:让它「打开时钟,设一个明天早上 7 点的闹钟」。它自行找到时钟 App 打开,切到闹钟页,点新建,拨好时间,保存,最后截图回来确认。中间每一步都由它自己读屏幕、自己找位置,人只需要看。

官方另有一段演示视频,运行效果大致如此:

与旧方案的区别

过去做移动端自动化,iOS 要写 XCUITest,安卓要写 Espresso,想跨端则上 Appium。脚本本身脆弱,界面改一版就废掉一批。Mobile MCP 不需要写脚本,把目标讲给 AI,让它自己去点。

可考虑的用法:改完页面让 AI 自己点一遍,省去手动测试;发版前跑个冒烟,装包启动点一圈看是否崩溃;以及一些重复性的录入操作,把流程说明白让它自己跑。

几点提醒

它默认会收集匿名使用数据,介意的话加上 MOBILEMCP_DISABLE_TELEMETRY=1 关闭。

同一团队还做了 mobilecli,可在命令行里直接控制设备,Mobile MCP 正是构建在它之上。若想把 AI 摸索出来的流程固化成可反复执行的测试,可以再看他们家的 mobilewright,相当于手机端的 Playwright。

  • GitHub:https://github.com/mobile-next/mobile-mcp
  • 官方文档(Wiki 中有更细的安装配置):https://github.com/mobile-next/mobile-mcp/wiki
分享 微博

弹幕

还没有弹幕,来说一句。

到此一游

共 0 条

还没有人留下足迹,来签个到。

    评论 共 0 条

      昵称 —