iphone-mirror-mcp
Controls a physical iPhone running iOS via the macOS iPhone Mirroring app, enabling screen capture, OCR, touch input, typing, app navigation, and notification handling.
Automates Xcode workflows for iOS development, including building, testing, installing, and launching apps on simulators and real devices, as well as retrieving test results and managing device/simulator settings.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@iphone-mirror-mcpTake a screenshot of my iPhone and tell me what app is open."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
iphone-mirror-mcp
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 sees63 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.shThe 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-mcpOr 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
Related MCP server: SilbercueSwift
Requirements
macOS 15+ with iPhone Mirroring, paired to an iOS 18+ iPhone (nearby, locked, same Apple Account)
Xcode — for the
xcode_*,device_*, andsim_*toolsAccessibility 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 doctorIt 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 |
|
See the screen |
|
Wait properly |
|
Input |
|
Navigate |
|
Notifications |
|
Xcode |
|
Real devices |
|
Simulators |
|
→ 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
Install → permissions → first tap | |
Claude Code, Claude Desktop, Cursor, VS Code, Zed, Codex, Windsurf | |
All 63 tools and their parameters | |
Driving an app, the on-device test loop, notifications, batching | |
Symptoms → causes → fixes | |
How input actually reaches the phone | |
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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceA MCP server that enables LLMs to interact with iOS simulators through natural language commands.309Apache 2.0

SilbercueSwiftofficial
Alicense-qualityBmaintenanceHigh-performance MCP server for iOS development and test automation. Gives AI coding assistants direct access to iOS simulators with sub-20ms screenshots, UI interaction, building, testing, and an intelligent operator mode.7MIT- AlicenseAqualityCmaintenanceAn MCP server that lets an AI agent drive the iOS Simulator in a loop, enabling tapping, typing, swiping, reading the screen via the accessibility tree, and verifying app state.14MIT
- Alicense-qualityDmaintenanceA Model Context Protocol (MCP) server for iOS Simulator automation. Enables AI assistants to visually interact with iOS apps running in the simulator.371MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nickatnight96/iphone-mirror-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server