/ 目錄 / 演練場 / iOS Simulator MCP
● 社群 joshuayoes ⚡ 即開即用

iOS Simulator MCP

作者 joshuayoes · joshuayoes/ios-simulator-mcp

讓 Claude 驅動 xcrun simctl + idb — 啟動模擬器、安裝 .app、點擊、輸入、截圖、錄製影片,無需切換到 Xcode。

iOS Simulator MCP 封裝了 Apple 的 xcrun simctl 以及 Facebook 的 idb,讓 Claude 可以操控 iOS 模擬器。非常適合介面測試迴圈、bug 重現,以及為工單擷取截圖/錄製影片 — 這類在 Xcode 與聊天視窗之間切換很繁瑣的工作。

為什麼要用

核心特性

即時演示

實際使用效果

ios-simulator-mcp.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ios-simulator-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ios-simulator-mcp",
      "command": "npx",
      "args": [
        "-y",
        "ios-simulator-mcp"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "ios-simulator-mcp": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "ios-simulator-mcp"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add ios-simulator-mcp -- npx -y ios-simulator-mcp

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: iOS Simulator MCP

跨裝置產生 App Store 截圖

👤 準備發版的 iOS 開發者 ⏱ ~25 min intermediate

何時使用: 你需要在亮色 + 暗色模式下,快速完成 6.5"、6.7"、iPad 的截圖。

前置條件
  • Xcode + simctl — 標準 Xcode 安裝
  • 已安裝 idbbrew tap facebook/fb && brew install idb-companion
  • 已建置的 .app 套件xcodebuild -scheme YourApp -destination 'platform=iOS Simulator' build
步驟
  1. 設定裝置
    啟動 iPhone 15 Pro Max 和 iPad Pro 13 吋模擬器。準備好後列出。✓ 已複製
    → list_simulators 顯示兩者均已啟動
  2. 設定狀態列
    將兩台的狀態列設為 9:41、滿電、滿格訊號。App Store 風格。✓ 已複製
    → status_bar_set 成功;外觀乾淨
  3. 安裝 + 截圖
    在兩台上安裝 MyApp.app。啟動後,依序瀏覽「首頁 → 個人資料 → 設定」,在亮色和暗色模式下各截一張。儲存到 /screenshots/<device>/<mode>/。✓ 已複製
    → 每台裝置一個資料夾,各有亮色 + 暗色的每個畫面

結果: 約 10 分鐘內完成完整的 App Store 截圖包,無需手動擷取。

注意事項
  • 模擬器已啟動但 App 啟動時崩潰 — 取得 simctl 日誌;檢查是否有缺少的授權
  • Dynamic Island 內容遮蓋了狀態列調整 — 在 Pro Max 上,status_bar_set 仍在 Dynamic Island 下方生效
搭配使用: filesystem

錄製介面 bug 的乾淨重現影片

👤 iOS 開發者/QA ⏱ ~10 min beginner

何時使用: Bug 只在模擬器中重現;你想要一段影片附到工單上。

步驟
  1. 開始錄製
    啟動 iPhone 15。安裝 build.app。開始螢幕錄製。✓ 已複製
    → record_video_start 回傳錄製 ID
  2. 重現
    開啟應用程式。點擊「個人資料」,然後點擊編輯鉛筆。在姓名欄位輸入「Test」。點擊「儲存」。等待 2 秒。✓ 已複製
    → 操作序列已執行;若可重現,bug 應已出現
  3. 停止並附加
    停止錄製,另存為 /tickets/ 下的 bug-1234.mov。✓ 已複製
    → MOV 已儲存

結果: 重現影片已準備好附到工單。

注意事項
  • 點擊未命中,因為版面與預期不同 — 先使用 describe_ui 找到當前的框架
搭配使用: filesystem · github

每次重建後執行冒煙測試迴圈

👤 處於緊密建置/測試循環的 iOS 開發者 ⏱ ~15 min intermediate

何時使用: 你正在迭代某個畫面,想在每次重建後執行 30 秒的冒煙測試。

步驟
  1. 重建 + 重新安裝
    為 scheme MyApp Debug 執行 xcodebuild,然後在已啟動的模擬器上重新安裝。✓ 已複製
    → 新套件安裝成功
  2. 驅動冒煙路徑
    開啟應用程式,以測試帳號登入,瀏覽到我正在開發的畫面,截圖。✓ 已複製
    → 截圖看起來正確;日誌中無崩潰

結果: 更快的建置/測試循環,無需手動點擊。

注意事項
  • 登入流程有驗證碼 — 使用可繞過驗證碼的建置,或對驗證流程進行存根

組合

與其他 MCP 搭配,撬動十倍槓桿

ios-simulator-mcp + filesystem

將截圖儲存到你的倉庫

擷取所有主要畫面的截圖,儲存到 /design/screenshots/。✓ 已複製
ios-simulator-mcp + github

開一個附有重現影片的 bug issue

錄製 bug,然後建立一個附有 MOV 和重現步驟的 GitHub issue。✓ 已複製
ios-simulator-mcp + xcodebuildmcp

建置後立即執行冒煙測試

XcodeBuild:建置 Debug。Sim:安裝 + 啟動 + 截圖。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
list_simulators (none) 第一步 free
boot_simulator device_id: str 開啟模擬器 free
install_app device_id, path: str (.app) 推送建置版本 free
launch_app device_id, bundle_id: str 開啟應用程式 free
tap device_id, x, y 點擊座標 free
type_text device_id, text: str 輸入文字 free
screenshot device_id, path? 擷取狀態 free
record_video_start device_id, path: str 開始錄製影片 free
record_video_stop recording_id 結束錄製 free
describe_ui device_id 尋找點擊座標 free
status_bar_set device_id, time, battery, signal 乾淨的 App Store 截圖 free

成本與限制

運行它的成本

API 配額
無 — 本機
每次呼叫 Token 數
100–800;截圖以路徑引用,不嵌入
費用
免費開源
提示
使用 describe_ui 一次找到點擊座標,而非反覆猜測

安全

權限、密鑰、影響範圍

最小權限: 執行 simctl + idb
憑證儲存: 無 — 但模擬器中的 App 資料是你的
資料出站: 僅限本機
切勿授予: root/核心存取

故障排查

常見錯誤與修復

找不到 idb

brew tap facebook/fb && brew install idb-companion;同時執行 pip install fb-idb

驗證: idb list-targets
點擊未命中

使用 describe_ui;座標因裝置大小而異;元素可能在 sheet 中

模擬器已啟動但畫面全黑

關閉 + 重置模擬器;有時 Xcode runtime 需要重新下載

錄製損毀

直接使用 simctl io recordVideo;idb 的封裝在 macOS 睡眠後偶爾失敗

替代方案

iOS Simulator MCP 對比其他方案

替代方案何時用它替代權衡
XcodeBuildMCP(Sentry)你想要將建置與模擬器整合在一個 MCP 中較重;範圍更廣
Maestro你想要完整的介面測試 DSL預設不由 LLM 驅動
Xcode Cloud / Fastlane正式 CI不同層次;非互動式

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills