A

Android MCP 控制服务器

@minhalvp/android-mcp-server
3 Stars 1.1k 次浏览 minhalvp 更新于 2026-08-23

一个通过ADB实现对Android设备程序化控制的服务器,提供截图捕获、UI布局分析和包管理等功能,这些功能可以被像Claude Desktop这样的MCP客户端使用。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "android": {
      "args": [
        "--directory",
        "path/to/android-mcp-server",
        "run",
        "server.py"
      ],
      "command": "path/to/uv"
    }
  }
}

服务介绍

Android MCP 服务器

一个通过 ADB(Android 调试桥)提供对 Android 设备进行编程控制的 MCP(Model Context Protocol)服务器。此服务器暴露了多种 Android 设备管理功能,这些功能可以被如 Claude 桌面版 和代码编辑器(例如 Cursor)等 MCP 客户端访问。

特性

  • 🔧 ADB 命令执行
  • 📸 设备截图捕获
  • 🎯 UI 布局分析
  • 📱 设备包管理

先决条件

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

安装

  1. 克隆仓库:
git clone https://github.com/minhalvp/android-mcp-server.git
cd android-mcp-server
  1. 安装依赖项:
    此项目使用 uv 进行项目管理
uv sync

配置

服务器使用一个简单的 YAML 配置文件 (config.yaml) 来指定目标 Android 设备

自定义配置

  1. 创建一个新的配置文件:
touch config.yaml
  1. 配置您的设备:
device:
  name: "google-pixel-7-pro:5555" # Your device identifier from 'adb devices'

使用

需要一个 MCP 客户端来使用这个服务器。Claude Desktop 应用程序是一个 MCP 客户端的例子。要将此服务器与 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 替换为您克隆此仓库的绝对路径

https://github.com/user-attachments/assets/c45bbc17-f698-43e7-85b4-f1b39b8326a8

可用工具

服务器提供了以下工具:

def get_packages() -> str:
    """
    Get all installed packages on the device.
    Returns:
        str: A list of all installed packages on the device as a string
    """
def execute_adb_command(command: str) -> str:
    """
    Executes an ADB command and returns the output.
    Args:
        command (str): The ADB command to execute
    Returns:
        str: The output of the ADB command
    """
def get_uilayout() -> str:
    """
    Retrieves information about clickable elements in the current UI.
    Returns a formatted string containing details about each clickable element,
    including their text, content description, bounds, and center coordinates.

    Returns:
        str: A formatted list of clickable elements with their properties
    """
def get_screenshot() -> Image:
    """
    Takes a screenshot of the device and returns it.
    Returns:
        Image: the screenshot
    """
def get_package_action_intents(package_name: str) -> list[str]:
    """
    Get all non-data actions from Activity Resolver Table for a package
    Args:
        package_name (str): The name of the package to get actions for
    Returns:
        list[str]: A list of all non-data actions from the Activity Resolver Table for the package
    """

贡献

欢迎贡献!

致谢

相关 MCP 服务