/ 디렉터리 / 플레이그라운드 / 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 시뮬레이터를 조작할 수 있게 합니다. UI 테스트 루프, 버그 재현, App Store 제출용 스크린샷/영상 캡처에 적합 — 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 설치
  • idb 설치됨brew 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가 두 기기 모두 Booted 상태로 표시
  2. 상태 표시줄 설정
    두 기기 모두에서 상태 표시줄을 9:41, 완전 충전, 완전 신호로 설정하세요. App Store 스타일.✓ 복사됨
    → status_bar_set 성공; 깔끔한 외관
  3. 설치 + 스크린샷
    두 기기에 MyApp.app을 설치하세요. 실행하고, 홈 → 프로필 → 설정으로 이동하고, 라이트 및 다크 모드로 각각 스크린샷을 찍으세요. /screenshots/<device>/<mode>/에 저장하세요.✓ 복사됨
    → 기기별 폴더, 각 화면의 라이트 + 다크 변형 포함

결과: 수동 캡처 없이 약 10분 안에 전체 App Store 스크린샷 패키지

함정
  • 시뮬레이터 부팅 후 앱이 실행 시 충돌 — simctl 로그 가져오기; 누락된 entitlement 확인
  • Dynamic Island 콘텐츠가 상태 표시줄 조정을 가림 — Pro Max에서 status_bar_set은 DI 아래에도 적용됨
함께 쓰기: filesystem

UI 버그에 대한 깨끗한 재현 영상 캡처

👤 iOS 개발자 / QA ⏱ ~10 min beginner

언제 쓸까: 버그가 시뮬레이터에서만 재현될 때; 티켓을 위한 영상이 필요할 때.

흐름
  1. 녹화 시작
    iPhone 15를 부팅하세요. build.app을 설치하세요. 화면 녹화를 시작하세요.✓ 복사됨
    → record_video_start가 recording id를 반환
  2. 재현
    앱을 열고 프로필을 탭하고, 편집 연필을 탭하세요. 이름 필드에 'Test'를 입력하세요. 저장을 탭하고 2초 대기하세요.✓ 복사됨
    → 시퀀스 실행됨; 재현되면 버그가 보임
  3. 중지 및 첨부
    녹화를 중지하고 /tickets/에 bug-1234.mov로 저장하세요.✓ 복사됨
    → MOV 저장됨

결과: 티켓에 첨부할 준비가 된 재현 영상

함정
  • 레이아웃이 예상과 달라 탭이 빗나감 — 먼저 describe_ui를 사용하여 현재 프레임 찾기
함께 쓰기: filesystem · github

각 리빌드 후 스모크 테스트 루프 실행

👤 빠른 빌드/테스트 사이클의 iOS 개발자 ⏱ ~15 min intermediate

언제 쓸까: 화면을 반복 개선 중이며 모든 리빌드 후 30초 스모크 테스트를 원할 때.

흐름
  1. 리빌드 + 재설치
    MyApp Debug 스킴에 대해 xcodebuild를 실행한 후 부팅된 시뮬레이터에 재설치하세요.✓ 복사됨
    → 새 번들로 설치 성공
  2. 스모크 경로 실행
    앱을 열고, 테스트 계정으로 로그인하고, 작업 중인 화면으로 이동하고, 스크린샷을 찍으세요.✓ 복사됨
    → 스크린샷이 올바르게 보임; 로그에 충돌 없음

결과: 수동 탭 없이 더 빠른 빌드/테스트 사이클

함정
  • 로그인 흐름에 캡차가 있음 — 캡차 우회 빌드 사용 또는 인증 흐름을 스텁 처리

조합

다른 MCP와 조합해 10배 효율

ios-simulator-mcp + filesystem

스크린샷을 레포지토리에 저장

모든 메인 화면의 스크린샷을 캡처하고 /design/screenshots/에 저장하세요.✓ 복사됨
ios-simulator-mcp + github

재현 영상이 포함된 버그 이슈 등록

버그를 녹화하고, MOV와 재현 단계가 포함된 GitHub 이슈를 등록하세요.✓ 복사됨
ios-simulator-mcp + xcodebuildmcp

빌드 후 즉시 스모크 테스트 실행

XcodeBuild: Debug 빌드. Sim: 설치 + 실행 + 스크린샷.✓ 복사됨

도구

이 MCP가 노출하는 것

도구입력언제 호출비용
list_simulators (없음) 첫 번째 단계 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 쿼터
없음 — 로컬
호출당 토큰
100–800; 스크린샷은 경로로 참조됨, 임베드되지 않음
금액
무료 OSS
반복적으로 추측하는 대신 describe_ui를 한 번 사용하여 탭 좌표 찾기

보안

권한, 시크릿, 파급범위

최소 스코프: execute simctl + idb
자격 증명 저장: 없음 — 하지만 시뮬레이터의 앱 데이터는 사용자 것
데이터 외부 송신: 로컬 전용
절대 부여 금지: root / kernel access

문제 해결

자주 발생하는 오류와 해결

idb를 찾을 수 없음

brew tap facebook/fb && brew install idb-companion; pip install fb-idb도 실행

확인: idb list-targets
탭이 도달하지 않음

describe_ui 사용; 좌표는 기기 크기마다 다름; 요소가 시트에 있을 수 있음

시뮬레이터 부팅 후 검은 화면 유지

시뮬레이터 종료 + 초기화; 가끔 Xcode 런타임 재다운로드 필요

녹화 손상

simctl io recordVideo 직접 사용; idb의 래퍼는 macOS 절전 중에 가끔 실패

대안

iOS Simulator MCP 다른 것과 비교

대안언제 쓰나단점/장점
XcodeBuildMCP (Sentry)하나의 MCP에서 빌드 + 시뮬레이터를 원할 때더 무거움; 더 넓은 범위
Maestro전체 UI 테스트 DSL을 원할 때기본적으로 LLM 기반이 아님
Xcode Cloud / Fastlane프로덕션 CI다른 레이어; 인터랙티브하지 않음

더 보기

리소스

📖 GitHub에서 공식 README 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기