Canlah Skills Radar
Hephaestus · 页面优化工程师

iPhone Control

blitzdotdev/iphone-mcp
✓ I/O · 10认领这个员工

Provides direct control over iOS simulators and physical iPhones through a unified interface that combines Facebook's idb for simulators and WebDriverAgent for physical devices. Features automated device discovery, real-time screen streaming via WebSocket for physical devices, and comprehensive interaction tools including tap, swipe, text input, button presses, screenshot capture, app launching, and UI element scanning. Supports both global and project-scoped setup with auto-configuration for Claude Code, Cursor, Codex, and OpenCode.

真实 I/O · 已连通 ✓

启动 server · tools/list · 10 个工具 · @blitzdev/iphone-mcp

下面每个工具的字段、类型、必填项,都是我们真的把 server 启动、tools/list 拉回来的原始 JSON Schema —— 真实的工具契约。注意:下方「示例调用」是按 schema 自动生成的演示,不是真实调用的返回。

describe_screen

Get the full UI element hierarchy of the current screen. Returns ALL element types (buttons, text, images, containers, etc.) that are currently visible on screen. Filters applied automatically: - Off-screen elements are excluded - Generic unlabeled container nodes are excluded For finding tappable elements specifically, prefer scan_ui instead.

Input(真实 schema)
udidstring
Device identifier (default: "booted" for current simulator)
nestedboolean
Include nested element hierarchy
示例调用
{
  "tool": "describe_screen",
  "arguments": {
    "udid": "…",
    "nested": true
  }
}
device_action

Execute a single device action on the iPhone. Actions available: - tap: Tap at coordinates { x, y, duration? } - swipe: Swipe gesture { fromX, fromY, toX, toY, duration?, delta? } - button: Press button { button: 'HOME'|'LOCK'|'SIDE_BUTTON'|'APPLE_PAY'|'SIRI', duration? } - input-text: Type text { text } - key: Press key { key: number (HID keycode) | string (character), duration? } - key-sequence

Input(真实 schema)
actionstringrequired
Type of action
paramsobjectrequired
Action parameters (depends on action type)
udidstring
Device identifier (default: "booted")
describe_afterobject
Optional: describe screen after action
示例调用
{
  "tool": "device_action",
  "arguments": {
    "action": "tap",
    "params": {}
  }
}
device_actions

Execute multiple device actions in sequence on the iPhone. Each action in the array should have: - action: 'tap' | 'swipe' | 'button' | 'input-text' | 'key' | 'key-sequence' - params: Action-specific parameters Use describe_after to see the screen state after all actions complete.

Input(真实 schema)
actionsarrayrequired
Array of actions to execute in sequence
udidstring
Device identifier (default: "booted")
describe_afterobject
Optional: describe screen after all actions
示例调用
{
  "tool": "device_actions",
  "arguments": {
    "actions": []
  }
}
get_screenshot

Capture a screenshot of the current iPhone screen. Returns the file path to a PNG image.

Input(真实 schema)
udidstring
Device identifier (default: "booted")
示例调用
{
  "tool": "get_screenshot",
  "arguments": {
    "udid": "…"
  }
}
scan_ui

Find interactive UI elements (buttons, links, text fields, switches, icons, etc.) on the current screen. Returns only tappable/interactive elements with their coordinates. Use the "query" parameter to search for a specific element by label (e.g. "Add to Cart", "Settings"). When a query is provided: - First searches visible interactive elements matching the query - If not found on-screen, searches

Input(真实 schema)
regionstringrequired
Screen region to scan
querystring
Search for elements matching this text (case-insensitive)
udidstring
Device identifier (default: "booted")
示例调用
{
  "tool": "scan_ui",
  "arguments": {
    "region": "full"
  }
}
list_devices

List all available iPhones and simulators.

Input(真实 schema)
无参数
示例调用
{
  "tool": "list_devices",
  "arguments": {}
}
get_execution_context

Get the current execution context — which iPhone(s) or simulators are available. Call this first to discover available devices. Returns: - target: 'simulator' — one simulator booted, use the returned udid - target: 'device' — one physical device connected, use the returned udid. Inform user about viewer_url for screen viewing. - target: 'ambiguous' — multiple devices found. Ask the user which one

Input(真实 schema)
无参数
示例调用
{
  "tool": "get_execution_context",
  "arguments": {}
}
setup_device

Build, install, and launch WebDriverAgent on a physical iPhone. This is required before any other tool can interact with a physical device. Call this when get_execution_context shows a physical device with wdaRunning: false. The process takes 1-3 minutes (building WDA, installing on device, establishing connection). Prerequisites: - iPhone connected via USB and trusted - Developer Mode enabled o

Input(真实 schema)
udidstringrequired
Physical device UDID from list_devices or get_execution_context
示例调用
{
  "tool": "setup_device",
  "arguments": {
    "udid": "…"
  }
}
launch_app

Launch an app on the iPhone by bundle ID.

Input(真实 schema)
bundleIdstringrequired
The bundle identifier of the app to launch (e.g. "com.apple.mobilesafari")
udidstring
Device identifier (default: "booted")
示例调用
{
  "tool": "launch_app",
  "arguments": {
    "bundleId": "…"
  }
}
list_apps

List installed apps on the iPhone.

Input(真实 schema)
udidstring
Device identifier (default: "booted")
示例调用
{
  "tool": "list_apps",
  "arguments": {
    "udid": "…"
  }
}

综合分

Canlah Score38
归属岗位Hephaestus · 页面优化工程师
岗位分值×1.10
★ Stars83
↓ 下载量216
工具数(实测)10
npm 包@blitzdev/iphone-mcp
✓ 已连通:字段来自真实的 tools/list(工具清单)。工具本身尚未真实调用。

效果测评卡

进行中 · 待运行
任务成功率
输出质量 (LLM 评审)
延迟
成本 / token
稳定性

真实 I/O 已解决「输入输出是什么」;下一步接 agent 真跑,量化「效果好不好」。

取用 / 安装

npx -y @blitzdev/iphone-mcp
同岗位其他 skill