iphone-control MCP server
2026년 11월 14일 커밋단일 Rust binary를 사용하여 Linux 또는 macOS에서 USB를 통해 실제 iPhone 또는 iPad를 AI agent가 제어할 수 있게 합니다.
다른 이름 Derrors/iphone-control
- 스타
- 40
- Tools
- 10
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 14일
- 라이선스
- MIT
iphone-control MCP란?
iphone-control은(는) MCP server입니다. 단일 Rust binary를 사용하여 Linux 또는 macOS에서 USB를 통해 실제 iPhone 또는 iPad를 AI agent가 제어할 수 있게 합니다. 10개 도구를 제공합니다. 예: iphone_status, iphone_screenshot, iphone_list_elements.
프로젝트 README에서 생성된 요약
iphone-control MCP server 정보
이 단일 Rust binary를 사용하면 Linux 또는 macOS에서 AI agent를 통해 실제 iPhone 또는 iPad를 제어할 수 있습니다. USB를 통해 연결을 관리하므로 Xcode, 유료 개발자 계정 또는 탈옥이 필요하지 않습니다. 서버는 장치 연결을 처리하는 롱러닝 데몬을 실행하며, Claude Code 또는 Codex와 같은 MCP client에 17개의 특화된 도구를 제공합니다.
사용자는 iphone_tap, iphone_swipe, iphone_type_text를 포함한 다양한 명령을 통해 장치와 상호작용할 수 있습니다. 이 시스템은 agent가 UI element tree를 읽거나, 특정 앱을 실행하거나, iphone_batch를 사용하여 단일 호출로 최대 20단계의 작업을 수행할 수 있도록 하여 복잡한 워크플로우를 지원합니다. 또한 기본 WebDriverAgent 연결이 실패할 경우 Apple의 CoreDevice HID 서비스로 자동 전환되는 기능도 갖추고 있습니다.
설정을 위해서는 데이터 케이블로 연결된 iOS 17 이상 장치와 무료 Apple ID가 필요합니다. 서버는 7일 프로필 만료 전 WebDriverAgent를 재서명하는 것을 포함하여 연결의 생명주기를 관리하며, doctor 명령을 통해 USB 또는 소프트웨어 계층의 문제를 해결할 수 있는 진단 기능을 제공합니다.
활용 사례
- 1모바일 앱 워크플로우 자동화AI agent에게 특정 애플리케이션을 열고 스톱워치를 시작하는 것과 같은 일련의 상호작용을 수행하도록 지시할 수 있습니다.
- 2일괄 UI 작업 수행개발자는 통신 지연 시간을 줄이기 위해 최대 20개의 연속된 명령 그룹을 장치에 보낼 수 있습니다.
- 3텍스트 기반 UI 요소 상호작용agent는 정확한 화면 좌표 없이도 앱 내의 특정 버튼이나 레이블을 찾아 탭할 수 있습니다.
- 4장치 상태 및 연결성 모니터링사용자는 진단 도구를 실행하여 전체 연결 스택의 문제를 식별하고 수정할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
iphone-control MCP 도구 10
README에서 감지됨iphone_statusiphone_screenshotiphone_list_elementsiphone_type_textiphone_press_buttoniphone_open_urliphone_wait_foriphone_batchiphone_list_devicesiphone_select_device
| iphone_status | — | |
| iphone_screenshot | — | |
| iphone_list_elements | — | |
| iphone_type_text | — | |
| iphone_press_button | — | |
| iphone_open_url | — | |
| iphone_wait_for | — | |
| iphone_batch | — | |
| iphone_list_devices | — | |
| iphone_select_device | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능derrors/iphone-control is public and reachablegithub.com/derrors/iphone-control ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-13github.com/derrors/iphone-control ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음10 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Overview
AI agents can drive browsers and desktops, but a real iPhone is harder: Apple's automation tools need a Mac and Xcode, and the open-source alternatives come as separate pieces that each need their own setup, signing and babysitting.
iphone-control does it all in one Rust binary on Linux or macOS, built on idevice, Impactor and WebDriverAgent. A long-running daemon owns the phone — tunnel, HID session, WebDriverAgent session — and exposes it to Claude Code or any MCP client. It succeeds iphone-control-toolkit and keeps its MCP tools compatible.
Features
- See and touch the screen: screenshots with region zoom, tap, swipe, long-press, text input (including Chinese), hardware buttons
- Work with UI elements: read the element tree, tap by text (on a part not covered by floating bars or the keyboard), launch and close apps, open URLs, wait for text to appear
- Fewer round trips: any action can return the resulting screen once it has settled, flagging pages still loading and blocking alerts;
iphone_batchruns up to 20 steps in one call - Automatic fallback: when WebDriverAgent is down, screenshots, taps, swipes and keys switch to Apple's CoreDevice HID service (iOS 27+)
- Runs unattended: recovers from replugging, phone reboots and WebDriverAgent crashes; re-signs WebDriverAgent with a free Apple ID before the 7-day profile expires
- Alerts: Telegram or Bark notifications when re-signing fails, the Apple ID session expires, the phone goes offline, or a passcode is needed after a reboot
- Optional auto-unlock: every passcode digit is verified, and a wrong passcode disables auto-unlock after one attempt
- Diagnostics:
doctorchecks every layer from USB to WebDriverAgent and tells you how to fix each failure
Quick Start
You need an iPhone or iPad on iOS 17+ connected by a data cable, a free Apple ID (use a dedicated one), and an Apple Silicon Mac or a Linux machine.
macOS or Linux, one command (upstream example; for a fork, use the installer asset from its own signed release)
curl -fsSLo iphone-control-install.sh https://github.com/Derrors/iphone-control/releases/latest/download/install.sh && sh iphone-control-install.sh
It downloads the release for your machine, verifies the Ed25519 release manifest and archive SHA-256 (Python 3 and OpenSSL 3 required), installs iphone-control into ~/.local/bin and runs the daemon as a per-user service that starts at login (launchd on macOS, systemd on Linux). Run it as your regular user. Use iphone-control update to upgrade this managed service. Running sh iphone-control-install.sh --uninstall removes it and keeps your data.
Upstream v0.2.0 predates the signed installer. To install that release or migrate an existing script installation, follow the v0.2.0 instructions.
Or with a package manager
# macOS or Linux (Homebrew)
brew install derrors/tap/iphone-control && brew services start iphone-control
# Debian 12+ / Ubuntu 22.04+: the .deb from Releases (amd64 or arm64), pulls in usbmuxd
sudo apt install ./iphone-control_<version>_amd64.deb && systemctl --user enable --now iphone-control
On Linux the system usbmuxd is needed (sudo apt install usbmuxd; the .deb brings it). On an Intel Mac, build from source.
Then, on every system
Connect the phone with the cable and run:
iphone-control
The first time, it walks you through setup in the terminal, one step at a time: language, proxy, the background service, pairing, Developer Mode, Apple ID, signing and installing WebDriverAgent, the optional auto-unlock and notifications, and registering with Claude Code and Codex. Do what it asks on the phone. Steps already done are skipped; afterwards, iphone-control just shows the status.
Then open a new Claude Code or Codex session and ask, for example, “Open Clock, switch to the stopwatch and start it.” Or run iphone-control viewer for the control page in the browser (http://127.0.0.1:8200), where you can act on the live screen and hand tasks to a local Claude Code or Codex.
More: step-by-step guide · build from source · macOS guide · other MCP clients.
MCP Tools
| Tool | Description |
|---|---|
iphone_status |
Connection, lock state, foreground app, screen size |
iphone_screenshot |
Screenshot scaled to points; pass x/y/width/height to zoom into a region |
iphone_list_elements |
Elements with text and their center coordinates; filter by text or type |
iphone_tap / iphone_tap_element |
Tap by coordinates or by element text |
iphone_swipe / iphone_long_press |
Swipe (returns once the list stops), long-press |
iphone_type_text |
Type into the focused field; reads it back and fixes dropped characters |
iphone_press_button |
home, volume_up, volume_down, lock |
iphone_list_apps / iphone_launch_app / iphone_terminate_app |
Manage apps by name or bundle ID |
iphone_open_url |
Open a URL or URL scheme |
iphone_wait_for |
Wait until some text appears instead of polling with screenshots |
iphone_batch |
Run up to 20 steps in one call, stopping at the first error |
iphone_list_devices |
Every iPhone/iPad on USB; marks the one being controlled |
iphone_select_device |
Switch to another device, or back to automatic choice |
IPHONE_CONTROL_DEV_TOOLS=1 adds six opt-in developer tools: logs, crash reports, installing and removing apps, and two for Web Inspector (list web pages, run JavaScript in them). They are off by default; read the security notes before turning them on.
Action tools accept then: "elements" | "screenshot" to return the screen after the action. Screenshot pixels are tap coordinates, so the agent can tap what it sees. Games, maps and video players draw their own UI and have no element tree — use screenshots and coordinates there. Full parameters: docs/tools.md.
Tool texts, results, CLI output and logs are in Simplified Chinese by default; set IPHONE_CONTROL_LANG=en for English (configuration).
Everyday Commands
| Command | What it does |
|---|---|
| (none) | The first time, the setup guide; after that, the status (and starts the service if it isn't running) |
setup [--reconfigure] |
Run the setup guide again; --reconfigure redoes one part (language, proxy, service, Apple ID, phone, auto-unlock, notifications, MCP registration) |
service install|uninstall|start|stop|restart|status |
The background service (launchd on macOS, systemd user unit on Linux) |
daemon |
The long-running daemon; the service runs it, or start it by hand |
mcp |
The MCP server; your AI client starts it |
status |
Daemon state, time left on the signing profile, recent log |
doctor |
Layer-by-layer health check with a fix for each failure |
login |
Sign in to the Apple ID again when the session expires |
sign |
Sign and install WebDriverAgent now |
resign [--force] |
Re-sign WebDriverAgent if it expires soon (or now) |
passcode set|clear |
Turn auto-unlock on or off for a device (passcodes are kept per device) |
unlock-reset |
Turn auto-unlock back on after it was disabled |
devices / select <UDID|name|auto> |
List connected devices / switch which one is controlled |
notify-test [event] |
Send test notifications |
mcp-config |
Print the command that registers the MCP server |
wda-bridge [--port] |
Expose WebDriverAgent on 127.0.0.1 for other tools; stop it when done |
viewer [--port] |
Control page on 127.0.0.1:8200: live screen you can tap, swipe and type on, device panel, and AI tasks run by a local Claude Code or Codex; stop it when done |
All commands and options: CLI reference.
Run iphone-control update to check for a stable release. When an upgrade is available, it uses the signed update for a managed service, Homebrew for a tap installation, or apt for a Debian package. It reports when you're up to date. Source installations follow the source upgrade instructions.
To check versions, open About & updates in Viewer or run iphone-control update check --json. Managed services can opt in to signed patches while idle with iphone-control update policy auto-patch. Use iphone-control update policy notify to return to checks only. Read the upgrade notes before upgrading.
Uninstall with sh iphone-control-install.sh --uninstall, brew uninstall iphone-control or sudo apt remove iphone-control; your data stays. Settings live in ~/.config/iphone-control/env: the guide writes it, and after editing it by hand run iphone-control service restart — see configuration. All state lives in ~/.local/share/iphone-control: the Apple ID session and signing key, and the passcode if auto-unlock is on. Back it up; never commit or share it.
Documentation
| Guide | What is it · Limitations · Getting started · AI clients · Tools |
| Usage | Configuration · CLI · Several devices · Notifications · Auto-unlock |
| Deployment | Install · Build from source · macOS · Data and backups |
| Problems | FAQ · Troubleshooting · Issues |
| Security | SECURITY.md: what is stored, who can reach it, reporting vulnerabilities |
| Development | Contributing · Architecture · Decisions · Changelog |
| Licensing | THIRD_PARTY.md: vendored components, versions and licenses |
The architecture and design documents are in Chinese for now.
[!WARNING] This tool can fully control your phone. An agent may tap payment, delete or send buttons — keep tool-call confirmation on in your MCP client. Not affiliated with Apple; use it only with devices and accounts you own. Read SECURITY.md before enabling auto-unlock.
Contributing
Issues and pull requests are welcome — see the contributing guide.
License
MIT. Third-party components: THIRD_PARTY.md.
iphone-control MCP 질문
iphone-control MCP는 어떤 도구를 제공하나요?
10개 도구를 제공합니다. 예: iphone_status, iphone_screenshot, iphone_list_elements, iphone_type_text, iphone_press_button.
Mac이나 Xcode가 필요한가요?
아니요, Xcode나 유료 개발자 계정 없이 단일 Rust binary만으로 Linux 또는 macOS에서 작동합니다.
지원되는 운영체제는 무엇인가요?
Linux와 macOS를 지원합니다.
무료 Apple ID를 사용할 수 있나요?
네, 무료 Apple ID를 사용하여 WebDriverAgent에 서명하고 설치할 수 있습니다.
AI가 무엇을 하고 있는지 어떻게 확인하나요?
'iphone-control viewer'를 실행하면 브라우저에 제어 페이지가 열리며, 여기서 실시간 화면을 확인하고 상호작용할 수 있습니다.