📱 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
local-only server
The server can only run on the client's local machine because it depends on local resources.
LLM이 자연어 명령을 통해 iOS 시뮬레이터와 상호 작용할 수 있도록 하는 MCP 서버입니다.
Related MCP Servers
- -securityFlicense-qualityAn MCP server to control iOS Simulators.Last updated -4122JavaScript
- AsecurityAlicenseAqualityEnables interaction with iOS simulators by providing tools to inspect UI elements, control UI interactions, and manage simulators through natural language commands.Last updated -6198466JavaScriptMIT License
- -securityAlicense-qualityA bridge between iOS simulators and the Model Context Protocol, enabling programmatic control of iOS simulators through standardized communication interfaces.Last updated -25TypeScriptMIT License
- -securityFlicense-qualityA customized MCP server that enables integration between LLM applications and documentation sources, providing AI-assisted access to LangGraph and Model Context Protocol documentation.Last updated -1Python