关于 iPhone Mirror
iPhone Mirror 是面向 iPhone 应用开发者的 MCP 服务,可在真机和模拟器上测试应用。它将 Xcode 构建与测试流程和镜像 iPhone 的视觉操作结合,无需在手机上安装软件。
主要功能
- 01使用 Xcode 构建、测试、安装和启动
- 02通过点按、滑动和输入操作镜像 iPhone
- 03使用 OCR 和图像匹配读取屏幕
- 04自动化模拟器和已连接设备
- 05等待指定文本或屏幕变化
适用场景
- 01在已配对的 iPhone 上构建并测试应用
- 02通过镜像屏幕检查和操作应用
- 03在自动化测试中验证可见界面变化
MCP 相关
通过 stdio 向 MCP 客户端提供 63 个工具,用于 iPhone 镜像、Xcode 流程、设备控制和模拟器操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
iphone-mirror-mcp
让任何大模型都能操控真实 iPhone。
一个 MCP 服务,通过 macOS 内置的 iPhone Mirroring 应用控制实体 iPhone,并自动执行 Xcode 开发测试——在模拟器和设备上构建、 测试、安装并启动,然后通过点击、滑动、输入和 OCR 操作镜像屏幕上的应用。
无需越狱。无需在手机上安装任何内容。无需 XCUITest target。
run_on_iphone (build → install → launch on the paired iPhone)
→ screenshot / read_screen / tap / paste_text drive the app on-device
→ wait_for_text / tap with expect / sim_log assert what the user sees
63 个工具。 可与 Claude、GPT、Gemini、本地模型配合使用——任何支持通过 stdio 进行 MCP 通信的模型都可以。
快速开始
git clone https://github.com/nickatnight96/iphone-mirror-mcp.git
cd iphone-mirror-mcp
./install.sh
安装程序会检查你的机器、构建发布二进制文件、端到端验证权限,并输出客户端的准确配置。
接下来,以 Claude Code 为例:
claude mcp add --scope user iphone-mirror -- ~/.local/bin/iphone-mirror-mcp
或用于其他 MCP 客户端:
{
"mcpServers": {
"iphone-mirror": {
"command": "/Users/YOU/.local/bin/iphone-mirror-mcp"
}
}
}
向模型提问:
截取我的 iPhone 屏幕,并告诉我当前打开了哪个应用。
如果你的客户端支持安装 MCP bundle,且你想跳过工具链,也可以从
最新发布版本
获取 .mcpb bundle(请参阅注意事项——它经过临时签名,但未经公证)。
要求
- macOS 15+,并支持 iPhone Mirroring;与一台 iOS 18+ iPhone 配对(在附近、已锁定,且使用同一 Apple Account)
- Xcode——用于
xcode_*、device_*和sim_*工具 - 授予启动服务的应用辅助功能和屏幕录制权限(你的终端,或托管客户端的桌面应用)——详情
一次性检查所有项目:
iphone-mirror-mcp doctor
它会测试全部四项权限、截取真实画面,并确认 macOS 确实在传递模拟输入,而不只是读取权限标记。先运行此检查,再排查其他问题。
功能
| 会话与健康状态 | status、doctor、mirror_launch、mirror_restart |
| 查看屏幕 | screenshot、annotated_screenshot(为每个元素绘制方框并编号)、read_screen(OCR,包含可点击的中心点)、find_text、find_image、record_screen |
| 正确等待 | wait_for_text、wait_for_screen_change、scroll_to |
| 输入 | tap(使用 expect 验证)、double_tap、long_press、swipe、drag、type_text、paste_text(通过剪贴板输入 emoji/CJK)、read_clipboard、press_key、shake、batch |
| 导航 | home、app_switcher、spotlight、launch_app、open_url |
| 通知 | notifications、notification_click |
| Xcode | xcode_list、xcode_build、xcode_test、xcresult_attachments |
| 真机 | run_on_iphone、devices、device_install、device_launch、device_info、device_apps、device_uninstall |
| 模拟器 | run_on_sim,以及完整的 simctl 工具集 — 推送、GPS、隐私授权、状态栏、外观、日志、媒体 |
→ 完整工具参考 — 全部 63 个工具及其参数,直接从服务自身的目录生成,因此内容始终同步。
坐标约定
每个 x/y 都是最新截图中的像素位置,原点位于左上角。输入时会重新查询窗口边界,并将像素位置按比例映射到当前边界中 — 因此,即使截图和点击之间窗口发生移动或调整大小,点击仍会落在正确位置。
文档
| 入门指南 | 安装 → 权限 → 首次点击 |
| 连接客户端 | Claude Code、Claude Desktop、Cursor、VS Code、Zed、Codex、Windsurf |
| 工具参考 | 全部 63 个工具及其参数 |
| 操作指南 | 操控应用、设备端测试循环、通知、批量操作 |
| 故障排除 | 症状 → 原因 → 解决方法 |
| 架构 | 输入实际上如何传达到手机 |
| 限制 | 本工具确实无法实现的功能 |
已知限制
均经过测试,而非猜测 — 完整列表解释了原因。
- 无法模拟捏合和旋转手势。 触控板手势不会经过 CGEvent 管道;物理捏合期间,事件监听器看不到任何内容,因此无从复现。
- 一次只能连接一部手机 — 设备切换没有可脚本化的菜单。
- 手机解锁或被拿起时,会话会暂停。 这是 Apple 的设计;要恢复会话,必须重新锁定手机。
- 没有辅助功能树 — 元素模型基于 OCR 和模板匹配。无法访问 Face ID、控制中心和硬件按钮,受 DRM 保护的内容则会被截取为黑屏。
安全
镜像处于活动状态时,此服务可以查看并控制与 Mac 配对的 iPhone。请将此情况视为把已解锁的手机交给模型。 仅从你信任的客户端运行。
手机在被拿起或通过实体方式解锁的那一刻就会锁定会话,这是一个真正的紧急停止开关。paste_text 会短暂将文本放入 Mac 剪贴板,然后恢复原有内容;read_clipboard 会读取剪贴板内容。
请参阅 SECURITY.md,了解信任模型以及如何报告漏洞。
贡献
欢迎提交问题和拉取请求 — 请参阅 CONTRIBUTING.md。
scripts/run_tests.sh # build + unit/protocol tests + CLI smoke
MIRROR_MCP_LIVE=1 scripts/run_tests.sh # + live tests (real window, capture, input)
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。