
做移动端测试的同学应该都体会过这种割裂。安卓一套 Espresso 或者 Appium,iOS 一套 XCUITest,两套技术栈,两套选择器语法。真机往测试架上一插,驱动环境先配半天,脚本跟着版本走,界面一改版就成片飘红。大量时间没花在设计用例上,全花在维护脚本上。
最近我在 GitHub 上翻到一个项目:mobile-mcp,把这件事换了个思路,挺有意思,分享给大家。
这个项目,先记住几个关键信息即可。
mobile-mcp,Mobile Next 团队开源的 MCP 服务器,Apache-2.0 协议,TypeScript 实现@mobilenext/mobile-mcp,最近一个月下载量 18.9 万次
它干的事很简单:把 iOS 和 Android 设备的完整控制能力封装成一组 MCP 工具,AI Agent 接上以后,你用自然语言下指令,它就能在手机上装应用、点按钮、输文字、滑动翻页、截屏录屏、抓日志拿崩溃报告,模拟器和真机通用。
对做测试的人来说,这相当于把写自动化脚本换成了说人话。你描述要验证什么,Agent 自己拆步骤、自己找元素、自己执行、自己取证。
用 AI 做手机自动化,市面上多数方案走截图路线。模型每隔几步截一张屏,看图认界面,再换算坐标去点。这条路能跑,毛病也明显。慢,一步一截图来回传。贵,每张截图都是视觉 token,长流程跑下来额度烧得心疼。
mobile-mcp 换了个思路,官方叫法是 accessibility-first。

iOS 和 Android 系统都内置无障碍服务,App 每渲染一个界面,系统本身就维护着一棵描述当前屏幕的元素树,每个控件是什么类型、显示什么文案、坐标在哪、可不可以点,全在里面。mobile-mcp 把这棵树直接读出来交给 Agent,Agent 拿到的是一份结构化元素清单,要点哪个就按哪个元素的 ref 点,全程不烧一张视觉 token。截图加坐标识别只作为个别场景的兜底。
好处有两个。快,元素清单一次拿全,不用反复截图。稳,按 ref 点真实控件,界面轻微改版元素还在,不会像纯坐标脚本那样脆。
一张官方架构图,从 Agent 到设备的整条通路一目了然。

它底下垫着一个叫 mobilecli 的通用设备命令行,mobile-mcp 在上面包了 MCP 协议这一层。往下统一接管 adb 和 Xcode 那套设备通道,往上对任何 AI Agent 暴露同一组工具。所以同一句指令,模拟器和真机都通用,你不需要关心底下是哪家的设备栈。
30 多个 MCP 工具,按一条用例的生命周期串起来看更清楚。
准备阶段:
mobile_list_available_devices 列设备,mobile_install_app 装 apk、ipa 或者 app 包,mobile_launch_app 拉起,mobile_terminate_app 杀进程,mobile_uninstall_app 卸载清理。执行阶段:
mobile_list_elements_on_screen 拿当前屏幕的元素清单,mobile_click_on_screen_at_coordinates 按 ref 或坐标点,mobile_type_keys 输文字,mobile_swipe_on_screen 滑动,mobile_press_button 按 Home、返回、音量这些实体键,mobile_open_url 直接拉深链或网页。取证阶段:
mobile_take_screenshot 截图,mobile_start_screen_recording 和 mobile_stop_screen_recording 录屏留档,mobile_get_device_logs 拉 logcat 或 iOS 统一日志,mobile_list_crashes 和 mobile_get_crash 拿崩溃报告。
取证这几条对测试同学值得单独说。跑完一轮探索,直接问 Agent 设备上有没有新增崩溃,它把崩溃列表和报告原文拿回来,贴进缺陷单就是现成的复现材料,省去连 Xcode 或 Android Studio 翻日志的工夫。
另外有个 mobile_batch_commands,能把点一下、输一段、再点一下这种连续动作合成一次调用,长流程能省不少模型来回。
还有些零散能力知道就行。GPS 位置伪造,测外卖打车场景用得上。剪贴板读写,横竖屏切换,折叠屏开合。
先说环境门槛。Node.js v20+,iOS 侧要有 Xcode 命令行工具,Android 侧要有 Android Platform Tools 也就是 adb,再准备一个支持 MCP 的客户端,Claude Code、Cursor、Codex、Copilot、Gemini CLI 任选。
接入是同一段标准配置,大部分工具直接抄。
{
"mcpServers": {
"mobile-mcp": {
"command": "npx",
"args": ["-y", "@mobilenext/mobile-mcp@latest"]
}
}
}
Claude Code 用户更省事,一条命令。
claude mcp add mobile-mcp -- npx -y @mobilenext/mobile-mcp@latest
配完先发一句验证。
list available devices
能把在线的模拟器、仿真器和真机列出来,通路就是好的。
Android 真机这边,三步。
adb devices,列表里能看到设备到这就通了,Agent 一句 list available devices 就能看到你的手机,剩下的全靠说。
iOS 真机要多四件事,而且目前只支持 macOS。官方 wiki 步骤给得很明白。
npm install -g go-ios,用 ios list 确认能看到设备ios tunnel start --userspace,这个终端窗口得一直开着ios forward 8100 8100,同样挂着别关这四件事连起来的链路长这样,Mac 上跑三层,WDA 装在手机里,两层隔着数据线说话。

不想点 Xcode 的话,第 4 步也有命令行写法。
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner \
-destination 'platform=iOS,id=<你的udid>' test
配完把验证指令换成「list elements on my ios device」,Agent 能回报当前屏幕的元素清单,iOS 真机就通了。
说句实话,iOS 这套前置确实繁琐,tunnel 和端口转发现在还得手动开两个终端,官方 FAQ 自己也承认这事烦人,自动化已经放进 roadmap。头一回配置卡住的同学,多数是卡在 WDA 签名这一步,Bundle Identifier 一定要改成自己的,别用仓库默认的。
最短路径总结给赶时间的同学。安卓真机,开 USB 调试,插线,adb devices 见设备,配上 MCP 发一句 list available devices,三步上手。暂时没有真机也行,模拟器或者仿真器开着,同一个配置直接就能练。
环境通了,就直接说事。给两条建议你先跑起来的 prompt。
一条安装冒烟,走完注册到下单的主流程。
在设备上安装 app-release.apk,启动 App,用 13800000001 注册新账号,
走完新手引导,下单一件商品,全程录屏,
结束后检查设备上有没有崩溃报告,把结果汇总给我。
一条探索式回归,盯着一个功能模块反复蹚。
打开 App,搜索「手机测评」,点播放量最高的视频,看完前 30 秒,
点赞,评论「讲得不错」,回到搜索页换关键词再来一轮,重复 3 次,
记录每轮从搜索到播放完成的耗时。
README 里给的示例也是这个风格,原话叫 Be descriptive, straight to the point,把目标说清楚就行,步骤 Agent 自己拆。
写 prompt 有两个要点。目标要说具体,「注册一个账号,走完引导,下一单」比「测试注册功能」好得多,后者模型只能自己猜你要什么。取证要求直接写进 prompt,录屏、崩溃检查、耗时统计,一次跑完一次交齐,别让 Agent 跑完了再回头补。
Claude Code 用户建议装官方插件,/plugin marketplace add mobile-next/mobile-mcp,装完用 /mobile-mirror 能在终端侧栏看到真机实时画面,鼠标点图就是点手机,敲字直接进输入框。终端要用 kitty 或者 Ghostty。

远程和 CI 场景,加 --listen 3000 就把 MCP 转成了 HTTP 服务,配环境变量 MOBILEMCP_AUTH 加一层 Bearer token,适合挂在共享机器上给流水线调用。
手边没有真机农场,官方还有 Mobile Next Cloud,按设备分钟数付费租云真机,prompt 一句「log in to mobile next cloud」就能看到能租的设备清单。商业服务,价格自己掂量。
同团队还有个 mobilewright,官方定位是 Playwright for mobile。Agent 用 mobile-mcp 探索出来的路径,能固化成确定性的测试脚本,每次提交都跑。他家这套全家桶,日常记住两个就够,mobile-mcp 负责探索,mobilewright 负责回归,mobilecli 是地基,Cloud 是商业件,按需再说。
遥测默认是开着的,走 PostHog 和 Scarf 两家做匿名统计,介意的话配 MOBILEMCP_DISABLE_TELEMETRY=1 关掉。
它擅长的是探索、冒烟、数据录入这类开放场景,替代不了确定性回归套件。真要每次提交都跑的用例,把路径固化到 mobilewright 或者自己补断言。
长流程的元素清单来回会吃上下文,无障碍树路线已经省了大头,但能合并的动作用 mobile_batch_commands 合着调,省 token 也省时间。
iOS 真机用免费 Apple ID 签的 WDA 有签名有效期,过期重跑一次 Test 就行,这是苹果免费账号的通用限制,mobile-mcp 背不了锅。
对常做移动端测试的同学,这个项目值得现在就装上。一台安卓真机,一根数据线,一个 Claude Code 或者 Cursor,成本几乎为零,跑通第一条自然语言用例之后,你对 AI 做移动端测试这件事的体感会完全不一样。
比工具本身更值得记的,是它背后的三个设计判断。让模型读结构化的无障碍树,比喂截图又快又省。用一套协议抹平 iOS 和 Android 的平台差异,两套栈的维护成本直接消失。探索出来的路径随手固化成回归脚本,广度和稳定两头都占。这三条不挑工具,你自己搭测试基础设施的时候一样能用。
项目地址:
GitHub,https://github.com/mobile-next/mobile-mcp
官网,https://mobilenext.ai