loading…
Search for a command to run...
loading…
Enables programmatic control of Android devices via ADB, supporting UI automation, app management, screen capture with OCR, and file transfers through the Model
Enables programmatic control of Android devices via ADB, supporting UI automation, app management, screen capture with OCR, and file transfers through the Model Context Protocol. It allows MCP-compatible clients like Claude Desktop and Cursor to interact directly with physical or emulated Android devices.
一个通过 ADB(Android Debug Bridge)提供 Android 设备编程控制的 MCP(Model Context Protocol)服务器。该服务器暴露多种 Android 设备管理能力,可被 MCP 客户端访问,例如 Claude Desktop 和代码编辑器(如 Cursor、Kiro)。
pip install android-adb
uvx android-adb
git clone https://github.com/xuegao-tzx/android-adb-mcp.git
cd android-adb-mcp
uv pip install -e "."
# Ubuntu/Debian
sudo apt install tesseract-ocr
# macOS (使用 Homebrew)
brew install tesseract
# Windows
# 从以下地址下载安装程序: https://github.com/UB-Mannheim/tesseract/wiki
服务器支持灵活的设备配置,适用于多种使用场景。
服务器会按以下顺序查找 config.yaml:
config.yaml~/.android-adb/config.yaml(用户 home 目录)如果未找到配置文件,服务器会在仅连接一个设备时自动选择。
1. 自动选择(单设备推荐)
2. 手动指定设备
创建 config.yaml:
device:
name: "your-device-serial-here" # 来自 'adb devices' 的设备标识符
adb devices
输出示例:
List of devices attached
13b22d7f device
emulator-5554 device
使用第一列的值作为设备名称。
| 场景 | 是否需要配置 | 行为 |
|---|---|---|
| 单设备连接 | 不需要 | ✅ 自动连接该设备 |
| 多设备,指定某一个 | 需要 config.yaml |
✅ 连接到指定设备 |
| 多设备,无配置 | 不需要 | ❌ 显示错误并列出可用设备 |
| 无设备连接 | 不适用 | ❌ 显示"无设备"错误 |
需要 MCP 客户端来使用此服务器。
在 Claude Desktop 配置文件中添加:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonpip 安装方式:
{
"mcpServers": {
"android": {
"command": "android-adb"
}
}
}
uvx 方式(无需预安装):
{
"mcpServers": {
"android": {
"command": "uvx",
"args": ["android-adb"]
}
}
}
在项目的 MCP 配置文件中添加:
{
"mcpServers": {
"android": {
"command": "uvx",
"args": ["android-adb"],
"disabled": false,
"autoApprove": []
}
}
}
服务器暴露以下 41 个工具:
| 工具 | 说明 |
|---|---|
list_devices() |
列出所有已连接的 Android 设备及其状态 |
get_packages() |
获取设备上所有已安装的应用包名 |
execute_adb_shell_command(command) |
执行 ADB shell 命令并返回输出 |
get_uilayout() |
获取当前界面中可点击元素的信息 |
get_screenshot() |
截取设备屏幕截图并返回 |
get_screenshot_ocr(search_string, confidence_threshold) |
在截图中搜索指定文本并返回位置坐标 |
get_screenshot_text(confidence_threshold) |
使用 OCR 获取截图中的所有文本及坐标 |
get_package_action_intents(package_name) |
获取指定包的所有非数据 Action |
| 工具 | 说明 |
|---|---|
tap(x, y) |
点击屏幕指定坐标 |
double_tap(x, y, interval) |
双击屏幕指定坐标 |
long_press(x, y, duration) |
长按屏幕指定坐标 |
swipe(x1, y1, x2, y2, duration) |
从一个坐标滑动到另一个坐标 |
pinch_zoom(cx, cy, scale, duration) |
在指定中心点执行缩放手势 |
input_text(text) |
在当前焦点输入框中输入文本 |
press_key(keycode) |
发送按键事件(HOME/BACK/ENTER 等) |
| 工具 | 说明 |
|---|---|
launch_app(package_name) |
启动指定应用 |
start_activity(package_name, activity_name, extras) |
启动指定 Activity |
stop_app(package_name) |
强制停止指定应用 |
clear_app_data(package_name) |
清除指定应用的所有数据 |
install_apk(apk_path) |
安装 APK 到设备 |
uninstall_app(package_name) |
卸载指定应用 |
get_current_activity() |
获取当前前台 Activity 的包名和类名 |
open_url(url) |
在设备上打开指定 URL |
grant_permission(package_name, permission) |
授予应用运行时权限 |
revoke_permission(package_name, permission) |
撤销应用运行时权限 |
| 工具 | 说明 |
|---|---|
get_device_info() |
获取设备基础信息(型号、系统版本、分辨率等) |
get_battery_info() |
获取电池信息(电量、充电状态、温度等) |
push_file(local_path, remote_path) |
推送本地文件到设备 |
pull_file(remote_path, local_path) |
从设备拉取文件到本地 |
list_files(remote_path) |
列出设备上指定目录的文件和文件夹 |
| 工具 | 说明 |
|---|---|
set_wifi(enable) |
开启或关闭 WiFi |
set_bluetooth(enable) |
开启或关闭蓝牙 |
toggle_airplane_mode() |
切换飞行模式 |
set_screen_brightness(level) |
设置屏幕亮度(0-255) |
set_screen_orientation(orientation) |
设置屏幕方向(auto/portrait/landscape 等) |
| 工具 | 说明 |
|---|---|
get_clipboard() |
获取设备剪贴板内容 |
set_clipboard(text) |
设置设备剪贴板内容 |
| 工具 | 说明 |
|---|---|
record_screen(duration) |
录制设备屏幕,最大 180 秒 |
get_logcat(filter_expr, lines) |
获取设备日志 |
clear_logcat() |
清除日志缓冲区 |
wait_for_element(text, timeout) |
等待指定文本的元素出现在界面上 |
欢迎贡献代码!
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"android-adb-mcp-server": {
"command": "npx",
"args": []
}
}
}