poki-mcp
Enables controlling a real iPhone over USB or Wi-Fi through MCP, with capabilities for screenshots, accessibility tree inspection, OCR, taps, typing, swipes, and device preparation.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Same MCP server, same tools, same Rust bridge as Poki. What changes is how the PC reaches the phone, where state lives, which OCR engine reads the screen, and which tools are left out because they need Xcode. You only need a Mac if pymobiledevice3 cannot download the developer disk image for your iOS version.
Let your agent install it
Paste this into Claude Code, Codex, or any agent that can run PowerShell:
Install https://github.com/scy7796/poki-for-windows following its root AGENTS.md, including the MCP skill, and stop whenever you need me to act.AGENTS.md walks the agent through prerequisites, the build, starting the service, registering your MCP client, and pairing the iPhone. It stops and asks you for the parts only you can do on the phone: Trust This Computer, Developer Mode, UI Automation.
Related MCP server: Zeptap
Install it yourself
You need Windows 11, Git, Node.js 24+, Python 3.11+, Rust (rustup), and the Apple Devices app from the Microsoft Store. ffmpeg is optional and only used for screen recording.
git clone https://github.com/scy7796/poki-for-windows.git
cd poki-for-windows
./bin/setup.ps1
python -m pip install --upgrade rapidocr onnxruntime-directml pymobiledevice3Open the Apple Devices app (it runs the USB service on 127.0.0.1:27015), plug in the iPhone, unlock it and tap Trust. Then:
node bin/prepare-device.mjs # checks Developer Mode, installs the developer disk image
npm start # keep this running
node bin/call.mjs list_devices # in a second windowRegister the server with your client, for example Claude Code:
claude mcp add --scope user poki-mcp -- node "$PWD\src\stdio.mjs"The full walkthrough, Wi-Fi setup included, is in docs/windows.md.
What was tested
All numbers below come from one Windows 11 PC (Intel Core Ultra 9) and one iPhone 16 Pro Max (iPhone17,2) on iOS 27.0.1. A different phone, iOS version, or network will give different timings.
What | Result |
| 136 tests: 90 pass, 0 fail, 46 skipped. Every skip names its reason; 35 need the iOS Simulator, which only Xcode provides. |
OCR, one 1320×2868 screenshot | 202 ms, 7 of 7 test strings read correctly (PP-OCRv6 on DirectML). Windows' built-in OCR took 203 ms and got 5 of 7. |
| 1282 ms, OCR included |
| 1637 ms from accessibility, 407 ms from OCR when accessibility is empty |
| 6.4 to 7.0 s; 5 of 5 taps delivered |
| 5.7 s / 2.8 s, cold |
Where a 6.4 s tap goes: 1.7 s is the touch itself (opening the media session, a fixed one-second warm-up, the touch), and about 3.9 s is reading the screen before and after to confirm what changed. Pass verify: false to tap, tap_text, swipe, scroll or batch_commands to skip that check when you don't need it. The saving has not been timed on the phone yet.
From a real task log: setting up an iOS Shortcuts automation took 38 UI steps, and 30 went through. Of the 8 that failed, 3 were the service being restarted underneath the task, 2 were taps over Wi-Fi before the audio fix (a refused audio stream no longer fails the input), 1 was another app holding the microphone, 1 was a tap_text that gave up before OCR finished (its time limit has been fixed since), and 1 reported an error after the text had been typed.
Known limits
Over Wi-Fi the five test taps were on a static title, so they prove delivery, not that a control reacted. A tap that changes the screen has not been timed over the network.
Any input fails with CoreDevice error 9022 while another app on the phone holds the microphone (a call, a voice note, a voice assistant). Free the microphone and it works again.
Poki's resident helper, which keeps one media session per device, listens on a Unix socket and does not build on Windows. Every input here opens its own session and waits one second.
start_simulator,shut_down_simulator,build_and_run,download_app_containerandopen_urlneed Xcode and are not offered. Crash reports are listed but not symbolicated.The developer disk image comes from pymobiledevice3's downloader, or from a Mac whose Xcode matches the phone's iOS version (
POKI_DDI_DIR).Not tested on macOS. This fork builds the bridge with the
rustcryptoTLS backend on every platform.
Privacy
The service listens on
127.0.0.1only, and every request needs the token in%LOCALAPPDATA%\PokiMCP\mcp.json. That folder also holds the Wi-Fi pairing records and recent frames. Treat it like a password.Poki sends screenshots, screen text and the accessibility tree to your MCP client when the agent calls a tool. From there they go to whichever model your client uses, so anything on the phone screen, notifications and verification codes included, can reach that provider. Poki itself uploads them nowhere.
Saved screenshots go to
Pictures\Poki MCPunless a tool call names another path.Network use: setup downloads from GitHub, crates.io and npm; the first OCR run downloads its models from modelscope.cn; pymobiledevice3 downloads Apple's developer disk image. Once a day the service asks GitHub's API, without credentials, for this repository's latest release. Set
POKI_NO_UPDATE_CHECK=1to turn that off.
Relationship to Poki
Poki is written by Joseph Zhou (@openmys on X) and contributors; its site is poki.bot. This repository keeps Poki's history and its AGPL-3.0-only license, and adds the Windows port on top of v0.1.1. Poki's maintainers have no Windows machine to test on, so they asked for the port to live in its own repository. I (Chenyu Shi) wrote the port and maintain it here. The fix that is not Windows-specific went back upstream as JosssphZhou/poki#39.
Poki's own READMEs are kept as README.poki.md and its translations (README.poki.zh-CN.md and so on). The port's design notes are in docs/windows.md.
Problems that only happen on Windows belong here. Problems you can reproduce on a Mac belong upstream.
License
AGPL-3.0-only, like Poki; see LICENSE. Poki is Copyright (c) 2026 Joseph Zhou and contributors. The Windows port is Copyright (c) 2026 Chenyu Shi. Open-source dependencies keep their own licenses; see THIRD_PARTY_NOTICES.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Let your AI agent control real iPhones: screenshots, tap, swipe, type and open apps.
remote debug iOS/Android/Unity/Godot/Flutter/RN/Web on real-device.ui-tree/screenshots/taps,tests.
Give an AI agent an iPhone to see, tap and type on over MCP. Free early access (Simulator).
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceControl a real, physical iPhone from an MCP client, enabling tapping, swiping, typing, reading messages, and navigating apps via Apple's UI-automation channel.1 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to operate a real iPhone from a Mac by reading the screen over USB and sending taps, swipes, typing, and app launches over Bluetooth, with every action returning a fresh screenshot so the agent can verify its work. Runs as a local MCP server, so agents can test iOS apps on physical devices and automate everyday phone tasks.43 npm10MIT
- AlicenseNot gradedqualityCmaintenanceEnables compatible AI apps to observe and control a locally connected iPhone through stdio MCP tools for screenshots, taps, swipes, long presses, text entry, key and button presses, app listing, and app launching, all reusing the console's device session.GPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables an MCP client on macOS to control a paired iPhone over Wi-Fi or USB through system developer services, without any app installed on the phone. Exposes tools for device discovery and connection, fresh screenshots, taps, drags, Home, app listing and launching, and Unicode text entry.GPL 3.0