Skip to main content
Glama

iOS Simulator MCP 서버

Install MCP Server NPM Version

iOS 시뮬레이터와 상호작용하기 위한 MCP(Model Context Protocol) 서버입니다. 이 서버를 사용하면 시뮬레이터에 대한 정보를 얻고, UI 상호작용을 제어하며, UI 요소를 검사하여 iOS 시뮬레이터와 상호작용할 수 있습니다.

보안 공지: 1.3.3 미만 버전에서 발견된 명령 주입(Command injection) 취약점이 수정되었습니다. v1.3.3 이상으로 업데이트하십시오. 자세한 내용은 SECURITY.md를 참조하십시오.

https://github.com/user-attachments/assets/453ebe7b-cc93-4ac2-b08d-0f8ac8339ad3

🌟 주요 소개

이 프로젝트는 다양한 간행물 및 리소스에서 소개 및 언급되었습니다:

Related MCP server: iOS Device Control MCP Server

도구

get_booted_sim_id

설명: 현재 부팅된 iOS 시뮬레이터의 ID를 가져옵니다.

매개변수: 매개변수 없음

open_simulator

설명: iOS 시뮬레이터 애플리케이션을 엽니다.

매개변수: 매개변수 없음

ui_describe_all

설명: iOS 시뮬레이터의 전체 화면에 대한 접근성 정보를 설명합니다.

매개변수:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
}

ui_tap

설명: iOS 시뮬레이터 화면을 탭합니다.

매개변수:

{
  /**
   * Press duration in seconds (decimal numbers allowed)
   */
  duration?: string;
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** The x-coordinate */
  x: number;
  /** The y-coordinate */
  y: number;
}

ui_type

설명: iOS 시뮬레이터에 텍스트를 입력합니다.

매개변수:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /**
   * Text to input
   * Format: ASCII printable characters only
   */
  text: string;
}

ui_swipe

설명: iOS 시뮬레이터 화면을 스와이프합니다.

매개변수:

{
  /**
   * Swipe duration in seconds (decimal numbers allowed)
   */
  duration?: string;
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** The starting x-coordinate */
  x_start: number;
  /** The starting y-coordinate */
  y_start: number;
  /** The ending x-coordinate */
  x_end: number;
  /** The ending y-coordinate */
  y_end: number;
  /** The size of each step in the swipe (default is 1) */
  delta?: number;
}

ui_describe_point

설명: iOS 시뮬레이터 화면의 지정된 좌표에 있는 접근성 요소를 반환합니다.

매개변수:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** The x-coordinate */
  x: number;
  /** The y-coordinate */
  y: number;
}

ui_find_element

설명: 접근성 트리를 검색하여 주어진 기준과 일치하는 요소를 반환합니다.

매개변수:

{
  /** Array of search strings. An element matches if ANY string matches against its AXLabel or AXUniqueId */
  search: string[];
  /** Filter by element type (e.g. 'Button', 'StaticText', 'Group'). Case-insensitive exact match */
  type?: string;
  /** Match mode: 'substring' (default) or 'exact' */
  matchMode?: "substring" | "exact";
  /** Whether search matching is case-sensitive (default: false) */
  caseSensitive?: boolean;
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
}

ui_view

설명: 현재 시뮬레이터 뷰의 압축된 스크린샷 이미지 콘텐츠를 가져옵니다.

매개변수:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
}

screenshot

설명: iOS 시뮬레이터의 스크린샷을 찍습니다.

매개변수:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** File path where the screenshot will be saved. If relative, it uses the directory specified by the `IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR` env var, or `~/Downloads` if not set. */
  output_path: string;
  /** Image format (png, tiff, bmp, gif, or jpeg). Default is png. */
  type?: "png" | "tiff" | "bmp" | "gif" | "jpeg";
  /** Display to capture (internal or external). Default depends on device type. */
  display?: "internal" | "external";
  /** For non-rectangular displays, handle the mask by policy (ignored, alpha, or black) */
  mask?: "ignored" | "alpha" | "black";
}

record_video

설명: simctl을 직접 사용하여 iOS 시뮬레이터의 비디오를 녹화합니다.

매개변수:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** Optional output path. If not provided, a default name will be used. The file will be saved in the directory specified by `IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR` or in `~/Downloads` if the environment variable is not set. */
  output_path?: string;
  /** Specifies the codec type: "h264" or "hevc". Default is "hevc". */
  codec?: "h264" | "hevc";
  /** Display to capture: "internal" or "external". Default depends on device type. */
  display?: "internal" | "external";
  /** For non-rectangular displays, handle the mask by policy: "ignored", "alpha", or "black". */
  mask?: "ignored" | "alpha" | "black";
  /** Force the output file to be written to, even if the file already exists. */
  force?: boolean;
}

stop_recording

설명: killall을 사용하여 시뮬레이터 비디오 녹화를 중지합니다.

매개변수: 매개변수 없음

install_app

설명: iOS 시뮬레이터에 앱 번들(.app 또는 .ipa)을 설치합니다.

매개변수:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** Path to the app bundle (.app directory or .ipa file) to install */
  app_path: string;
}

launch_app

설명: 번들 식별자를 사용하여 iOS 시뮬레이터에서 앱을 실행합니다.

매개변수:

{
  /**
   * Udid of target, can also be set with the IDB_UDID env var
   * Format: UUID (8-4-4-4-12 hexadecimal characters)
   */
  udid?: string;
  /** Bundle identifier of the app to launch (e.g., com.apple.mobilesafari) */
  bundle_id: string;
  /** Terminate the app if it is already running before launching */
  terminate_running?: boolean;
  /** Optional environment variables passed via SIMCTL_CHILD_ to simctl launch */
  env?: Record<string, string>;
}

참고: simctl launch가 모든 Xcode 버전에서 --env/--envs를 지원하지 않기 때문에 환경 변수는 SIMCTL_CHILD_를 사용하여 전달됩니다.

예시:

{
  "bundle_id": "com.example.app",
  "terminate_running": true,
  "env": {
    "FOO": "bar",
    "BAZ": "qux"
  }
}

💡 사용 사례: MCP 도구 호출을 통한 QA 단계

이 MCP 서버를 사용하면 MCP(Model Context Protocol) 클라이언트와 통합된 AI 어시스턴트가 도구 호출을 통해 품질 보증(QA) 작업을 수행할 수 있습니다. 이는 UI 일관성과 올바른 동작을 보장하기 위해 기능을 구현한 직후에 유용합니다.

사용 방법

기능 구현 후, MCP 클라이언트 환경 내의 AI 어시스턴트에게 사용 가능한 도구를 사용하도록 지시하십시오. 예를 들어, Cursor의 에이전트 모드에서 아래 프롬프트를 사용하여 UI 상호작용을 빠르게 검증하고 문서화할 수 있습니다.

예시 프롬프트

  • UI 요소 확인:

    Verify all accessibility elements on the current screen
  • 텍스트 입력 확인:

    Enter "QA Test" into the text input field and confirm the input is correct
  • 탭 응답 확인:

    Tap on coordinates x=250, y=400 and verify the expected element is triggered
  • 스와이프 동작 검증:

    Swipe from x=150, y=600 to x=150, y=100 and confirm correct behavior
  • 상세 요소 확인:

    Describe the UI element at position x=300, y=350 to ensure proper labeling and functionality
  • AI 에이전트에게 시뮬레이터 화면 보여주기:

    View the current simulator screen
  • 스크린샷 찍기:

    Take a screenshot of the current simulator screen and save it to my_screenshot.png
  • 비디오 녹화:

    Start recording a video of the simulator screen (saves to the default output directory, which is `~/Downloads` unless overridden by `IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR`)
  • 녹화 중지:

    Stop the current simulator screen recording
  • 앱 설치:

    Install the app at path/to/MyApp.app on the simulator
  • 앱 실행:

    Launch the Safari app (com.apple.mobilesafari) on the simulator

사전 요구 사항

설치

이 섹션에서는 iOS 시뮬레이터 MCP 서버를 다양한 MCP 클라이언트와 통합하는 방법을 설명합니다.

Cursor와 함께 설치

Cursor는 ~/.cursor/mcp.json에 위치한 구성 파일을 통해 MCP 서버를 관리합니다.

옵션 1: NPX 사용 (권장)

  1. Cursor MCP 구성 파일을 편집합니다. Cursor에서 직접 열거나 다음 명령을 사용할 수 있습니다:

    # Open with your default editor (or use 'code', 'vim', etc.)
    open ~/.cursor/mcp.json
    # Or use Cursor's command if available
    # cursor ~/.cursor/mcp.json
  2. iOS 시뮬레이터 서버 구성을 사용하여 mcpServers 섹션을 추가하거나 업데이트합니다:

    {
      "mcpServers": {
        // ... other servers might be listed here ...
        "ios-simulator": {
          "command": "npx",
          "args": ["-y", "ios-simulator-mcp"]
        }
      }
    }

    mcpServers가 이미 존재하는 경우 JSON 구조가 유효한지 확인하십시오.

  3. 변경 사항을 적용하려면 Cursor를 다시 시작하십시오.

옵션 2: 로컬 개발

  1. 이 저장소를 복제합니다:

    git clone https://github.com/joshuayoes/ios-simulator-mcp
    cd ios-simulator-mcp
  2. 종속성을 설치합니다:

    npm install
  3. 프로젝트를 빌드합니다:

    npm run build
  4. Cursor MCP 구성 파일을 편집합니다(옵션 1 참조).

  5. 로컬 빌드를 가리키는 mcpServers 섹션을 추가하거나 업데이트합니다:

    {
      "mcpServers": {
        // ... other servers might be listed here ...
        "ios-simulator": {
          "command": "node",
          "args": ["/full/path/to/your/ios-simulator-mcp/build/index.js"]
        }
      }
    }

    중요: /full/path/to/your/ios-simulator-mcp 저장소를 복제한 절대 경로로 바꾸십시오.

  6. 변경 사항을 적용하려면 Cursor를 다시 시작하십시오.

Claude Code와 함께 설치

Claude Code CLI는 claude mcp 명령을 사용하거나 구성 파일을 직접 편집하여 MCP 서버를 관리할 수 있습니다. Claude Code MCP 구성에 대한 자세한 내용은 공식 문서를 참조하십시오.

옵션 1: NPX 사용 (권장)

  1. claude mcp add 명령을 사용하여 서버를 추가합니다:

    claude mcp add ios-simulator npx ios-simulator-mcp
  2. 필요한 경우 실행 중인 Claude Code 세션을 다시 시작하십시오.

옵션 2: 로컬 개발

  1. 이 저장소를 복제하고 종속성을 설치한 후 Cursor "로컬 개발" 단계 1-3에 설명된 대로 프로젝트를 빌드합니다.

  2. 로컬 빌드를 가리키는 claude mcp add 명령을 사용하여 서버를 추가합니다:

    claude mcp add ios-simulator -- node "/full/path/to/your/ios-simulator-mcp/build/index.js"

    중요: /full/path/to/your/ios-simulator-mcp 저장소를 복제한 절대 경로로 바꾸십시오.

  3. 필요한 경우 실행 중인 Claude Code 세션을 다시 시작하십시오.

구성

환경 변수

변수

설명

예시

IOS_SIMULATOR_MCP_FILTERED_TOOLS

등록에서 제외할 도구 이름의 쉼표로 구분된 목록입니다.

screenshot,record_video,stop_recording

IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR

스크린샷 및 비디오 녹화와 같은 출력 파일의 기본 디렉토리를 지정합니다. 설정하지 않으면 ~/Downloads가 사용됩니다. 에이전트의 파일 시스템 액세스가 제한된 경우 유용할 수 있습니다.

~/Code/awesome-project/tmp

IOS_SIMULATOR_MCP_IDB_PATH

IDB 실행 파일에 대한 사용자 지정 경로를 지정합니다. 설정하지 않으면 idb가 사용됩니다(PATH에 있다고 가정). IDB가 표준이 아닌 위치에 설치된 경우 유용합니다.

~/bin/idb 또는 /usr/local/bin/idb

구성 예시

{
  "mcpServers": {
    "ios-simulator": {
      "command": "npx",
      "args": ["-y", "ios-simulator-mcp"],
      "env": {
        "IOS_SIMULATOR_MCP_FILTERED_TOOLS": "screenshot,record_video,stop_recording",
        "IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR": "~/Code/awesome-project/tmp",
        "IOS_SIMULATOR_MCP_IDB_PATH": "~/bin/idb"
      }
    }
  }
}

MCP 레지스트리 서버 목록

라이선스

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
9dResponse time
6wRelease cycle
9Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

  • MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/joshuayoes/ios-simulator-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server