Token导航 LogoToken导航TokenDH.com
Android Action MCP logo
AI代理未说明官方级别未说明来源级核验

Android Action MCP

MCP Server

一个生产就绪的模型上下文协议(MCP)服务器,通过ADB使AI助手能够与Android设备交互,提供UI操作、设备监控和自动化工作流管理功能。

工具数

0

提示词数

0

GitHub Stars

7

资源数

0
设备管理GoClaudeClaude DesktopClaudeClineVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

holocode-ai

提供方

holocode-ai

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Android Action MCP 服务器

英语 | 简体中文

一个可投入生产的模型上下文协议(MCP)服务器,它使像Claude Code这样的AI助手能够通过ADB与Android设备进行交互。

概述

这台MCP服务器提供了对Android设备的全面程序化访问,使AI助手能够:

  • 从Android设备捕获UI树和屏幕截图
  • 与用户界面元素进行交互(点击、输入、滑动、拖动)
  • 浏览应用程序并执行操作
  • 监控设备状态和网络活动
  • 管理应用和权限
  • 执行自动化工作流

该实现的灵感来源于:

  • scrcpy(用于安卓设备的屏幕镜像和控制工具)为了高效的Android设备通信模式
  • playwright-mcp 可以翻译为“Playwright MCP”(如果MCP是特定项目、模块或配置的名称),或者根据上下文具体解释,比如“Playwright的MCP(多配置/多平台/特定组件等,具体含义需根据上下文确定)”。在没有具体上下文的情况下,一个较为通用的翻译是“Playwright MCP(具体含义依上下文而定)”。如果MCP是一个已知术语或特定项目名,应直接使用其官方或公认的中文译名对于MCP工具设计模式

特点/特性

✅ 31款生产就绪工具(100% 完成)

一级:必备工具(11/11)

核心自动化功能:

  • 安卓快照捕获结构化UI树(主要交互方式)
  • 安卓截图捕获PNG格式的截图
  • 安卓点击轻触、长按和双击手势
  • android_type(可译为“安卓类型”或根据上下文具体指代,如“安卓手机型号”等)自动聚焦的文本输入
  • 安卓导航启动应用程序并打开URL/深度链接
  • Android返回导航返回按钮导航
  • 按下Android键盘上的键硬件/软件关键事件
  • 等待Android(系统/设备)等待用户界面条件或时间延迟
  • 安卓滑动方向性滑动手势
  • Android设备信息设备规格和功能
  • 当前Android活动(或当前Android应用界面)获取前台应用程序和活动

第二级:重要工具(9/9)

全面的自动化功能:

  • 安卓滚动滚动到元素可见
  • 填写Android表单批量表单字段填充
  • 安卓应用应用管理(列出/切换/最近/关闭)
  • Android 关闭强制停止应用程序
  • Android选择选项下拉选择器(下拉菜单)选择
  • 安卓安装APK安装
  • 授予Android权限运行时权限授予
  • Android对话框处理多语言对话处理
  • Android控制台消息Logcat消息检索

第三级:高级工具(6/6)

专业级高级用户功能:

  • Android 拖放(或:安卓拖动)拖放手势
  • Android评估安全执行shell命令
  • 安卓调整大小屏幕方向控制
  • 清除Android应用数据清除应用数据和缓存
  • Android文件选择文件上传和选择
  • Android网络请求网络活动监控

第4级:可选工具(5/5)

锦上添花的功能:

  • Android_hover(安卓悬停/安卓悬浮)悬停交互(无障碍功能/触控笔)
  • Android打开通知打开通知抽屉
  • 打开Android快速设置打开快速设置面板
  • 设置剪贴板(在Android系统中)设置剪贴板文本
  • 获取Android剪贴板内容获取剪贴板文本

先决条件

  1. Go 1.21+(或更高版本) 安装好的
  1. ADB(Android调试桥) 已安装且已添加到系统路径(PATH)中
   # macOS
   brew install android-platform-tools

   # Ubuntu/Debian
   sudo apt-get install android-tools-adb
  1. scrcpy 已安装(截图功能所需)
   # macOS
   brew install scrcpy

   # Ubuntu/Debian
   sudo apt install scrcpy

   # Arch Linux
   sudo pacman -S scrcpy

   # Windows (via Scoop)
   scoop install scrcpy

为什么选择scrcpy? 这个项目使用了scrcpy的高效屏幕截图方法来捕获截图,与原生方法相比,它在不同Android设备上的兼容性更好 adb shell screenrecap 命令。一些设备(例如,华为EMUI)不支持原生命令,但scrcpy具有通用性。

  1. 安卓设备 启用USB调试(API 21+)

- 启用开发者选项:设置 → 关于手机 → 连续点击“版本号”7次 - 启用USB调试:设置 → 开发者选项 → USB调试

安装

选项1:下载预编译二进制文件(推荐)

下载适用于您平台的最新版本:

→ 下载最新版本

可用平台:

  • Linuxandroid-mcp-server-linux-amd64android-mcp-server-linux-arm64
  • macOS(发音为 /ˈmækOS/)android-mcp-server-darwin-amd64 (英特尔), android-mcp-server-darwin-arm64 (Apple Silicon)
  • Windowsandroid-mcp-server-windows-amd64.exe

下载后:

# macOS/Linux: Make executable
chmod +x android-mcp-server-*

# Verify with SHA256 checksum
sha256sum android-mcp-server-*
# Compare with checksums.txt from release

# Move to your preferred location (optional)
sudo mv android-mcp-server-* /usr/local/bin/android-mcp-server

选项2:从源代码构建

# Clone the repository
git clone https://github.com/holocode-ai/android-action-mcp.git
cd android-action-mcp

# Build the server
go build -o android-mcp-server ./cmd/server

# Or use make
make build

验证ADB连接

# Connect your Android device via USB
# Check device is recognized
adb devices

# Output should show your device:
# List of devices attached
# XXXXXXXXXXXXX    device

使用方法

使用 Claude Code(VS Code 扩展)

选项1:项目特定配置(推荐)

这个项目包含一个预配置的 .claude/mcp.json 文件。当你在Claude Code中打开这个项目时,MCP服务器将自动可用。

要在其他项目中使用,请复制示例配置:

# Copy the example config
cp mcp.json.example /path/to/your/project/.claude/mcp.json

# Update the command path to point to your build

选项2:全局配置

添加到您的全局MCP设置中(~/.config/claude-code/mcp.json):

{
  "mcpServers": {
    "android-action": {
      "command": "/absolute/path/to/android-mcp-server",
      "env": {},
      "disabled": false
    }
  }
}

将命令路径替换为您的绝对路径 android-mcp-server 二进制。

使用Cline/Claude Dev(VS Code扩展)

添加到您的MCP设置文件中(~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json (在 macOS 上):

{
  "mcpServers": {
    "android-action": {
      "command": "/absolute/path/to/android-mcp-server",
      "args": [],
      "disabled": false
    }
  }
}

使用Claude桌面应用程序

在Claude Desktop的MCP配置中添加:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows%APPDATA%\Claude\claude_desktop_config.json Linux(发音类似“林克斯”)~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "android-action": {
      "command": "/absolute/path/to/android-mcp-server"
    }
  }
}

添加配置后,重启Claude Desktop以加载MCP服务器。

与其他MCP客户端一起

服务器使用stdio传输方式,并且与任何MCP客户端兼容:

# Run directly (communicates via stdin/stdout)
./android-mcp-server

# Show help
./android-mcp-server --help

工具参考

核心元素交互

Android快照

捕获结构化UI树——UI交互的主要方法。

参数:

返回: 带有元素、资源ID、文本、描述、边界和交互功能的格式化文本树

用法:

android_snapshot()

安卓点击

在UI元素上执行点击操作。

参数:

  • element (字符串,必填):可读的人类元素描述
  • ref (字符串,必填):来自快照的元素引用(资源ID、文本或内容描述)
  • long_click (布尔值,可选):执行长按操作而非轻触
  • double_click (布尔值,可选):执行双击操作

用法:

android_click({
  element: "Login button",
  ref: "loginButton"
})

安卓类型

将文本输入到可编辑元素中。

参数:

  • element (字符串,必填项):元素描述
  • ref (字符串,必填):来自快照的元素引用
  • text (字符串,必需): 要输入的文本
  • submit (布尔值,可选):输入后按回车键
  • clear_first (布尔值,可选):在输入前清除现有文本

用法:

android_type({
  element: "Username field",
  ref: "usernameInput",
  text: "user@example.com",
  clear_first: true
})

填写Android表单

一次性填写多个表单字段。

参数:

  • fields (数组,必需): 字段对象的数组,其中包含 reftype,和 value

用法:

android_fill_form({
  fields: [
    {name: "Username", ref: "username", type: "textbox", value: "user@example.com"},
    {name: "Password", ref: "password", type: "textbox", value: "secret123"},
    {name: "Remember me", ref: "rememberMe", type: "checkbox", value: "true"}
  ]
})

导航与应用控制

安卓导航

启动应用或打开URL/深度链接。

参数:

  • package (字符串,可选):应用包名
  • activity (字符串,可选):要启动的具体活动
  • url (字符串,可选):要打开的URL或深度链接

用法:

// Launch app
android_navigate({package: "com.android.chrome"})

// Open URL
android_navigate({url: "https://example.com"})

安卓应用

管理正在运行的应用程序。

参数:

  • action (字符串,必填): "列表", "切换", "最近", "关闭"
  • package (字符串,可选):用于切换/关闭操作的包名

用法:

// List running apps
android_apps({action: "list"})

// Switch to app
android_apps({action: "switch", package: "com.android.chrome"})

屏幕分析

安卓截图

捕获PNG格式的屏幕截图。

参数:

  • filename (字符串,可选):文件名(默认:screenshot-{时间戳}.png)
  • save_path (字符串,可选):保存截图的目录

用法:

android_screenshot({
  filename: "app-screenshot.png",
  save_path: "./screenshots"
})

手势与滚动

安卓滑动

执行滑动手势。

参数:

  • direction (字符串,必填):“上”,“下”,“左”,“右”
  • element (字符串,可选):在其中滑动的元素
  • ref (字符串,可选):元素引用
  • distance (字符串,可选):"短"、"中"、"长"
  • speed (字符串,可选):"快速","中等","缓慢"

用法:

android_swipe({direction: "up", distance: "medium"})

安卓滚动

在容器中滚动,直到元素可见。

参数:

  • container (字符串,必填):可滚动容器的描述
  • container_ref (字符串,必填):容器引用(必须是\[可滚动的\])
  • target_element (字符串,可选):要滚动到的元素
  • direction (字符串,可选):滚动方向
  • max_scrolls (数字,可选):最大滚动尝试次数

用法:

android_scroll({
  container: "Product list",
  container_ref: "productList",
  target_element: "Item 50"
})

等待与同步

等待Android(系统/设备)

等待条件满足或进行时间延迟。

参数:

  • text (字符串,可选):等待文本出现
  • text_gone (字符串,可选):等待文本消失
  • element (字符串,可选):等待元素出现
  • element_gone (字符串,可选):等待元素消失
  • time (数字,可选):等待N秒
  • timeout (数字,可选):最长等待时间(默认:30)

用法:

// Wait for loading to finish
android_wait_for({text_gone: "Loading..."})

// Wait 2 seconds
android_wait_for({time: 2})

调试与设备状态

Android设备信息

获取设备信息。

参数:

返回值: 设备型号、Android版本、屏幕分辨率、DPI(每英寸点数)、SDK版本

用法:

android_device_info()

Android控制台消息

获取 logcat 消息。

参数:

  • only_errors (布尔值,可选):仅过滤错误/警告
  • tag (字符串,可选):按 logcat 标签过滤
  • max_lines (数字,可选):限制输出行数(默认:100)

用法:

android_console_messages({only_errors: true, max_lines: 50})

Android网络请求

监控网络活动。

参数:

  • package (字符串,可选):按包名过滤
  • duration (数字,可选):捕获时长(以秒为单位)(默认:10)

用法:

android_network_requests({package: "com.example.app", duration: 5})

文件与权限管理

安卓安装

安装APK包。

参数:

  • apk_path (字符串,必填):APK文件的本地路径
  • replace (布尔值,可选):替换现有应用(默认:true)
  • grant_permissions (布尔值,可选):授予所有权限(默认:false)

用法:

android_install({
  apk_path: "./app-debug.apk",
  grant_permissions: true
})

授予Android权限

授予应用程序运行时权限。

参数:

  • package (字符串,必填):应用包名
  • permission (字符串,必填):权限名称

用法:

android_grant_permission({
  package: "com.example.app",
  permission: "android.permission.CAMERA"
})

如需完整的工具文档,请参阅 CLAUDE.md(文件名,可译为“克劳德.md”或保持原样,具体取决于上下文是否需要翻译文件名)

建筑学

┌─────────────────┐         ┌──────────────────┐         ┌─────────────────┐
│   AI Assistant  │ ◄─MCP─► │  Go MCP Server   │ ◄─ADB─► │  Android Device │
│  (Claude Code)  │         │  (This Project)  │         │                 │
└─────────────────┘         └──────────────────┘         └─────────────────┘
                                     │                            │
                                     ├─ 31 Tools                  │
                                     ├─ ADB Communication         │
                                     └─ Device Control            │

组件

  1. MCP服务器层 (internal/mcp/)

- 使用官方Go SDK实现MCP协议 - 为AI客户提供31种工具 - 处理标准I/O传输

  1. 亚洲开发银行通信层 (internal/adb/)

- 管理ADB与Android设备的连接 - 执行用于设备控制的shell命令 - 基于scrcpy已验证的架构

  1. 工具层 (internal/tools/

- 实现单个MCP工具 - UI树解析与元素选择 - 坐标计算与手势处理

发展

项目结构

android-action-mcp/
├── cmd/
│   └── server/          # Main entry point
├── internal/
│   ├── mcp/             # MCP server implementation
│   ├── tools/           # 31 MCP tool implementations
│   ├── adb/             # ADB communication layer
│   └── uitree/          # UI tree parsing and selector
├── android-test-app/    # Custom test application
├── go.mod
├── Makefile
├── CLAUDE.md            # Developer documentation
└── README.md            # This file

建筑

# Build
make build

# Run tests
make test

# Clean build artifacts
make clean

测试

所有31种工具都已在真实硬件上进行了测试:

  • 测试设备华为ANA-AN00,搭载Android 12(SDK 31),屏幕分辨率为1080x2340
  • 测试应用自定义MCP测试应用(com.test.mcptest)
  • 测试覆盖率100%的已实施工具均通过真实设备交互进行了测试

故障排除

没有设备连接

# Error: no Android devices connected
# Solution: Check USB connection and USB debugging is enabled
adb devices

# If device shows as "unauthorized", check device screen for authorization dialog

未找到ADB

# Error: failed to initialize ADB
# Solution: Install ADB and ensure it's in PATH
which adb

# macOS
brew install android-platform-tools

# Linux
sudo apt-get install android-tools-adb

权限被拒绝

# Linux: ADB may need udev rules for USB access
# Create file: /etc/udev/rules.d/51-android.rules
# Content: SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", MODE="0666", GROUP="plugdev"
# Replace XXXX with your device's vendor ID (from lsusb)

sudo udevadm control --reload-rules
sudo udevadm trigger

未找到 scrcpy

# Error: scrcpy not found or not in PATH
# Solution: Install scrcpy (required for screenshot functionality)

# macOS
brew install scrcpy

# Ubuntu/Debian
sudo apt install scrcpy

# Verify installation
which scrcpy
scrcpy --version

特定工具的问题

  • 安卓悬停可能无法在仅支持触摸屏的设备上工作(预期行为)
  • 设置Android剪贴板可能在某些制造商(例如,华为EMUI)的设备上无法正常工作
  • 安卓截图必须提供 save_path 参数(base64 编码超出 MCP 令牌限制)

参考文献

许可证

MIT 许可证 - 详情请参见 LICENSE 文件

贡献

欢迎贡献!请随时提交拉取请求。

项目状态

准备就绪,可投入生产 - 所有31个计划中的工具均已在真实硬件上实现并测试。

该服务器通过MCP协议提供全面的Android自动化功能,使AI助手能够执行复杂的测试和自动化工作流程。

目录标签

目录标签

设备管理GoClaudeAndroid自动化本地部署ADB控制UI测试MCP协议

支持客户端

Claude DesktopClaudeClineVS Code

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP