iOS simulators MCP

by InditexTech
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Leverages Facebook's idb tool to interact with iOS simulators, enabling app installation, UI automation, and debugging features.

  • Enables control of iOS simulators through natural language commands, supporting simulator management, app installation and launching, UI interaction, accessibility testing, screenshot/video capture, debugging, and crash log analysis.

  • Utilizes Meta's idb technology to provide iOS simulator control, supporting app testing, UI automation, and device management.

📱 iOS 시뮬레이터용 MCP 서버

LLM이 자연어 명령을 통해 iOS 시뮬레이터와 상호 작용할 수 있도록 하는 MCP(모델 컨텍스트 프로토콜) 서버입니다.

ℹ️ 개요

이 MCP 서버는 대규모 언어 모델(LLM)과 iOS 시뮬레이터를 연결하여 자연어 명령을 통한 포괄적인 제어를 제공합니다. MCP 서버는 다음과 같은 기능을 제공합니다.

자세한 사용 방법은 설치 가이드 및 지원되는 명령 섹션을 참조하세요. 이 서버는 MCP에 직접 통합하거나 독립형 라이브러리로 사용할 수 있습니다.

iOS 시뮬레이터의 자연어 제어를 가능하게 하기 위해 구성 요소가 어떻게 함께 작동하는지 알아보려면 아키텍처 섹션을 확인하세요.

🎮 시뮬레이터 제어

  • 시뮬레이터 세션 생성 및 관리
  • 부팅, 종료 및 모니터링 시뮬레이터 상태
  • 사용 가능하고 실행 중인 시뮬레이터 목록
  • 포커스 시뮬레이터 창

📱 애플리케이션 관리

  • iOS 애플리케이션 설치 및 관리
  • 앱 실행, 종료 및 제거
  • 앱 상태 모니터링 및 설치 확인
  • 앱 권한 및 구성 처리

🖱️ UI 상호작용 및 테스트

  • 시뮬레이터 UI와 상호 작용
  • 탭, 스와이프, 버튼 누름 동작 실행
  • 텍스트 및 키 시퀀스 입력
  • UI 테스트를 위한 접근성 요소 접근
  • UI 상호작용의 비디오 녹화

🛠️ 개발 및 디버깅

  • 스크린샷과 시스템 로그 캡처
  • 실시간으로 애플리케이션 디버깅
  • 충돌 로그 모니터링 및 분석
  • 동적 라이브러리를 설치하고 앱 데이터를 관리합니다.

⚡ 고급 기능

  • 추가 기능은 다음과 같습니다.
    • 위치 시뮬레이션
    • 미디어 주입
    • URL 스키마 처리
    • 연락처 데이터베이스 관리
    • 키체인 작업

자세한 사용 방법은 설치 가이드 및 지원되는 명령 섹션을 참조하세요. 이 서버는 MCP에 직접 통합하거나 독립형 라이브러리로 사용할 수 있습니다.

iOS 시뮬레이터의 자연어 제어를 가능하게 하기 위해 구성 요소가 어떻게 함께 작동하는지 알아보려면 아키텍처 섹션을 확인하세요.

📋 요구 사항

  • macOS : iOS 시뮬레이터 지원에 필요
  • Node.js : v14.0.0 이상
  • Homebrew : 종속성 설치에 필요
  • XCode : iOS 시뮬레이터가 설치된 경우

🚀 설치

이 서버를 설치하는 가장 쉬운 방법은 Cline을 이용하는 것입니다.

  1. 클라인에게 물어보세요:

지엑스피1

  1. 클라인은 종속성 관리 및 구성을 포함하여 설치 과정을 자동으로 처리합니다.

또는 수동으로 설치할 수도 있습니다.

# Clone the repository git clone https://github.com/InditexTech/mcp-server-simulator-ios-idb.git cd mcp-server-simulator-ios-idb # Create and activate Python virtual environment python3 -m venv venv source venv/bin/activate # On Unix/macOS # Install dependencies npm install # Build the project npm run build # Start the project npm start # Run tests npm test

설치 과정은 자동으로 진행됩니다.

  1. macOS를 실행 중인지 확인하세요
  2. Homebrew를 통해 idb-companion 설치
  3. 가상환경에서 pip를 통해 fb-idb를 설치합니다.

참고: 서버를 사용하는 동안 가상 환경을 활성화된 상태로 유지해야 합니다. 터미널을 닫았다가 나중에 다시 실행하는 경우, npm start 실행하기 전에 source venv/bin/activate 명령을 사용하여 가상 환경을 다시 활성화해야 합니다.

🔌 MCP 통합

Claude 또는 다른 LLM 조수와 함께 이 서버를 사용하려면:

  1. Claude Desktop의 MCP 설정에 서버를 추가하세요.
{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }
  1. 이제 LLM은 자연어 명령을 사용하여 iOS 시뮬레이터를 제어할 수 있습니다.
create a simulator session with iPhone 14 install app /path/to/my-app.ipa launch app com.example.myapp tap at 100, 200 take a screenshot

📚 도서관으로 활용

이 패키지를 자신의 프로젝트에서 라이브러리로 사용할 수도 있습니다.

🔰 기본 사용법

import { createMCPServer } from 'mcp-server-simulator-ios-idb'; async function main() { // Create an instance of the MCP server const { orchestrator } = createMCPServer(); // Process natural language commands // Create a simulator session const sessionResult = await orchestrator.processInstruction('create session'); console.log(`Session created: ${sessionResult.data}`); // Interact with the simulator await orchestrator.processInstruction('tap at 100, 200'); // Capture a screenshot const screenshotResult = await orchestrator.processInstruction('take screenshot'); console.log(`Screenshot saved at: ${screenshotResult.data}`); } main().catch(console.error);

🚀 고급 사용법

개별 구성 요소를 직접 사용할 수도 있습니다.

import { IDBManager, NLParser, MCPOrchestrator, ParserToOrchestrator, OrchestratorToIDB } from 'mcp-server-simulator-ios-idb'; // Create instances const idbManager = new IDBManager(); const parser = new NLParser(); const orchestrator = new MCPOrchestrator(parser, idbManager); // Use the components directly const sessionId = await idbManager.createSimulatorSession({ deviceName: 'iPhone 12', platformVersion: '15.0' }); await idbManager.tap(sessionId, 100, 200);

🏗️ 프로젝트 구조

mcp-server-simulator-ios-idb/ ├── src/ # Source code │ ├── adapters/ # Adapter components │ ├── idb/ # IDB manager implementation │ ├── mcp/ # MCP server implementation │ ├── orchestrator/ # Command orchestrator │ ├── parser/ # Natural language parser │ └── index.ts # Main entry point ├── types/ # TypeScript type definitions ├── scripts/ # Installation scripts ├── package.json # Project configuration └── tsconfig.json # TypeScript configuration

🎯 지원되는 명령

NLParser는 다음과 같은 자연어 명령을 지원합니다.

🎮 시뮬레이터 관리

명령설명
세션 생성새로운 시뮬레이터 세션을 생성합니다"세션 생성", "시뮬레이터 iPhone 12 생성"
세션 종료현재 세션을 종료합니다"세션 종료", "시뮬레이터 닫기"
시뮬레이터 목록사용 가능한 시뮬레이터 목록"시뮬레이터 목록", "시뮬레이터 표시"
부팅된 시뮬레이터 목록실행 중인 시뮬레이터 목록"부팅된 시뮬레이터 목록", "실행 중인 시뮬레이터 표시"
부트 시뮬레이터UDID로 시뮬레이터 부팅"부트 시뮬레이터 5A321B8F-4D85-4267-9F79-2F5C91D142C2"
종료 시뮬레이터시뮬레이터를 종료합니다"셧다운 시뮬레이터 5A321B8F-4D85-4267-9F79-2F5C91D142C2"
포커스 시뮬레이터시뮬레이터 창을 앞으로 가져옵니다."포커스 시뮬레이터", "시뮬레이터를 앞으로 가져오기"
시뮬레이터 세션 목록활성 시뮬레이터 세션을 나열합니다."시뮬레이터 세션 목록", "활성 세션 표시"

📱 앱 관리

명령설명
앱 설치시뮬레이터에 앱을 설치합니다"앱 설치 /path/to/app.ipa"
앱 실행시뮬레이터에서 앱을 시작합니다"앱 com.example.app 실행"
앱 종료실행 중인 앱을 종료합니다"앱 com.example.app 종료"
앱 제거앱을 제거합니다"앱 com.example.app 제거"
앱 목록설치된 응용 프로그램을 나열합니다"앱 목록", "설치된 앱 표시"
앱이 설치되었는지 확인하세요앱이 설치되었는지 확인합니다"앱 com.example.app이 설치되어 있나요?"

🖱️ UI 상호작용

명령설명
수도꼭지특정 좌표에서의 탭"100, 200에서 탭하세요"
강타스와이프 제스처를 수행합니다."100, 200에서 300, 400으로 스와이프"
버튼을 누르세요장치 버튼을 누릅니다"홈 버튼 눌러", "SIRI 버튼 눌러"
입력 텍스트텍스트 입력"Hello World라는 텍스트를 입력하세요"
키를 누르세요코드로 키를 누릅니다"4번 키를 누르세요"
키 시퀀스를 누르세요일련의 키를 누릅니다"키 시퀀스 4 5 6을 누르세요"

♿ 접근성

명령설명
요소를 설명하세요모든 접근성 요소를 나열합니다"모든 요소 설명", "접근성 요소 표시"
요점을 설명하세요좌표의 요소를 설명합니다."100, 200 지점을 설명해 줘", "150, 300 지점은 뭐야?"

📸 캡처 및 로그

명령설명
스크린샷 찍기스크린샷을 캡처합니다"스크린샷 찍기", "화면 캡처"
비디오 녹화화면 활동 기록"비디오 녹화 /path/output.mp4"
녹음 중지비디오 녹화를 중지합니다"녹화 중지", "비디오 녹화 중지"
로그 가져오기시스템 또는 앱 로그를 검색합니다"로그 가져오기", "com.example.app에 대한 로그 가져오기"

🐛 디버그

명령설명
디버그 시작디버그 세션을 시작합니다"디버그 앱 com.example.app", "디버그 앱 com.example.app 시작"
디버그 중지디버그 세션을 중지합니다"디버그 중지", "디버그 세션 종료"
디버그 상태디버그 세션 상태를 가져옵니다"디버그 상태", "디버그 정보 표시"

💥 충돌 로그

명령설명
충돌 로그 나열사용 가능한 충돌 로그를 나열합니다."충돌 로그 나열", "충돌 로그 표시"
충돌 로그 표시충돌 로그의 내용을 표시합니다."crash_2023-01-01 크래시 로그 표시"
충돌 로그 삭제충돌 로그를 삭제합니다"충돌 로그 삭제", "충돌 로그 지우기"

🔧 추가 명령

명령설명
dylib 설치동적 라이브러리를 설치합니다"dylib /path/to/library.dylib 설치"
URL 열기시뮬레이터에서 URL을 엽니다"URL https://example.com을 열어주세요"
투명 키체인시뮬레이터의 키체인을 지웁니다"투명 키링"
위치 설정시뮬레이터의 위치를 설정합니다"위치 설정 37.7749, -122.4194"
미디어 추가카메라 롤에 미디어를 추가합니다"미디어 /path/to/image.jpg 추가"
권한 승인앱 권한을 승인합니다"com.example.app 사진 카메라 권한 승인"
연락처 업데이트연락처 데이터베이스를 업데이트합니다"연락처 업데이트 /path/to/contacts.sqlite"

이 인터페이스는 idb CLI 도구에서 사용 가능한 모든 명령을 지원하여 iOS 시뮬레이터 자동화를 위한 포괄적인 작업 세트를 제공합니다.

🔍 건축

서버는 세 가지 주요 구성 요소로 구성됩니다.

  1. IDBManager : idb를 통해 iOS 시뮬레이터와 직접 상호작용하는 저수준 구성 요소입니다.
  2. NLParser : 자연어 명령어를 해석하고 이를 구조화된 명령으로 변환하는 구성 요소입니다.
  3. MCPOrchestrator : 파서와 IDBManager 간의 상호작용을 조정하는 중심 구성 요소입니다.

다음 구성 요소는 어댑터를 통해 연결됩니다.

  • ParserToOrchestrator : 파서 결과를 오케스트레이터 명령으로 변환합니다.
  • OrchestratorToIDB : 오케스트레이터 명령을 IDBManager 호출로 변환합니다.

🔌 MCP 통합

이 서버를 모델 컨텍스트 프로토콜과 함께 사용하려면:

  1. MCP 설정에 서버를 추가합니다.
{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }
  1. LLM 애플리케이션에서 서버에 연결합니다.
const result = await useMcpTool({ serverName: "ios-simulator", toolName: "process-instruction", arguments: { instruction: "create simulator session" } });

🙏 감사의 말

이 프로젝트는 iOS 시뮬레이터 제어 기능을 제공하는 facebook/idb가 없었다면 불가능했을 것입니다. 강력하고 안정적인 도구를 개발하고 유지해 주신 Facebook/Meta 팀과 idb 프로젝트에 기여해 주신 모든 분들께 진심으로 감사드립니다.

📄 라이센스

이 도구는 Apache-2.0 조건에 따라 오픈 소스로 제공됩니다.

ID: lpriwa3d78