Mcp Ios

io.github.dockndevai由 GitHub 帳號 dockndevai 發布v0.1.0更新於 Oct 24, 2026

Drive iPhone/iPad via Appium/WebDriverAgent from AI agents — safe-by-default, read-only by default.

已驗證STDIO僅桌面瀏覽器自動化開發者工具

概覽

AI 產生的概覽

透過 Appium 與 WebDriverAgent 操控連接的 iPhone 或 iPad,讓助理查看螢幕,並在開啟後執行點擊、輸入與啟動應用程式等操作。

可以做什麼
  • 檢查裝置:列出目標裝置、讀取裝置資訊、目前應用程式與已安裝應用程式
  • 擷取螢幕:取得以圖片形式回傳的截圖並讀取元素樹
  • 控制介面:點擊、滑動、輸入文字、按下硬體按鍵、啟動應用程式與開啟網址
  • 在裝置上執行捷徑
  • 在管理員模式下管理應用程式:安裝、終止與重設應用程式,破壞性操作需人工確認
適用情境
適合在 Mac 上讓助理查看或操作自己的 iPhone 或 iPad,例如自動化測試、了解螢幕內容,或在自有裝置上執行少量應用程式操作。只需查看時建議使用唯讀模式。
執行需求
需在 Mac 上透過 npx 以 Node.js 本機執行,並需要執行中的 Appium 伺服器與 XCUITest 驅動、Xcode 及命令列工具、已簽署至裝置的 WebDriverAgent,以及以 USB 或同一網路連接並開啟開發者模式的 iPhone 或 iPad。透過 IOS_APPIUM_URL、IOS_UDID、IOS_MODE 等變數設定;未宣告帳號或 API 金鑰。
安裝前請注意
讀寫與管理員模式允許助理在真實裝置上點擊、輸入、啟動應用程式、開啟網址,以及安裝、終止或重設應用程式,可能變更或刪除應用程式資料。終止與重設僅在支援 elicitation 的用戶端中請求人工確認,否則依賴 IOS_ALLOW_MANAGE 開關。受保護的應用程式不會被終止或解除安裝,預設會將稽核記錄寫入 stderr。除非確實需要控制,否則請保持唯讀模式。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Ios,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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:

RouteControl levelNeedsNotes
Appium + WebDriverAgent (XCUITest) ✅ (this server)Full UI: tap, type, swipe, read elements, screenshots, launch appsA Mac with Xcode; iPhone connected by USB (or same-network); WDA signed to the deviceThe real "phone-use". Built for automation/QA — perfect for a personal agent on your own device.
ShortcutsRun user-defined actions (set alarm, send message, toggles)Shortcuts app; a URL/x-callback bridgeNo arbitrary UI control, but great for safe, specific actions. Exposed here via run_shortcut.
MDMPolicy/config, app installEnrollmentDevice 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-android on the Fold 7 for that experience, or the Shortcuts subset here.

Setup (Appium route)

bash
brew install nodenpm i -g appiumappium driver install xcuitest# Xcode + command line tools installed; sign WebDriverAgent to your device once (Xcode)# Connect the iPhone by USB, Trust the Mac, enable Developer Mode on the deviceappium        # 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.

Security model

ConcernFlagDefaultEffect
What can the server do?IOS_MODEread-onlyread-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_APPScom.apple.Preferences, com.apple.springboardInspectable/launchable but never terminated, reset, or uninstalled.
Can it install/terminate/reset apps?IOS_ALLOW_MANAGEfalseThe 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 deviceIOS_DRY_RUNfalseWrite/admin tools validate + log intent, then return.
Audit trailIOS_AUDIT_LOGtrueEmits 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.

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)

bash
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:

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:

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"      }    }  }}

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)

bash
npm installnpm run buildnode dist/index.js   # with the environment variables set, and `appium` running

Develop

bash
npm run devnpm 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.

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

來源:README.md,提交 913f23c

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.0最新Oct 14, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分