
Mcp Ios
io.github.dockndevaiPublished by GitHub account dockndevaiv0.1.0Updated Oct 24, 2026
Drive iPhone/iPad via Appium/WebDriverAgent from AI agents — safe-by-default, read-only by default.
Overview
Drives a tethered iPhone or iPad through Appium and WebDriverAgent, letting an assistant inspect the screen and, when enabled, tap, type and launch apps.
- What you can do
- Inspect the device: list targets, read device info, current app and installed apps
- Capture the screen: take screenshots returned as images and read the element tree
- Control the UI: tap, swipe, type text, press hardware buttons, launch apps and open URLs
- Run Shortcuts actions on the device
- Manage apps in admin mode: install, terminate and reset apps, with confirmation for the destructive ones
- When to use it
- Useful when you want an assistant to look at or operate your own iPhone or iPad from a Mac, for example QA automation, reading what is on screen, or driving a few app actions on a device you control. Start in read-only mode if you only need inspection.
- Requirements
- Runs locally on a Mac with Node.js via npx, plus a running Appium server with the XCUITest driver, Xcode and command line tools, a WebDriverAgent build signed to the device, and an iPhone or iPad connected by USB or the same network with Developer Mode enabled. Configured through IOS_APPIUM_URL, IOS_UDID, IOS_MODE and related variables; no account or API key is declared.
Installation
In SourceWeft
- Open Mcp Ios in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
mcp-ios
[CI] [CodeQL] [License: MIT] [npm]
A Model Context Protocol server to drive an iPhone/iPad — the iOS counterpart to mcp-android. Read this first: iOS is fundamentally more locked down than Android or macOS, so this server takes the only legitimate route to real UI control.
The honest landscape
A stock iPhone does not allow a background app to see and control other apps the way Android's Accessibility service (or macOS) does. Apple's sandbox forbids it. So there is no on-device "iOS-use" agent like the Mac/Android ones. The viable routes, in order of capability:
This server implements the Appium/WDA route: it runs on a Mac, talks to a local Appium server driving WebDriverAgent on the tethered iPhone, and exposes the same safe-by-default MCP shape as the rest of the suite. A set_alarm-style action can also go through Shortcuts (run_shortcut) when the device isn't tethered.
If you want control from the phone itself with nothing attached, that isn't possible on iOS — use
mcp-androidon the Fold 7 for that experience, or the Shortcuts subset here.
Setup (Appium route)
The server creates the XCUITest session lazily on the first tool call, so it starts even before Appium or the device are up — the first call that needs the device returns a clear "start appium / sign WDA / connect the device" message if it can't connect.
Security model
Connection: IOS_APPIUM_URL (default http://127.0.0.1:4723), IOS_UDID (target device), IOS_BUNDLE_ID (optional default app). See .env.example for all variables and docs/CLIENTS.md for the full per-client install guide.
Tools
Read (read-only+): list_targets, device_info, screenshot, page_source (element tree), current_app, list_apps
Write (read-write+): tap, swipe, input_text, press_button (home/volume), launch_app, open_url, run_shortcut (via Shortcuts)
Admin (admin + IOS_ALLOW_MANAGE): install_app, terminate_app, reset_app (the last two confirm via elicitation; protected apps refused)
screenshot returns an MCP image content block so the agent can see the screen before acting.
Quickstart — add to your agent
Published on npm as @dockndevai/mcp-ios. No clone or build needed — your MCP client runs it on demand with npx. It must run on the Mac with a running Appium server. Start in read-only mode.
Claude Code (CLI)
Claude Desktop · Cursor · Windsurf — same block in claude_desktop_config.json, .cursor/mcp.json, or ~/.codeium/windsurf/mcp_config.json:
VS Code (GitHub Copilot, Agent mode) — in .vscode/mcp.json:
Example prompts
- "Take a screenshot of my phone and tell me what's on screen."
- "Open Safari and go to news.ycombinator.com." (needs
read-write) - "Run my 'Good morning' Shortcut." (needs
read-write)
Run from source (development)
Develop
The policy and elicitation tests are pure and run anywhere. The device-driving path can't be smoke-tested without a Mac + Xcode + signed WDA + a tethered iPhone, so it's built against your real device setup.
Publishing
This server ships a server.json for the official MCP registry and an mcpName for npm ownership validation. See PUBLISHING.md for publishing to npm and listing on the MCP registry, Smithery, Glama, Cursor, and PulseMCP.
License
MIT
Source: README.md at commit 913f23c
Tools
0Version history
1- v0.1.0LatestOct 14, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts