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
- 클라인은 종속성 관리 및 구성을 포함하여 설치 과정을 자동으로 처리합니다.
또는 수동으로 설치할 수도 있습니다.
설치 과정은 자동으로 진행됩니다.
- macOS를 실행 중인지 확인하세요
- Homebrew를 통해 idb-companion 설치
- 가상환경에서 pip를 통해 fb-idb를 설치합니다.
참고: 서버를 사용하는 동안 가상 환경을 활성화된 상태로 유지해야 합니다. 터미널을 닫았다가 나중에 다시 실행하는 경우, npm start
실행하기 전에 source venv/bin/activate
명령을 사용하여 가상 환경을 다시 활성화해야 합니다.
🔌 MCP 통합
Claude 또는 다른 LLM 조수와 함께 이 서버를 사용하려면:
- Claude Desktop의 MCP 설정에 서버를 추가하세요.
- 이제 LLM은 자연어 명령을 사용하여 iOS 시뮬레이터를 제어할 수 있습니다.
📚 도서관으로 활용
이 패키지를 자신의 프로젝트에서 라이브러리로 사용할 수도 있습니다.
🔰 기본 사용법
🚀 고급 사용법
개별 구성 요소를 직접 사용할 수도 있습니다.
🏗️ 프로젝트 구조
🎯 지원되는 명령
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 시뮬레이터 자동화를 위한 포괄적인 작업 세트를 제공합니다.
🔍 건축
서버는 세 가지 주요 구성 요소로 구성됩니다.
- IDBManager : idb를 통해 iOS 시뮬레이터와 직접 상호작용하는 저수준 구성 요소입니다.
- NLParser : 자연어 명령어를 해석하고 이를 구조화된 명령으로 변환하는 구성 요소입니다.
- MCPOrchestrator : 파서와 IDBManager 간의 상호작용을 조정하는 중심 구성 요소입니다.
다음 구성 요소는 어댑터를 통해 연결됩니다.
- ParserToOrchestrator : 파서 결과를 오케스트레이터 명령으로 변환합니다.
- OrchestratorToIDB : 오케스트레이터 명령을 IDBManager 호출로 변환합니다.
🔌 MCP 통합
이 서버를 모델 컨텍스트 프로토콜과 함께 사용하려면:
- MCP 설정에 서버를 추가합니다.
- LLM 애플리케이션에서 서버에 연결합니다.
🙏 감사의 말
이 프로젝트는 iOS 시뮬레이터 제어 기능을 제공하는 facebook/idb가 없었다면 불가능했을 것입니다. 강력하고 안정적인 도구를 개발하고 유지해 주신 Facebook/Meta 팀과 idb 프로젝트에 기여해 주신 모든 분들께 진심으로 감사드립니다.
📄 라이센스
이 도구는 Apache-2.0 조건에 따라 오픈 소스로 제공됩니다.
This server cannot be installed
LLM이 자연어 명령을 통해 iOS 시뮬레이터와 상호 작용할 수 있도록 하는 MCP 서버입니다.