Android Debug Bridge

Android Debug Bridge

🚀 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

🙏 致谢

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

  • 0 关注
  • 0 收藏,20 浏览
  • system 提出于 2025-09-18 10:03

相似服务问题

相关AI产品