Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Drive iPhone/iPad via Appium/WebDriverAgent from AI agents — safe-by-default, read-only by default.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
IOS_APPIUM_URL, IOS_UDID, IOS_MODEYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"ios": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-ios"
],
"env": {
"IOS_APPIUM_URL": "your-value",
"IOS_UDID": "your-value",
"IOS_MODE": "your-value"
}
}
}
}Run this in your terminal
claude mcp add ios --env IOS_APPIUM_URL=your-value --env IOS_UDID=your-value --env IOS_MODE=your-value -- npx -y @dockndevai/mcp-iosFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"ios": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-ios"
],
"env": {
"IOS_APPIUM_URL": "your-value",
"IOS_UDID": "your-value",
"IOS_MODE": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"ios": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-ios"
],
"env": {
"IOS_APPIUM_URL": "your-value",
"IOS_UDID": "your-value",
"IOS_MODE": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
IOS_APPIUM_URL envIOS_UDID envIOS_MODE envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account dockndevai, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.0) reached the registry 24 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Agent Data Tools: Utilities
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
103 tools: JSON repair, CSV, hashes, cron, dates, units, validators. 25 free calls.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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.
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:
| Route | Control level | Needs | Notes |
|---|---|---|---|
| Appium + WebDriverAgent (XCUITest) ✅ *(this server)* | Full UI: tap, type, swipe, read elements, screenshots, launch apps | A Mac with Xcode; iPhone connected by USB (or same-network); WDA signed to the device | The real "phone-use". Built for automation/QA — perfect for a personal agent on your own device. |
| Shortcuts | Run user-defined actions (set alarm, send message, toggles) | Shortcuts app; a URL/x-callback bridge | No arbitrary UI control, but great for safe, specific actions. Exposed here via run_shortcut. |
| MDM | Policy/config, app install | Enrollment | Device management, not interactive control. |
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.
brew install node
npm i -g appium appium driver install xcuitest
appium # starts the Appium server (default http://127.0.0.1:4723)
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.
| Concern | Flag | Default | Effect |
|---|---|---|---|
| What can the server do? | IOS_MODE | read-only | read-only exposes inspection only; read-write adds UI control; admin adds app management. Tools above the mode are never registered. |
| Which apps are in scope? | IOS_APP_ALLOWLIST | *(all)* | When set, launching/managing any other bundle ID is refused. |
| Which apps are read-only forever? | IOS_PROTECTED_APPS | com.apple.Preferences, com.apple.springboard | Inspectable/launchable but never terminated, reset, or uninstalled. |
| Can it install/terminate/reset apps? | IOS_ALLOW_MANAGE | false | The admin tools need this and admin mode; otherwise they aren't even advertised. |
| Interactive confirmation | *(automatic)* | — | terminate_app and reset_app prompt the human to approve the exact bundle ID via MCP elicitation before running; clients without elicitation fall back to the IOS_ALLOW_MANAGE gate. |
| Preview without touching the device | IOS_DRY_RUN | false | Write/admin tools validate + log intent, then return. |
| Audit trail | IOS_AUDIT_LOG | true | Emits a JSON line to stderr per guarded operation. |
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.
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.
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 mcp add ios -e IOS_APPIUM_URL="http://127.0.0.1:4723" -e IOS_MODE="read-only" -- npx -y @dockndevai/mcp-ios
Claude Desktop · Cursor · Windsurf — same block in claude_desktop_config.json, .cursor/mcp.json, or ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": { "ios": { "command": "npx", "args": [ "-y", "@dockndevai/mcp-ios" ], "env": { "IOS_APPIUM_URL": "http://127.0.0.1:4723", "IOS_MODE": "read-only" } } } }
VS Code (GitHub Copilot, Agent mode) — in .vscode/mcp.json:
{
"servers": { "ios": { "type": "stdio", "command": "npx", "args": [ "-y", "@dockndevai/mcp-ios" ], "env": { "IOS_APPIUM_URL": "http://127.0.0.1:4723", "IOS_MODE": "read-only" } } } }
read-write)read-write)npm install
npm run build node dist/index.js # with the environment variables set, and appium running
npm run dev
npm test # security policy + elicitation confirmation (pure; no device needed) npm run typecheck
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.
This server ships a server.json for the official MCP registry and an mcpName for npm ownership validation. See [PUBLISHING.md](PUBLISHING.md) for publishing to npm and listing on the MCP registry, Smithery, Glama, Cursor, and PulseMCP.
MIT