Skip to main content
Glama

mcp-devices 4.0.0 (이전 명칭 claude-in-mobile)

👉 모든 기능을 하나의 패키지로 사용하고 싶으신가요? 계속 claude-in-mobile을 사용하세요.

사용자에게 변경사항이 없습니다. 동일한 설치 방식, 모든 플랫폼 번들 제공, 계속 유지 관리됩니다:

npm i -g claude-in-mobile

이것으로 충분합니다. 올인원 에디션입니다. 플랫폼을 별도로 설치하고 싶은 경우에만 계속 읽어주세요 (이것이 mcp-devices의 용도입니다).


Related MCP server: Android MCP Server

두 가지 에디션 — 동일한 도구

에디션

최적 사용 사례

설치 명령어

claude-in-mobile

모든 기능을 하나로, 설정 불필요

npm i -g claude-in-mobile

mcp-devices

가벼운 기본 + 필요한 플랫폼만 설치

npm i -g mcp-devices (+ 아래 플랫폼 플러그인)

두 에디션 모두 유지 관리됩니다. claude-in-mobile은 4.0에서 mcp-devices로 이름이 변경되고 모듈식 에디션으로 분할되었습니다. 올인원 에디션은 이름과 설치 방식을 그대로 유지합니다. 이하 README는 모듈식 mcp-devices 에디션에 관한 내용입니다.


3단계 설치 (모듈식)

# 1. base server
npm i -g mcp-devices

# 2. add a platform (example: Android)
npm i -g @mcp-devices/plugin-android
mcp-devices install android

# 3. point your MCP client at it
#    { "mcpServers": { "mobile": { "command": "mcp-devices" } } }

MCP 클라이언트를 재시작하세요. 완료되었습니다 — Claude에게 "내 Android 기기 스크린샷을 찍어줘" 라고 요청하면 작동합니다.

언제든지 사전 요구사항을 확인하려면: mcp-devices doctor.

플랫폼 선택

각 플랫폼은 별도의 패키지입니다. 필요한 플랫폼을 설치하세요 — 각 문서에 전체 가이드가 있습니다:

플랫폼

설치 명령어

필요 사항

가이드 문서

Android

npm i -g @mcp-devices/plugin-android

adb

android »

iOS

npm i -g @mcp-devices/plugin-ios

xcrun (macOS/Xcode)

ios »

Web

npm i -g @mcp-devices/plugin-web

Chrome

web »

Desktop

npm i -g @mcp-devices/plugin-desktop

Java/JDK

desktop »

Aurora

npm i -g @mcp-devices/plugin-aurora

flutter-aurora

aurora »

All

npm i -g @mcp-devices/plugin-all

—

—

패키지 설치 후 활성화: mcp-devices install <name> (또는 all), 그 다음 재시작하세요.

할 수 있는 작업

  • 앱 구동 — 스크린샷, 탭/스와이프/타이핑, 앱 실행, UI 트리, 셸, 로그, 권한, 파일.

  • 라이브 앱 디버깅 — 중단점, 단계 실행, 변수 검사, 표현식 평가 (Android JDWP + iOS LLDB). 자세한 내용은 debug » 참조.

  • 테스트 — 시각적 회귀 테스트, 접근성 감사, 성능, 센서/네트워크 시뮬레이션.

이러한 기능들은 약 20개의 내장 도구 모듈과 주문형 디버그 플러그인으로 제공됩니다 — 전체 도구 카탈로그 ».

올인원에서 모듈식으로 전환?

번들된 claude-in-mobile에 만족하시나요? 아무것도 하지 마세요 — 계속 유지 관리되며 이전과 동일하게 설치됩니다. 이 섹션은 모듈식 에디션으로 이동하려는 경우에만 해당됩니다.

  • claude-in-mobile 명령어는 어느 쪽이든 계속 작동합니다 — mcp-devices는 mcp-devices와 claude-in-mobile 바이너리를 모두 설치합니다.

  • 유일한 차이점은 플랫폼이 번들로 제공되지 않는다는 점입니다 — 실제로 사용하는 플랫폼만 설치하세요:

npm i -g mcp-devices
npm i -g @mcp-devices/plugin-android   # (or plugin-all for everything)
mcp-devices install android

도구, 액션 및 MCP 클라이언트 구성은 번들 에디션과 동일합니다.

문서

참고 사항

  • 모듈식 기본 버전은 기본적으로 플랫폼을 로드하지 않습니다 — 필요한 플랫폼만 활성화하세요 (mcp-devices install <name>). claude-in-mobile 에디션은 모든 플랫폼을 활성화합니다.

  • 디버그 플러그인은 아직 mcp-devices install의 일부가 아닙니다 — MCP_DEVICES_TOOL_PLUGINS=debug 또는 ~/.mcp-devices/config.json으로 활성화하세요.

  • 모든 기능을 하나의 패키지로 선호하시나요? 올인원 claude-in-mobile 에디션을 사용하세요 (npm i -g claude-in-mobile) — 계속 유지 관리되며 설치 방식은 동일합니다.

Available Tools

14 tools
appC

App lifecycle: launch, stop, install, list

NameRequiredDescriptionDefault
pathNoPath to APK (Android) or .app bundle (iOS)
actionYes
delayMsNoDelay between stop and launch in ms (default: 500). Useful so OS releases resources.
packageNoPackage name (Android) or bundle ID (iOS), e.g., com.android.settings or com.apple.Preferences
deviceIdNoTarget device ID for multi-device. If omitted, uses active device.
platformNoTarget platform. If not specified, uses the active target.
packageNameNoAlias for 'package'. App package name (Android) or bundle ID (iOS). Either 'package' or 'packageName' can be used.
deviceA

Device management + module loading. list/set/set_target/get_target: devices. enable_module/disable_module/list_modules: load browser/desktop/store tools on demand.

NameRequiredDescriptionDefault
actionYes
moduleNoModule name or array of names (for enable_module/disable_module)
targetNoTarget platform to switch to (for set_target)
categoryNoEnable/disable all modules in category (for enable_module/disable_module)
deviceIdNoDevice ID (for set)
platformNoFilter by platform or target platform
flowA

Flow orchestration: batch (multi-command), run (multi-step automation with loops/conditionals), parallel (same action on multiple devices). Use turbo:true for rich feedback (experimental).

NameRequiredDescriptionDefault
argsNoArguments for the action (deviceId will be injected per device)
stepsNoSteps to execute sequentially
turboNo[experimental] Rich UI feedback per step. Compact UI tree after each step, screenshot on failure.
actionYes
devicesNoArray of device IDs to target. Use device(action:'list') to get available devices.
commandsNoArray of commands to execute sequentially
platformNoTarget platform. If not specified, uses the active target.
maxDurationNoMax total duration in ms (default: 30000, max: 60000)
stopOnErrorNoStop execution on first error (default: true)
inputC

Input actions. tap/double_tap/long_press: coords or text/id/label/index. swipe: direction or coords. text: type text. key: press key.

NameRequiredDescriptionDefault
xNoX coordinate
yNoY coordinate
x1NoStart X (for custom swipe)
x2NoEnd X (for custom swipe)
y1NoStart Y (for custom swipe)
y2NoEnd Y (for custom swipe)
keyNoKey name: BACK, HOME, ENTER, TAB, DELETE, etc.
textNoElement text (tap) or text to type (text action)
hintsNoReturn hints about what changed after the action (default: true, set false to disable)
indexNoTap element by index from ui_tree output (Android only)
labelNoiOS only: Accessibility label
actionYes
deviceIdNoTarget device ID for multi-device. If omitted, uses active device.
durationNoDuration in ms (long_press default: 1000, swipe default: 300)
intervalNoDelay between taps in ms for double_tap (default: 100)
platformNoTarget platform. If not specified, uses the active target.
directionNoSwipe direction
targetPidNoDesktop only: PID of target process
resourceIdNoFind element by resource ID (Android only)
repl_expectB

Block until a prompt regex matches, the session idles, the child exits, or the timeout fires.

NameRequiredDescriptionDefault
idYes
regexNo
idleMsNo
timeoutMsNo
repl_keyA

Send a control key (enter/ctrl-c/ctrl-d/tab/arrows) to a session.

NameRequiredDescriptionDefault
idYes
keyYes
repl_killA

Terminate a REPL session (SIGTERM, then SIGKILL).

NameRequiredDescriptionDefault
idYes
repl_listB

List active REPL sessions and their statuses.

NameRequiredDescriptionDefault

No parameters

repl_sendB

Write text to a REPL session. Appends a newline by default.

NameRequiredDescriptionDefault
idYes
textYes
newlineNo
repl_snapshotB

Read the current emulated terminal screen for a session. Output is redacted for common secret patterns unless disabled at plugin construction time.

NameRequiredDescriptionDefault
idYes
tailNoTrailing lines to return
repl_spawnA

Start an interactive REPL or CLI process under a PTY. Returns the session id. cmd is exec'd directly (argv split, no shell): env-var prefixes, redirections (2>&1), pipes and globs are NOT interpreted — pass env via the env param, or set shell:true to run cmd through /bin/sh -c.

NameRequiredDescriptionDefault
idYesSession name (unique)
cmdYesCommand line to spawn
cwdNo
envNo
colsNo
rowsNo
shellNoRun cmd via /bin/sh -c so shell syntax (env prefixes, 2>&1, pipes, globs, &&) works.
promptRegexNo
screenB

Screen capture and annotation. capture: screenshot with compression/diff. annotate: screenshot with element bounding boxes.

NameRequiredDescriptionDefault
diffNoCompare with previous screenshot (capture only)
actionYes
presetNoQuality preset: low (270x480 q40), medium (540x960 q55, default), high (810x1440 q70)
qualityNoJPEG quality 1-100 (default: 55)
compressNoCompress image (default: true)
deviceIdNoTarget device ID for multi-device. If omitted, uses active device.
maxWidthNoMax width in pixels (default: 540)
platformNoTarget platform. If not specified, uses the active target.
maxHeightNoMax height in pixels (default: 960)
monitorIndexNoMonitor index for multi-monitor desktop setups
diffThresholdNoPixel difference threshold 0-255 (default: 30)
waitForStableNoWait for UI to stabilize before capturing (capture only)
systemC

System operations, clipboard, permissions, files. shell: run command. logs: device logs. clipboard_*: Android clipboard. permission_*: app permissions. file_*: Aurora file transfer.

NameRequiredDescriptionDefault
msNoDuration in milliseconds (wait, default: 1000)
tagNoFilter by tag (logs, Android only)
urlNoURL to open (open_url)
levelNoLog level filter (logs)
linesNoNumber of log lines (logs, default: 100)
actionYes
commandNoShell command to execute (shell)
fieldIdNoFind input field by resource ID before paste (clipboard_paste)
packageNoPackage name (logs, permissions)
platformNoTarget platform. If not specified, uses the active target.
fieldTextNoFind input field by text before paste (clipboard_paste)
localPathNoLocal file path (file_push/pull)
permissionNoPermission to grant/revoke (permission_grant/revoke)
remotePathNoRemote file path (file_push/pull)
uiB

UI inspection and interaction. tree: accessibility tree. find: search elements. find_tap: fuzzy tap (Android). tap_text: tap by text (Desktop). analyze: screen analysis. wait/assert_visible/assert_gone: element checks.

NameRequiredDescriptionDefault
pidNoProcess ID of target application (tap_text only)
textNoElement text to search/check (partial match, case-insensitive)
freshNoForce bypass cache and fetch live UI tree
labelNoiOS: Find by accessibility label
actionYes
formatNoOutput format. semantic = grouped by role, minimal tokens
compactNoCompact output: only interactive elements, short format (tree only)
showAllNoShow all elements including non-interactive (tree only)
timeoutNoMax wait time in ms for wait (default: 5000)
visibleNoiOS: Filter by visibility
deviceIdNoTarget device ID for multi-device. If omitted, uses active device.
intervalNoPoll interval in ms for wait (default: 500)
platformNoTarget platform. If not specified, uses the active target.
classNameNoFind by class name
clickableNoAndroid: Filter by clickable state
exactMatchNoRequire exact text match for tap_text (default: false)
resourceIdNoAndroid: Find by resource ID (partial match)
descriptionNoNatural language description of element to tap (find_tap only)
minConfidenceNoMinimum confidence score 0-100 for find_tap (default: 30)
walkToClickableNoIf matched element is non-clickable (e.g., a TextView label), walk up to the smallest containing clickable ancestor. Default true. Set false to tap the matched element directly even if non-clickable (rare).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv4.0.0
    • Changedflow12 fields changed
      • addedInput schema / properties / args / additionalProperties
        Added value: +{}
      • addedInput schema / properties / args / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / commands / items / additionalProperties
        Added value: +false
      • addedInput schema / properties / commands / items / properties / arguments / additionalProperties
        Added value: +{}
      • addedInput schema / properties / commands / items / properties / arguments / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / maxDuration / default
        Removed value: -30000
      • addedInput schema / properties / steps / items / additionalProperties
        Added value: +false
      • addedInput schema / properties / steps / items / properties / args / additionalProperties
        Added value: +{}
      • addedInput schema / properties / steps / items / properties / args / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / repeat / additionalProperties
        Added value: +false
      • removedInput schema / properties / stopOnError / default
        Removed value: -true
      • removedInput schema / properties / turbo / default
        Removed value: -false
    • Addedrepl_expect
    • Addedrepl_key
    • Addedrepl_kill
    • Addedrepl_list
    • Addedrepl_send
    • Addedrepl_snapshot
    • Addedrepl_spawn
  2. 1 tool updatev3.10.2
    • Changedflow1 field changed
      • addedInput schema / properties / turbo
        Added value: +{
        +  "default": false,
        +  "description": "[experimental] Rich UI feedback per step. Compact UI tree after each step, screenshot on failure.",
        +  "type": "boolean"
        +}
  3. 7 tool updatesv3.9.1
    • Addedapp
    • Addeddevice
    • Addedflow
    • Addedinput
    • Addedscreen
    • Addedsystem
    • Addedui
  4. 7 tool updatesv3.8.1
    • Removedapp
    • Removeddevice
    • Removedflow
    • Removedinput
    • Removedscreen
    • Removedsystem
    • Removedui

TDQS

B3.4/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clear, distinct purposes (input vs. screen vs. ui vs. app lifecycle). However, 'input' and 'ui' both handle taps/texts, which could cause confusion; 'repl_*' tools are clearly separate but 'repl_spawn' vs 'repl_send' might overlap slightly in purpose.

Naming Consistency4/5

Tools mostly follow single-word or verb_noun patterns, with 'repl_*' prefix consistently used. However, mixed styles like 'tap_text' vs 'find_tap' and 'repl_spawn' vs 'spawn' deviation from a uniform convention, though the naming is generally predictable.

Tool Count4/5

14 tools is within the ideal 3-15 range, slightly on the higher end but each covers a distinct functionality area. The count feels appropriate for a mobile automation server, though some categories could be consolidated.

Completeness4/5

The tool surface covers core mobile automation needs: input, UI inspection, app lifecycle, device management, screen capture, and flow orchestration. Missing are some advanced operations like gesture composition or multi-touch, and the 'system' category is broad but shallow. Overall, no critical gaps for basic workflows.

Maintenance

ActivitySlowing
ResponsivenessUsually handled

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables AI agents to interact with Android devices through UI manipulation, screen capture, touch gestures, text input, and app management via ADB. Provides comprehensive mobile automation capabilities including element detection, navigation, and application control for Android device testing and interaction.
    9
    46 PyPI
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Android devices and emulators through ADB, allowing control actions like tapping, text input, screenshots, UI inspection, and app launching through natural language.
    16 npm
    8
    ISC
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to control mobile and desktop devices with natural language, including running automation tasks, taking screenshots, and managing devices.
    6
    5 npm
    MIT