返回 MCP 目录
public公开dns本地运行

Android Debug Bridge

一个基于ADB的Android设备控制服务器,通过MCP协议提供设备管理功能,支持ADB命令执行、屏幕截图、UI布局分析和应用包管理。

article

README

🚀 Android MCP 服务器

Android MCP 服务器是一个基于 Model Context Protocol (MCP) 的服务器,借助 Android Debug Bridge (ADB) 实现对安卓设备的程序化控制。它提供了丰富的安卓设备管理功能,可通过 MCP 客户端(如 Claude 桌面)和代码编辑器(如 Cursor)进行访问。

🚀 快速开始

在使用 Android MCP 服务器之前,你需要完成一系列的准备工作,包括安装必要的软件和配置服务器。

✨ 主要特性

  • 🔧 执行 ADB 命令:可直接在服务器端对安卓设备执行各种 ADB 命令。
  • 📸 截取设备屏幕截图:方便获取设备当前的屏幕画面。
  • 🎯 分析用户界面布局:对设备的界面布局进行详细分析。
  • 📱 管理设备软件包:实现对设备上软件包的管理操作。

📦 安装指南

先决条件

  • Python 3.x
  • 已安装并配置 Android Debug Bridge (ADB)
  • 安卓设备或模拟器(未经过测试)

安装步骤

  1. 克隆仓库:
git clone https://github.com/minhalvp/android-mcp-server.git
cd android-mcp-server
  1. 安装依赖: 此项目使用 uv 进行项目管理,可通过多种方式安装。
uv python install 3.11
uv sync

📚 详细文档

配置

服务器使用简单的 YAML 配置文件(config.yaml)指定目标安卓设备。

自定义配置

  1. 创建新配置文件:
touch config.yaml
  1. 配置您的设备:
device:
  name: "google-pixel-7-pro:5555" # 您的设备标识符,来自 'adb devices'

使用方法

需要 MCP 客户端才能使用此服务器。Claude Desktop 应用是一个例子。要与 Claude Desktop 一起使用此服务器:

  1. 找到您的 Claude Desktop 配置文件位置:
    • Windows:%APPDATA%\Claude\claude_desktop_config.json
    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  2. mcpServers 部分添加 Android MCP 服务器配置:
{
  "mcpServers": {
    "android": {
      "command": "path/to/uv",
      "args": ["--directory", "path/to/android-mcp-server", "run", "server.py"]
    }
  }
}

替换以下内容:

  • path/to/uv 为您实际的 uv 可执行文件路径
  • path/to/android-mcp-server 您克隆此仓库的实际绝对路径

GitHub 资源附加

💻 使用示例

基础用法

服务器公开了以下工具,以下是各工具的使用示例:

def get_packages() -> str:
    """
    获取设备上所有已安装的软件包。
    返回:
        str:设备上所有已安装软件包的字符串列表
    """

def execute_adb_command(command: str) -> str:
    """
    执行 ADB 命令并返回输出。
    参数:
        command (str):要执行的命令
    返回:
        str:命令的输出结果
    """

def get_window_bounds(package_name: str, activity_name: str) -> tuple[int, int, int, int]:
    """
    获取指定应用程序窗口的边界坐标。
    参数:
        package_name (str):应用程序包名
        activity_name (str):活动名称
    返回:
        tuple[int, int, int, int]:左上角 x,左上角 y,右下角 x,右下角 y 的元组
    """

def get_window_size(package_name: str, activity_name: str) -> tuple[int, int]:
    """
    获取指定应用程序窗口的大小。
    参数:
        package_name (str):应用程序包名
        activity_name (str):活动名称
    返回:
        tuple[int, int]:窗口宽度和高度的元组
    """

def get_display_metrics(package_name: str, activity_name: str) -> dict:
    """
    获取指定应用程序窗口的显示指标。
    参数:
        package_name (str):应用程序包名
        activity_name (str):活动名称
    返回:
        dict:包含密度、宽度和高度等信息的字典
    """

def get_views(package_name: str, activity_name: str) -> list:
    """
    获取指定应用程序窗口中的所有视图。
    参数:
        package_name (str):应用程序包名
        activity_name (str):活动名称
    返回:
        list:包含视图信息的列表
    """

🤝 贡献

如需贡献,请参考项目仓库 GitHub

🙏 致谢

感谢您使用此项目!如遇问题或有任何建议,请随时提出。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端