Iphone Mirror
БесплатноНе проверенLet any LLM drive a real iPhone — MCP server for the macOS iPhone Mirroring app plus Xcode/simulator/device test automation. 63 tools, Swift, no jailbreak.
Описание
Let any LLM drive a real iPhone — MCP server for the macOS iPhone Mirroring app plus Xcode/simulator/device test automation. 63 tools, Swift, no jailbreak.
README
Let any LLM drive a real iPhone.
An MCP server that controls a physical iPhone through the built-in macOS iPhone Mirroring app, and automates Xcode development testing — build, test, install, and launch on simulators and devices, then operate the app on the mirrored screen with taps, swipes, typing, and OCR.
No jailbreak. Nothing installed on the phone. No 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 tools. Works with Claude, GPT, Gemini, local models — anything that speaks MCP over stdio.
Quick start
git clone https://github.com/nickatnight96/iphone-mirror-mcp.git
cd iphone-mirror-mcp
./install.sh
The installer checks your machine, builds a release binary, verifies permissions end to end, and prints the exact config for your client.
Then, for Claude Code:
claude mcp add --scope user iphone-mirror -- ~/.local/bin/iphone-mirror-mcp
Or for any other MCP client:
{
"mcpServers": {
"iphone-mirror": {
"command": "/Users/YOU/.local/bin/iphone-mirror-mcp"
}
}
}
Ask your model:
Take a screenshot of my iPhone and tell me what app is open.
Or grab the .mcpb bundle from the
latest release
if your client installs MCP bundles and you would rather skip the toolchain
(see the caveats — it is
ad-hoc signed but not notarized).
→ Full getting-started guide · per-client config
Requirements
- macOS 15+ with iPhone Mirroring, paired to an iOS 18+ iPhone (nearby, locked, same Apple Account)
- Xcode — for the
xcode_*,device_*, andsim_*tools - Accessibility and Screen Recording permission, granted to the app that launches the server (your terminal, or the desktop app hosting your client) — details
Check everything at once:
iphone-mirror-mcp doctor
It tests all four permissions, captures a real frame, and confirms macOS is actually delivering synthetic input — rather than just reading permission flags. Run it before you suspect anything else.
What it can do
| Session & health | status, doctor, mirror_launch, mirror_restart |
| See the screen | screenshot, annotated_screenshot (every element boxed + numbered), read_screen (OCR with tappable centers), find_text, find_image, record_screen |
| Wait properly | wait_for_text, wait_for_screen_change, scroll_to |
| Input | tap (with expect verification), double_tap, long_press, swipe, drag, type_text, paste_text (emoji/CJK via clipboard), read_clipboard, press_key, shake, batch |
| Navigate | home, app_switcher, spotlight, launch_app, open_url |
| Notifications | notifications, notification_click |
| Xcode | xcode_list, xcode_build, xcode_test, xcresult_attachments |
| Real devices | run_on_iphone, devices, device_install, device_launch, device_info, device_apps, device_uninstall |
| Simulators | run_on_sim plus the full simctl belt — push, GPS, privacy grants, status bar, appearance, logs, media |
→ Complete tool reference — all 63, with parameters, generated from the server's own catalog so it cannot drift.
Coordinate contract
Every x/y is a pixel position in the most recent screenshot, origin
top-left. At input time the window bounds are re-queried and the pixel maps
proportionally into the current bounds — so a window that moved or was resized
between screenshot and tap still receives the tap in the right place.
Documentation
| Getting started | Install → permissions → first tap |
| Connecting a client | Claude Code, Claude Desktop, Cursor, VS Code, Zed, Codex, Windsurf |
| Tool reference | All 63 tools and their parameters |
| Recipes | Driving an app, the on-device test loop, notifications, batching |
| Troubleshooting | Symptoms → causes → fixes |
| Architecture | How input actually reaches the phone |
| Limitations | What this genuinely cannot do |
Known limitations
Tested, not guessed — the full list explains why.
- Pinch and rotate cannot be synthesized. Trackpad gestures do not travel the CGEvent pipeline; an event tap sees nothing during a physical pinch, so there is nothing to reproduce.
- One phone at a time — device switching has no scriptable menu.
- The session pauses whenever the phone is unlocked or picked up. Apple's design; resuming needs it locked again.
- No accessibility tree — OCR and template matching are the element model. Face ID, Control Center, and hardware buttons are unreachable, and DRM content captures black.
Security
This server can see and control whatever iPhone the Mac is paired with while mirroring is active. Treat it like handing your unlocked phone to the model. Run it only from clients you trust.
The phone locks the session the moment it is picked up or unlocked physically,
which is a real kill switch. paste_text briefly places text on the Mac
clipboard and restores what was there; read_clipboard reads it.
See SECURITY.md for the trust model and how to report a vulnerability.
Contributing
Issues and pull requests welcome — see 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)
License
Установка Iphone Mirror
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/nickatnight96/iphone-mirror-mcpFAQ
Iphone Mirror MCP бесплатный?
Да, Iphone Mirror MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Iphone Mirror?
Нет, Iphone Mirror работает без API-ключей и переменных окружения.
Iphone Mirror — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Iphone Mirror в Claude Desktop, Claude Code или Cursor?
Открой Iphone Mirror на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Notion
Read and write pages in your workspace
автор: NotionLinear
Issues, cycles, triage — from Claude
автор: LinearGoogle Drive
Search and read your Drive files
автор: Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
автор: mindsdbfulcradynamics/fulcra-context-mcp
MCP server for accessing personal health and biometric data including sleep stages, heart rate, HRV, glucose, workouts, calendar, and location via the Fulcra Li
автор: fulcradynamicsaymericzip/intlayer
A MCP Server that enhance your IDE with AI-powered assistance for Intlayer i18n / CMS tool: smart CLI access, access to the docs.
автор: aymericziprinadelph/Agent-MCP
A framework for creating multi-agent systems using MCP for coordinated AI collaboration, featuring task management, shared context, and RAG capabilities.
автор: rinadelphWhenLabs-org/when
Developer toolkit: auto-detect stack for AI context files, catch port conflicts, validate .env schemas, spot docs drift, audit dependency licenses, and time cod
автор: WhenLabs-orgBeltran12138/wecom-docs-mcp-server
WeCom (Enterprise WeChat) document operations via MCP: create, read, and edit Docs and Smartsheets (9 tools). Fills the doc-CRUD gap — existing WeCom MCP server
автор: Beltran12138madbonez/caldav-mcp
Universal MCP server for CalDAV protocol integration. Works with any CalDAV-compatible calendar server including Yandex Calendar, Google Calendar (via CalDAV),
автор: madbonezCompare Iphone Mirror with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории productivity
