@wilsonbeam/openclaw-adb-mcp
MCP server for Android device automation via ADB, enabling screen control, phone functions, app management, and device control.
README
@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
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
- 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 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
4. 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 |
|---|---|
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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。