사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/agent-easy-use/mobile-easy-use --skill to-ios-run시작 전 확인
- 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
- 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
To iOS Run
Run exactly one supplied iOS operation. Require appId; accept optional canonical deviceId and device-side runtimePort, defaulting to 8484. Accept exactly one execution form:
source: one complete(async () => { ... })()expression.scriptPath + functionName: one named Module export.scriptPath + naturalDescription: read the matchingprobe.d.tscompletely and select exactly one export. Stop on no match, ambiguity, or missing required arguments.
Optional positional args apply only to Module. Do not convert between Inline and Module. If code is missing, first use to-ios-probe-script.
Target
Discover currently booted CoreSimulator devices and currently available USB CoreDevice devices. Exclude shutdown simulators and network-only, unavailable, unpaired, or unusable physical devices.
- Supplied
deviceId: require an exact eligible match. - Omitted
deviceId: use the only eligible target; on zero or multiple matches, stop and report canonical IDs, names, and kinds.
Do not boot devices or simulators. For a simulator, use its UDID as deviceId.
For a physical device, resolve both IDs once: use the CoreDevice ID for MCP deviceId and devicectl --device, and the hardware UDID for iproxy -u.
Connect
For a simulator, connect directly to 127.0.0.1:runtimePort and set hostPort = runtimePort.
For a USB physical device, keep one exact iproxy mapping from a free Host port to runtimePort running while its MCP Session is retained. Reuse it only when the hardware UDID and both ports match. The ordinary default is:
iproxy -u "<hardware-udid>" 28484:8484Physical-device signing uses the configuration prepared by to-ios-integrate, and attempts to rebuild and sign the Runner when its cached signing is invalid. For signing errors, follow that skill’s signing setup/repair path before retrying connect.
Choose another free Host port when 28484 is unavailable. Call connect once:
connect({
platform: "ios",
deviceId,
appId,
runtimePort,
ip: "127.0.0.1",
port: hostPort
})The connection instance key is deviceId + appId. MCP reuses a healthy matching instance even when a new endpoint or device-side port is supplied; this path validates the retained Runtime and does not invoke the Loader.
After a successful connect, retain compatibilityWarning and a non-null compatibility.upgradeRecommendation. Continue the requested operation and report these non-blocking advisories alongside its result.
For a new or replacement iOS connection, MCP resolves the target kind and runs the idempotent LLDB Loader before creating the Frida connection. The Loader preserves an already-running App or launches it when absent. It accepts only loaded or already-loaded, requires each bridge/runtime image exactly once, detaches LLDB, and then proceeds with Frida attach. An already-loaded App is verified without loading either dylib again.
Return other connect failures without retrying. Do not invoke the Loader separately, install Apps, or call disconnect after success.
Execute
For Inline, call eval_script({ deviceId, appId, source }) exactly once without rewriting it. For Module, call call_function({ deviceId, appId, filePath, functionName, args? }) exactly once with the absolute probe.js path. Return the response unchanged; do not inspect evidence or retry a failed or timed-out mutation.

