mobile-mcp
让 AI Agent 跨平台操控 iOS/Android 设备的 MCP Server,通过无障碍树
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 AI Agent 跨平台操控 iOS/Android 设备的 MCP Server,通过无障碍树
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你或许见过这样的场景:测试工程师每天重复点击同一个 App 数百次,只为验证一个按钮的行为;数据标注员守着手机屏幕,一个字一个字地把 App 里的内容抄写到表格里;自动化脚本写得洋洋洒洒,一遇到 App 升级就全盘崩溃——这些痛点,在移动应用开发和测试领域几乎无处不在。
Mobile Next MCP(全称 @mobilenext/mobile-mcp)正是为解决这些难题而生:它是一个基于 Model Context Protocol(MCP) 的服务器,专门负责连接 AI Agent 与真实的手机设备——包括 iOS 真机、iOS 模拟器、Android 真机和 Android 模拟器。它让 AI 能够像真人一样操控手机:看屏幕、点按钮、滑动、输入文字、安装卸载 App、截屏分析……而用户只需要在 Claude Desktop、Cline、Cursor 等支持 MCP 的工具里配置一行命令即可。

图1:Mobile MCP 架构示意图——连接 AI Agent 与多平台移动设备
传统的移动端自动化工具,如 Appium、Selendroid 等,虽然功能强大,但存在几个根本性痛点:
第一,门槛高。 配置一套 Appium 环境需要 Java、Android SDK、各种驱动,稍微配置错误就报错,新手劝退率极高。第二,维护成本高。 每次 App UI 改版,元素的 XPath 或 ID 可能随之变化,脚本大批量失效,需要重新定位元素。第三,无法原生对接 AI。 这些工具本质上是给人类测试人员用的脚本框架,不是为 LLM Agent 设计的——没有结构化的上下文传递、没有标准化的工具接口。
与此同时,AI Agent 领域却在快速成熟。Claude、GPT-4 等大模型已经能够理解复杂指令、规划多步任务、做出合理决策。问题在于:Agent 看到的是文字,而手机屏幕是像素。 中间缺少一座桥——Mobile MCP 正是那座桥。
Mobile MCP 的核心创新在于双轨交互机制:
当 App 支持无障碍功能时(iOS 的 VoiceOver/Android 的 TalkBack),Mobile MCP 直接读取系统的无障碍树——这是一棵结构化的 UI 元素树,包含了每个按钮的文字、类型、位置、是否可交互等属性。对 AI 来说,这不是一张模糊的截图,而是一份清晰的"界面蓝图",可以精确定位元素、生成准确的点击指令。
这样做的好处是:不需要任何机器视觉模型,不需要 GPU,不需要 OCR,速度极快,精度极高。 这是 Mobile MCP 与其他纯 CV 方案的本质区别。
当无障碍树不可用时(比如 App 禁用了辅助功能,或遇到 WebView 等特殊场景),Mobile MCP 会自动降级到"截图 + 坐标"模式:先用 mobile_take_screenshot 获取屏幕截图,再用 AI 模型分析截图内容,找到目标按钮的像素坐标,最后执行 mobile_click_on_screen_at_coordinates。
这种双轨设计确保了无论什么 App、什么场景,都能找到一种方式完成自动化,不会因为单一路径失效而彻底卡死。

图2:Mobile MCP 工作架构——AI Agent 通过 MCP 协议与 iOS/Android 设备交互
Mobile MCP 提供了丰富的工具集,分为五大类:
mobile_list_available_devices:列出所有可用设备(模拟器、真机等)mobile_get_screen_size / mobile_set_orientation:获取和设置屏幕尺寸与方向mobile_list_apps:列出设备上所有已安装 Appmobile_install_app / mobile_uninstall_app:安装/卸载 App(支持 .apk、.ipa、.app、.zip)mobile_launch_app / mobile_terminate_app:启动/终止 Appmobile_take_screenshot:截屏供 AI 分析mobile_list_elements_on_screen:列出屏幕上所有 UI 元素及其坐标mobile_click_on_screen_at_coordinates:在指定坐标点击mobile_double_tap_on_screen / mobile_long_press_on_screen_at_coordinates:双击/长按mobile_swipe_on_screen:在任意方向滑动(上、下、左、右)mobile_type_keys:向焦点元素输入文字mobile_press_button:按下设备按钮(Home、Back、音量键等)mobile_open_url:在设备浏览器中打开 URL从代码结构来看,Mobile MCP 是一个典型的 Node.js/TypeScript 项目,核心逻辑分平台实现:
| 文件 | 职责 |
|---|---|
src/server.ts | MCP Server 入口,定义所有工具的 schema |
src/android.ts | Android 平台实现(ADB 命令封装) |
src/ios.ts | iOS 平台实现(WDA 交互) |
src/iphone-simulator.ts | iOS 模拟器专项支持 |
src/mobile-device.ts | 跨平台统一设备抽象层 |
src/image-utils.ts / src/png.ts | 截图处理、图片编码工具 |
src/robot.ts | 机器人执行引擎(点击、滑动等) |
src/webdriver-agent.ts | WebDriverAgent 封装 |
关键依赖:
@modelcontextprotocol/sdk:MCP 协议官方 SDKmobilewright(自研):移动端底层交互库express:提供 HTTP REST API 接口zod + ajv:JSON Schema 验证fast-xml-parser:解析 Appium 等工具的 XML 输出
图3:Mobile MCP 官方 Logo
Mobile MCP 的部署极为简单——它本质上是一个 npm 包,只需要在任意支持 MCP 的 AI 工具中配置一行即可(以 Claude Desktop 为例):
{
"mcpServers": {
"mobile-mcp": {
"command": "npx",
"args": ["-y", "@mobilenext/mobile-mcp@latest"]
}
}
}
支持的工具包括:Claude Desktop、Claude Code、Cline、Cursor、Codex、Copilot、Goose、Gemini CLI 等,覆盖了主流的 AI 编程助手生态。
硬件需求极低: 无需 GPU,普通开发机(Node.js >= 18)即可运行。唯一的前置依赖是:
坦率地说,Mobile MCP 也有其局限性:
1. iOS 真机需要付费开发者账号。 苹果的 WebDriverAgent 在真机上运行需要有效的 Apple Developer 账号,模拟器则无此限制。
2. 无障碍树的质量取决于 App 本身。 如果 App 完全禁用了无障碍功能,就只能降级到截图方案,精度和速度都会有所下降。
3. 非 Docker 部署。 目前没有提供 Dockerfile 或 docker-compose,团队如果希望将 MCP Server 容器化,需要自己编写。这对习惯容器化部署的团队来说是一个门槛。
4. 稳定性依赖设备连接。 真机通过 USB 或 Wi-Fi 连接,模拟器通过本地端口通信,网络波动或 USB 断开会导致任务中断。
Mobile MCP 的出现代表了移动自动化领域的一个趋势转变:从规则驱动的脚本,走向 AI 驱动的智能决策。
传统的自动化脚本是"死"的——每个步骤都是预设的,遇到分支就写死,遇到边界条件就崩溃。而 Mobile MCP + LLM Agent 的组合是"活"的:AI 能够理解屏幕内容的语义,自主判断下一步该做什么,遇到错误自动重试,甚至能从失败中学习。
这种能力组合在以下场景价值尤为突出:
根据 GitHub 数据,Mobile MCP 已有 5,000+ Stars、443 Forks,被纳入了几乎所有主流 MCP 客户端的默认支持列表,是目前 GitHub 上最受欢迎的移动端 MCP Server。其维护者 Mobile Next 团队还提供了 Slack 社区、详细 Wiki 文档和一个公开 Roadmap,体现了良好的开源治理姿态。