@wilsonbeam/openclaw-adb-mcp
Provides tools for controlling Android devices via ADB, including screen interactions, phone functions, app management, and device control.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@wilsonbeam/openclaw-adb-mcp Take a screenshot of my phone"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@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-tools2. Connect Your Android Device
Enable Developer Options on your phone
Enable USB Debugging
Connect via USB cable
Accept the authorization prompt on your phone
Verify:
adb devices
# Should show: XXXXX device3. 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-mcpThen:
mcp:
servers:
adb:
command: openclaw-adb-mcp4. Install the Skill (Optional but Recommended)
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 |
| List connected Android devices |
| Execute shell command |
| Get model, brand, Android version |
| Install APK file |
| Uninstall app |
| List installed packages |
| Push file to device |
| Pull file from device |
| Start activity/intent |
| Force stop app |
| Clear app data |
Screen Control
Tool | Description |
| Tap at coordinates |
| Swipe gesture |
| Long press |
| Type into focused field |
| Press Android keycode |
| Capture screen (returns base64 PNG) |
| Get screen dimensions |
| Wake device screen |
| Press home button |
| Press back button |
Phone Functions
Tool | Description |
| Make phone call (dials immediately) |
| Open dialer with number |
| End current call |
| Open SMS composer |
| Get call state (idle/ringing/offhook) |
| Answer incoming call |
Unlock
Tool | Description |
| Unlock with password, PIN, pattern, or swipe |
| Check if device is locked |
| 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.jsonMultiple 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 runTroubleshooting
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_wakeSome devices need screen unlock
License
MIT
Author
Wilson Beam / OpenClaw
Available Tools
30 toolsadb_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
Scored across 30 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Appcircle mobile CI/CD platform.
Hosted Android MCP server: cloud Android phones for AI agents. https://mobilebox.dev/mcp, $0.01/min.
Mozark's MCP server for AI-powered app testing: device access, test automation, and QA insights.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA lightweight MCP server for Android operating system automation. This server provides tools to interact directly with Android devices and app interaction with control3-
- FlicenseAqualityCmaintenanceA 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-
- FlicenseNot gradedqualityDmaintenanceA 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-
- AlicenseBqualityCmaintenanceMCP server for Android emulator automation via ADB.1770 npm4MIT