Skip to main content
Glama
@wilsonbeam/openclaw-adb-mcp

@wilsonbeam/openclaw-adb-mcp

by wilsonbeam

@wilsonbeam/openclaw-adb-mcp

Give AI agents full control of real Android phones.

MCP Server + OpenClaw Skill for Android device automation via ADB.

What Can It Do?

  • šŸ“± Screen Control — tap, swipe, type text, take screenshots

  • šŸ“ž Phone Functions — make calls, send SMS, check call state

  • šŸ“¦ App Management — install, uninstall, list packages

  • šŸ”§ Device Control — shell commands, push/pull files, wake screen

Related MCP server: ADB MCP Server

Quick Start

1. Install ADB

# macOS
brew install android-platform-tools

# Linux  
sudo apt install adb

# Windows
# Download from developer.android.com/tools/releases/platform-tools

2. Connect Your Android Device

  1. Enable Developer Options on your phone

  2. Enable USB Debugging

  3. Connect via USB cable

  4. Accept the authorization prompt on your phone

Verify:

adb devices
# Should show: XXXXX device

3. Add to OpenClaw

Add to your ~/.openclaw/config.yaml:

mcp:
  servers:
    adb:
      command: npx
      args: ["@wilsonbeam/openclaw-adb-mcp"]

Or install globally first:

npm install -g @wilsonbeam/openclaw-adb-mcp

Then:

mcp:
  servers:
    adb:
      command: openclaw-adb-mcp

The skill teaches your AI agent how to use the ADB tools effectively.

# From clawhub.com (coming soon)
openclaw skill install adb

# Or manually copy the skill folder
cp -r skill/ ~/.openclaw/skills/adb/

Available Tools (26 total)

Core ADB

Tool

Description

adb_list_devices

List connected Android devices

adb_shell

Execute shell command

adb_device_info

Get model, brand, Android version

adb_install_app

Install APK file

adb_uninstall_app

Uninstall app

adb_list_packages

List installed packages

adb_push_file

Push file to device

adb_pull_file

Pull file from device

adb_start_activity

Start activity/intent

adb_force_stop

Force stop app

adb_clear_data

Clear app data

Screen Control

Tool

Description

adb_tap

Tap at coordinates

adb_swipe

Swipe gesture

adb_long_press

Long press

adb_type_text

Type into focused field

adb_press_key

Press Android keycode

adb_screenshot

Capture screen (returns base64 PNG)

adb_screen_size

Get screen dimensions

adb_wake

Wake device screen

adb_press_home

Press home button

adb_press_back

Press back button

Phone Functions

Tool

Description

adb_make_call

Make phone call (dials immediately)

adb_dial_number

Open dialer with number

adb_end_call

End current call

adb_send_sms

Open SMS composer

adb_call_state

Get call state (idle/ringing/offhook)

adb_answer_call

Answer incoming call

Unlock

Tool

Description

adb_unlock

Unlock with password, PIN, pattern, or swipe

adb_is_locked

Check if device is locked

adb_lock

Lock the device screen

Auto-Unlock

The adb_unlock tool supports multiple lock types:

// Password
adb_unlock({ type: "password", credential: "mypassword" })

// PIN
adb_unlock({ type: "pin", credential: "1234" })

// Pattern (3x3 grid, digits 0-8)
// Grid layout:
//   0 1 2
//   3 4 5
//   6 7 8
adb_unlock({ type: "pattern", credential: "0123" })  // Top row
adb_unlock({ type: "pattern", credential: "0147" })  // L-shape
adb_unlock({ type: "pattern", credential: "02468" }) // X pattern

// Swipe only (no security)
adb_unlock({ type: "none" })

Example Conversations

"Take a screenshot of my phone" → Agent uses adb_screenshot, returns the image

"Call Mom at +1-555-123-4567" → Agent uses adb_make_call

"Open Chrome and search for weather" → Agent uses adb_start_activity to launch Chrome, adb_tap on search bar, adb_type_text to enter query

"Install the APK I just downloaded" → Agent uses adb_install_app with the APK path

Project Structure

openclaw-adb-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts          # MCP server entry point
│   └── adb/
│       ā”œā”€ā”€ executor.ts   # Low-level ADB execution
│       ā”œā”€ā”€ core.ts       # Device, app, file operations
│       ā”œā”€ā”€ screen.ts     # Tap, swipe, screenshot
│       └── phone.ts      # Call, SMS functions
ā”œā”€ā”€ skill/
│   ā”œā”€ā”€ SKILL.md          # OpenClaw skill definition
│   └── scripts/
│       └── check-setup.sh
ā”œā”€ā”€ package.json
└── tsconfig.json

Multiple Devices

All tools accept optional deviceId. If omitted with multiple devices connected, ADB errors. Use adb_list_devices to get device IDs.

Development

git clone https://github.com/wilsonbeam/openclaw-adb-mcp
cd openclaw-adb-mcp
npm install
npm run build
npm run dev  # Build and run

Troubleshooting

No devices found

  • Check USB cable and connection

  • Enable USB debugging on device

  • Run adb kill-server && adb start-server

Device unauthorized

  • Accept the RSA key prompt on your phone screen

Screenshot fails

  • Wake the screen first with adb_wake

  • Some devices need screen unlock

License

MIT

Author

Wilson Beam / OpenClaw

Available Tools

30 tools
adb_answer_callB

Answer an incoming call

Inputs: deviceId.

adb_call_stateA

Get the current call state (idle, ringing, or offhook)

Inputs: deviceId.

adb_clear_dataB

Clear all data for an application

Inputs: packageName (required), deviceId.

adb_device_infoB

Get detailed information about an Android device (model, brand, Android version, etc.)

Inputs: deviceId.

adb_dial_numberA

Open the dialer with a number (does not dial - user must press call)

Inputs: phoneNumber (required), deviceId.

adb_end_callA

End the current phone call

Inputs: deviceId.

adb_force_stopB

Force stop an application

Inputs: packageName (required), deviceId.

adb_install_appB

Install an APK file on the device

Inputs: apkPath (required), deviceId, reinstall, grantPermissions.

adb_is_lockedB

Check if the device screen is locked

Inputs: deviceId.

adb_list_devicesA

List all connected Android devices with their status and info

Inputs: no named parameters.

adb_list_packagesC

List installed packages on the device

Inputs: filter, deviceId.

adb_lockA

Lock the device screen

Inputs: deviceId.

adb_long_pressB

Long press on the screen at the specified coordinates

Inputs: x (required), y (required), deviceId, durationMs.

adb_make_callC

Make a phone call to the specified number (dials immediately)

Inputs: phoneNumber (required), deviceId.

adb_press_backB

Press the back button

Inputs: deviceId.

adb_press_homeA

Press the home button

Inputs: deviceId.

adb_press_keyB

Press a key on the device (using Android keycode)

Inputs: keycode (required), deviceId.

adb_pull_fileA

Pull a file from the Android device to local machine

Inputs: localPath (required), remotePath (required), deviceId.

adb_push_fileA

Push a file from local machine to the Android device

Inputs: localPath (required), remotePath (required), deviceId.

adb_screenshotA

Take a screenshot of the device screen and return as base64 PNG

Inputs: deviceId.

adb_screen_sizeC

Get the screen dimensions of the device

Inputs: deviceId.

adb_send_smsA

Open SMS composer with a pre-filled message (user must press send)

Inputs: message (required), phoneNumber (required), deviceId.

adb_shellC

Execute a shell command on the Android device

Inputs: command (required), deviceId.

adb_start_activityB

Start an activity with the given intent

Inputs: intent (required), deviceId.

adb_swipeA

Swipe from one point to another on the screen

Inputs: endX (required), endY (required), startX (required), startY (required), +2 more.

adb_tapA

Tap on the screen at the specified coordinates

Inputs: x (required), y (required), deviceId.

adb_type_textA

Type text into the currently focused input field

Inputs: text (required), deviceId.

adb_uninstall_appA

Uninstall an app from the device

Inputs: packageName (required), deviceId, keepData.

adb_unlockA

Unlock the device with password, PIN, pattern, or swipe. Pattern uses 3x3 grid numbered 0-8 (top-left to bottom-right), e.g., '0123' or '0147' for L-shape.

Inputs: type (required), deviceId, credential.

adb_wakeB

Wake up the device screen

Inputs: deviceId.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 30 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose with detailed descriptions. Even related actions like make_call vs dial_number are unambiguously differentiated by their behavior, and press_key vs press_home/back are specific. No two tools appear to perform the same function.

    Naming Consistency4/5

    The naming pattern is mostly consistent with the 'adb_' prefix followed by a verb and object (e.g., install_app, push_file, answer_call). However, a few names are noun phrases or queries (device_info, screen_size, call_state, is_locked), deviating from the verb-first style and creating minor inconsistency.

    Tool Count2/5

    With 30 tools, this server exceeds the typical well-scoped range and crosses the 25+ threshold. While each tool has a distinct purpose, the large number can overwhelm agents and many could be consolidated via parameters, making the count feel excessive for most use cases.

    Completeness4/5

    The tool set covers a wide range of ADB operations including device management, app lifecycle, file transfer, UI automation, telephony, and locking. Notable omissions like reboot and logcat are not directly exposed, but the adb_shell tool allows these to be executed manually, so agents can work around these gaps effectively.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      A lightweight MCP server for Android operating system automation. This server provides tools to interact directly with Android devices and app interaction with control
      3
      -
    • F
      license
      A
      quality
      C
      maintenance
      A MCP server that enables AI assistants to control Android devices via ADB, supporting device info, screen control, input simulation, app management, shell execution, file transfer, and UI parsing.
      20
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      A powerful MCP server that provides comprehensive Android device automation capabilities through ADB, enabling AI agents to interact with Android devices for testing, automation, and device control tasks.
      1
      -