Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
57 tools for AI-powered iOS Simulator automation — tap, swipe, type, screenshots, and more.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"preflight-ios": {
"command": "npx",
"args": [
"-y",
"preflight-ios-mcp"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add preflight-ios -- npx -y preflight-ios-mcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"preflight-ios": {
"command": "npx",
"args": [
"-y",
"preflight-ios-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"preflight-ios": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"preflight-ios-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검
레지스트리 이름이 GitHub 계정 EthanAckerman-git 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.0.1)은 7개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, dotnet-mcp
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
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.
MCP server for .NET symbols, XAML, source generators, and restricted workspace edit
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
The most comprehensive MCP (Model Context Protocol) server for iOS Simulator automation. Gives AI agents like Claude, ChatGPT, Cursor, Windsurf, and any MCP-compatible tool full control over iOS Simulators — tap, swipe, type, read accessibility trees, inspect app data, capture screenshots, record video, manage devices, and debug apps in real time.
82 tools across 14 categories. Zero cursor interference — works silently in the background while you use your Mac.
Inspired by Playwright MCP for web automation — Preflight brings the same structured accessibility-first approach to iOS.
browser_snapshot, use simulator_snapshot to understand the screen without vision models.brew tap facebook/fb
brew install idb-companion pip3 install fb-idb
Without idb, the server falls back to CGEvent mouse injection (works but briefly moves your cursor).
npm install -g preflight-ios-mcp
git clone https://github.com/EthanAckerman-git/Preflight.git
cd Preflight npm install npm run build
Add your Python bin directory to
PATHif idb was installed via pip (e.g.,~/Library/Python/3.x/bin).
claude mcp add preflight -- npx preflight-ios-mcp
Or add to .mcp.json in your project root:
{
"mcpServers": { "preflight": { "command": "npx", "args": ["preflight-ios-mcp"], "env": { "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" } } } }
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):
{
"mcpServers": { "preflight": { "command": "npx", "args": ["preflight-ios-mcp"], "env": { "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" } } } }
Then in Cursor: Settings → MCP — verify "preflight" shows as connected.
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": { "preflight": { "command": "npx", "args": ["preflight-ios-mcp"], "env": { "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" } } } }
Then in Windsurf: Settings → Cascade → MCP — verify "preflight" appears.
Add to .vscode/mcp.json in your project:
{
"servers": { "preflight": { "command": "npx", "args": ["preflight-ios-mcp"], "env": { "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" } } } }
For Cline (VS Code extension), add to ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json:
{
"mcpServers": { "preflight": { "command": "npx", "args": ["preflight-ios-mcp"], "env": { "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" } } } }
Add to ~/.config/zed/settings.json:
{
"context_servers": { "preflight": { "command": { "path": "npx", "args": ["preflight-ios-mcp"], "env": { "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin" } } } } }
Preflight uses the standard MCP stdio transport. Configure your client to run:
npx preflight-ios-mcp
Set the PATH environment variable to include idb's location for cursor-free touch injection.
| Tool | Description |
|---|---|
simulator_screenshot | Take a JPEG screenshot optimized for AI chat (~200-400KB). Returns image inline. |
simulator_list_devices | List simulators with name, UDID, state, runtime. Filter: booted, available, all. |
simulator_list_apps | List installed apps with bundle IDs. Toggle includeSystem for system apps. |
simulator_app_info | Get app metadata: name, version, bundle path, data path, type. |
simulator_get_clipboard | Read the simulator's clipboard text. |
simulator_get_screen_info | Window geometry, coordinate mapping, scale factor. Debug tap accuracy. |
| Tool | Description |
|---|---|
simulator_tap | Tap at (x, y) in simulator screen points. Cursor-free via idb. |
simulator_swipe | Swipe between two points. Supports edge-swipe-back from x=1. |
simulator_long_press | Long press with configurable duration. Context menus, drag initiation. |
simulator_type_text | Type text into the focused field. |
simulator_press_key | Press special keys (return, escape, arrows, F-keys) with modifiers. |
simulator_navigate_back | Navigate back via Cmd+[. Workaround for edge-swipe limitations. |
| Tool | Description |
|---|---|
simulator_snapshot | Preferred over screenshots. Structured accessibility tree — roles, labels, values, positions. No vision model needed. Like Playwright's browser_snapshot. |
simulator_wait_for_element | Wait for an element to appear (by label, role, or text). Polls with configurable timeout. Like Playwright's browser_wait_for. |
simulator_element_exists | Quick boolean check: does an element matching criteria exist on screen right now? |
| Tool | Description |
|---|---|
simulator_boot | Boot a device by name or UDID. Optional waitForBoot polling. |
simulator_shutdown | Shut down a running simulator. |
simulator_erase | Factory reset — erases all content and settings. |
simulator_open_url | Open URLs or deep links (e.g., myapp://screen). |
simulator_open_simulator | Open the Simulator.app application. |
simulator_get_booted_sim_id | Get the UDID of the currently booted simulator. |
| Tool | Description |
|---|---|
simulator_launch_app | Launch by bundle ID with optional args and env vars. |
simulator_terminate_app | Force-terminate a running app. |
simulator_install_app | Install a .app bundle or .ipa from a local path. |
simulator_uninstall_app | Uninstall by bundle ID. |
| Tool | Description |
|---|---|
simulator_get_logs | Query device logs. Filter by process, subsystem, level, time range, message content. |
simulator_stream_logs | Live log streaming with start/read/stop lifecycle. Configurable buffer. |
simulator_get_app_container | Get filesystem path to app's bundle, data, or shared group container. |
simulator_list_app_files | Browse an app's Documents/, Library/, Caches/, tmp/ directories. |
simulator_read_app_file | Read plists (→JSON), SQLite (→schema), and text files from app data. |
simulator_get_crash_logs | Retrieve crash reports with stack traces and thread states. |
simulator_diagnose | Xcode version, disk usage, booted devices, system info. |
simulator_accessibility_audit | Full iOS accessibility tree — real UIButton/UILabel elements with labels, frames, roles. |
simulator_describe_point | Returns the accessibility element at given coordinates. |
| Tool | Description |
|---|---|
simulator_set_location | Set GPS coordinates (lat/lng). Test location-based features. |
simulator_send_push | Send push notifications with full APNs payload JSON. |
simulator_set_clipboard | Set the simulator clipboard text. |
simulator_add_media | Add photos/videos to the camera roll from local files. |
simulator_grant_permission | Grant, revoke, or reset permissions (camera, location, photos, contacts, microphone, etc.). |
| Tool | Description |
|---|---|
simulator_set_appearance | Switch between light and dark mode. |
simulator_override_status_bar | Set time, battery, signal, carrier, network type. |
simulator_record_video | Start screen recording. On stop, key frames are extracted as images for AI chat. |
simulator_stop_recording | Stop recording. Returns key frames inline (no disk clutter). Optional savePath to keep the video. |
| Tool | Description |
|---|---|
simulator_set_content_size | Set Dynamic Type preferred size (13 categories from extra-small to accessibility-XXXL). |
simulator_set_increase_contrast | Toggle Increase Contrast accessibility setting. |
simulator_location_scenario | Run predefined GPS routes: Freeway Drive, City Run, City Bicycle Ride. |
simulator_location_route | Simulate movement along custom waypoints with configurable speed. |
simulator_memory_warning | Trigger simulated memory warning (didReceiveMemoryWarning). |
simulator_keychain | Add root certificates, add certificates, or reset the device keychain. |
simulator_icloud_sync | Trigger iCloud synchronization on the device. |
simulator_verbose_logging | Enable/disable verbose device logging for deep debugging. |
simulator_install_app_data | Install .xcappdata packages to restore test data snapshots. |
simulator_get_env | Read environment variables from the running simulator. |
simulator_biometric | Enroll, unenroll, match, or fail Face ID / Touch ID for auth testing. |
simulator_network_status | Get network configuration — DNS, interfaces, connectivity status. |
simulator_defaults_read | Read UserDefaults from inside the simulator (inspect app prefs, feature flags). |
simulator_defaults_write | Write UserDefaults inside the simulator (set flags, inject test config). |
simulator_rotate | Rotate the simulator left or right. |
simulator_notify_post | Post a Darwin notification to trigger system events. |
simulator_set_locale | Set device locale for internationalization testing. |
simulator_trigger_siri | Invoke Siri for voice command testing. |
| Tool | Description |
|---|---|
simulator_set_reduce_motion | Toggle Reduce Motion accessibility setting (via defaults write + notification). |
simulator_set_smart_invert | Toggle Smart Invert Colors (via defaults write + notification). |
simulator_set_bold_text | Toggle Bold Text (via defaults write + notification). |
simulator_set_reduce_transparency | Toggle Reduce Transparency (via defaults write + notification). |
| Tool | Description |
|---|---|
simulator_create_device | Create a new simulator with device type and runtime. |
simulator_delete_device | Permanently delete a simulator device. |
simulator_rename_device | Rename an existing device. |
simulator_clone_device | Clone a device with all its state. |
| Tool | Description |
|---|
| simulator_storekit_config | Enable or disabl
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요