xcode-mcp
Xcode 관련 작업을 위한 도구를 제공하는 MCP(Model Context Protocol) 서버로, Claude Desktop과 같은 MCP 클라이언트에서 Xcode 프로젝트 작업을 더욱 쉽게 수행할 수 있도록 합니다. 이 서버는 Xcode 프로젝트 관리, 빌드, 테스트, 보관, 코드 서명 및 관련 iOS 개발 도구를 위한 다양한 유틸리티를 제공합니다.
특징
Xcode 프로젝트 정보 검색 및 스키마 목록
깔끔하고 사용자 정의 가능한 출력 옵션을 통해 향상된 빌드 기능
세부적인 제어를 통한 포괄적인 테스트 실행
배포를 위한 앱 보관 및 IPA 내보내기
코드 서명 및 프로비저닝 프로필 관리
Swift 패키지 관리자 통합
simctl을 통한 iOS 시뮬레이터 관리
새로운 기능: 자동 Xcode 설치 감지 및 향상된 장치 관리를 통한 실제 장치 앱 배포 및 실행
자동 재시도로 앱 설치 실패를 지능적으로 처리합니다.
더 나은 성능을 위한 장치 및 Xcode 정보의 스마트 캐싱
Related MCP server: MCP Boilerplate
설치
지엑스피1
용법
Claude Desktop과 함께 사용
Claude Desktop 구성 파일을 엽니다.
# macOS open ~/Library/Application\ Support/Claude/claude_desktop_config.json다음 구성을 추가하거나 수정하세요.
{ "mcpServers": { "xcode-mcp": { "command": "npx", "args": [ "@devyhan/xcode-mcp", "-y" ] } } }Claude Desktop을 다시 시작합니다.
사용 가능한 도구
1. xcode-프로젝트-정보
대상, 구성, 스키마를 포함하여 Xcode 프로젝트나 작업 공간에 대한 자세한 정보를 검색합니다.
매개변수 :
projectPath(필수): Xcode 프로젝트(.xcodeproj) 또는 작업 공간(.xcworkspace) 경로
예 :
샘플 출력 :
2. xcode-list-schemes
Xcode 프로젝트나 작업 공간에서 사용 가능한 모든 구성, 대상 및 구성의 포괄적인 목록을 제공합니다.
매개변수 :
projectPath(필수): Xcode 프로젝트(.xcodeproj) 또는 작업 공간(.xcworkspace) 경로
예 :
샘플 출력 :
3. xcode-빌드
향상된 옵션을 사용하여 Xcode 프로젝트 또는 작업 공간을 빌드합니다. 작업 공간 및 프로젝트 빌드, 클린 빌드, 그리고 사용자 지정 출력 디렉터리를 모두 지원합니다.
매개변수 :
projectPath(필수): Xcode 프로젝트(.xcodeproj) 또는 작업 공간(.xcworkspace) 경로scheme(필수): 구축 계획configuration(선택 사항): 빌드 구성(예: 디버그, 릴리스)destination(선택 사항): 빌드 대상(예: '플랫폼=iOS 시뮬레이터, 이름=iPhone 14')extraArgs(선택 사항): 문자열 배열 형태의 추가 xcodebuild 인수outputDir(선택 사항): 사용자 정의 빌드 출력 디렉토리(SYMROOT)clean(선택 사항): 클린 빌드를 수행할지 여부(기본값: false)
예 :
생성된 명령 :
4. xcode 테스트
다양한 옵션을 사용하여 Xcode 프로젝트 또는 작업 공간에 대한 테스트를 실행합니다. 특정 테스트, 테스트 계획 및 다양한 테스트 모드를 실행하는 등 테스트 실행에 대한 세부적인 제어 기능을 제공합니다.
매개변수 :
projectPath(필수): Xcode 프로젝트(.xcodeproj) 또는 작업 공간(.xcworkspace) 경로scheme(필수): 테스트할 계획destination(필수): 테스트 대상(예: '플랫폼=iOS 시뮬레이터, 이름=iPhone 14')testPlan(선택 사항): 사용할 테스트 계획의 이름onlyTesting(선택 사항): 실행할 특정 테스트 식별자 배열skipTesting(선택 사항): 건너뛸 테스트 식별자 배열resultBundlePath(선택 사항): 테스트 결과 번들을 저장할 경로buildForTesting(선택 사항): 테스트를 실행하지 않고 테스트만을 위해 빌드합니다.testWithoutBuilding(선택 사항): 빌드하지 않고 테스트 실행
예 :
생성된 명령 :
5. xcode-아카이브
Xcode 프로젝트의 아카이브(.xcarchive)를 생성하고, 필요에 따라 배포를 위해 IPA 파일로 내보냅니다. 내보내기 옵션(plist)을 통해 App Store, 임시 배포 및 기업 배포 방식을 지원합니다.
매개변수 :
projectPath(필수): Xcode 프로젝트(.xcodeproj) 또는 작업 공간(.xcworkspace) 경로scheme(필수): 보관할 계획configuration(선택 사항): 빌드 구성(예: 릴리스)archivePath(필수): .xcarchive 파일을 저장할 경로exportPath(선택 사항): 아카이브를 내보낼 경로(예: IPA 파일)exportOptionsPlist(선택 사항): exportOptions.plist 파일에 대한 경로
예 :
생성된 명령 :
6. xcode-codesign-info
Xcode 프로젝트에 대한 포괄적인 코드 서명 및 프로비저닝 프로필 정보를 검색합니다. 시스템에 설치된 코드 서명 ID, 프로젝트 코드 서명 설정 및 프로비저닝 프로필을 표시합니다.
매개변수 :
projectPath(필수): Xcode 프로젝트(.xcodeproj) 또는 작업 공간(.xcworkspace) 경로target(선택 사항): 특정 대상 이름
예 :
샘플 출력 :
7. 스위프트 패키지 관리자
Swift 패키지 관리를 위한 Swift 패키지 관리자(SPM) 기능에 대한 액세스를 제공합니다. init, update, resolve, reset, clean과 같은 일반적인 SPM 명령을 지원합니다.
매개변수 :
command(필수): 실행할 SPM 명령("init", "update", "resolve", "reset", "clean")packageDir(필수): Swift 패키지의 디렉토리 경로extraArgs(선택 사항): 문자열 배열 형태의 추가 SPM 인수
예 :
생성된 명령 :
샘플 출력 :
8. simctl-manager
simctl 명령줄 도구를 통해 iOS 시뮬레이터 관리 기능에 액세스할 수 있습니다. 앱 나열, 생성, 부팅, 설치 및 시뮬레이터 기기 관리를 지원합니다.
매개변수 :
command(필수): SimCtl 명령어("list", "create", "boot", "shutdown", "erase", "install", "launch", "delete")extraArgs(선택 사항): 문자열 배열 형태의 추가 simctl 인수
예 :
생성된 명령 :
샘플 출력(약어) :
9. 디바이스에서 실행
실제 iOS 기기에서 앱을 빌드, 설치 및 실행합니다. 기기 선택, 환경 변수 및 로그 스트리밍을 위해 기기 이름(한글 이름 포함) 또는 UUID를 지원합니다. 이제 직접 bundleId 지정, 빌드 건너뛰기 옵션 및 추가 실행 인수가 제공됩니다 .
매개변수 :
projectPath(필수): Xcode 프로젝트(.xcodeproj) 또는 작업 공간(.xcworkspace) 경로scheme(필수): 빌드하고 실행할 계획device(필수): 장치 식별자 또는 이름(한국어 이름 지원)configuration(선택 사항): 빌드 구성(예: 디버그, 릴리스)streamLogs(선택 사항): 실행 후 장치 로그를 스트리밍할지 여부startStopped(선택 사항): 디버거 연결을 위해 앱을 일시 중지 상태로 시작할지 여부environmentVars(선택 사항): 앱에 전달할 환경 변수(key1=value1, key2=value2 형식)xcodePath(선택 사항): Xcode 애플리케이션 경로(기본값: "/Applications/Xcode-16.2.0.app")listDevices(선택 사항): 실행하기 전에 감지된 모든 장치를 ID와 함께 표시합니다.skipBuild(선택 사항): 이미 설치된 앱의 빌드 및 설치 단계를 건너뜁니다.extraLaunchArgs(선택 사항): devicectl 실행 명령에 전달할 추가 인수directBundleId(선택 사항): 프로젝트에서 추출하는 대신 번들 ID를 직접 지정합니다.
예 :
프로세스 :
이 도구는 지정된 장치에 대한 Xcode UDID와 CoreDevice UUID를 모두 식별합니다.
앱을 빌드하고 설치하려면 Xcode UDID를 사용합니다.
devicectl로 앱을 실행하기 위해 CoreDevice UUID를 사용합니다.앱의 번들 식별자를 검색합니다.
요청 시 장치 로그를 스트리밍합니다.
v0.4.0의 주요 개선 사항 :
프로젝트가 필요 없이 bundleId를 직접 지정할 수 있는 기능
이미 설치된 앱의 경우 빌드 및 설치 단계 건너뛰기
추가 devicectl 실행 명령 인수 지원
더 나은 기기 모델 및 OS 버전 정보 표시
devicectl 명령에 대한 경로 처리 및 로깅이 개선되었습니다.
샘플 출력 :
예제 시나리오: LLM과 함께 사용
다음은 Claude와 같은 LLM이 이러한 도구를 순서대로 사용하도록 유도하는 방법의 예입니다.
클로드에게 사용자 프롬프트:
예상 작업 흐름:
Claude는
xcode-list-schemes도구를 실행하여 모든 스키마를 검색합니다.Project path: /Users/username/Projects/MyApp/MyApp.xcodeprojClaude는 식별된 스키마로
xcode-test도구를 실행합니다.Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: [First scheme from output] Destination: platform=iOS Simulator,name=iPhone 14그런 다음 Claude는
xcode-archive도구를 사용하여 아카이브를 생성합니다.Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: [First scheme from output] Configuration: Release ArchivePath: /Users/username/Desktop/MyApp.xcarchive
이 워크플로는 한 도구의 출력을 사용하여 다른 도구의 매개변수를 알려주고 여러 도구를 연결하는 방법을 보여줍니다.
예: 실제 장치에서 실행
클로드에게 사용자 프롬프트:
예상 작업 흐름:
Claude는 먼저 장치 목록을 가져옵니다.
listDevices: trueClaude는 사용자의 물리적 장치를 식별하고 해당 장치에서 앱을 실행합니다.
Project path: /Users/username/Projects/MyApp/MyApp.xcodeproj Scheme: MyApp Device: "Your iPhone" (or the device UUID) StreamLogs: true재구축 없이 빠르게 다시 시작하려면:
Device: "Your iPhone" DirectBundleId: "com.example.myapp" SkipBuild: true
보안 고려 사항
이 도구는 Xcode 관련 명령을 실행할 수 있으며, 이는 보안 위험을 초래합니다. 참고:
신뢰할 수 있는 Xcode 프로젝트에만 사용하세요.
출처가 불분명한 프로젝트에는 주의하세요.
빌드 매개변수에 민감한 정보를 포함하지 마세요.
개발
요구 사항
Node.js 16 이상
npm 6 이상
Xcode 14 이상(모든 기능)
Xcode 16 이상(
devicectl및 실제 장치 기능에 필요)
지역 개발 및 테스트
특허
MIT