项目简介

airi-android 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为大型语言模型(LLM)提供与安卓设备进行交互的能力。通过集成 Android Debug Bridge (ADB),该服务器将一系列安卓操作和信息查询功能封装为可由LLM调用的“工具”。

主要功能点

该MCP服务器通过注册多种工具(Tools),使LLM能够:

  • 控制设备输入: 执行屏幕点击、滑动、输入文本、发送按键事件等操作。
  • 获取界面信息: 获取当前屏幕的UI层级结构(XML格式)。
  • 查询设备状态: 查看CPU使用情况、电池电量和统计信息、内存信息、正在运行的进程和活动(Activities)等。
  • 管理设备连接: 连接到指定的ADB设备或虚拟设备,或重置当前连接。
  • 获取窗口信息: 查询屏幕的物理尺寸和显示密度。

这些功能作为标准化的MCP工具暴露给LLM客户端。

安装步骤

要运行 airi-android MCP服务器,您需要安装ADB工具以及Python及其依赖。如果您选择使用Docker,则只需安装Docker。

  1. 安装ADB:Android Developer 网站 下载并安装 platform-tools,确保 'adb' 命令可用。
  2. 连接安卓设备: 通过USB连接您的安卓设备,或使用 'adb connect' 连接模拟器/远程设备。
  3. 安装 Python 和 uv: 安装 Python 3.8 或更高版本,并按照 uv 官方文档 安装 'uv' 包管理器。
  4. 克隆仓库并安装依赖:
    git clone https://github.com/LemonNekoGH/airi-android.git
    cd airi-android
    uv sync
  5. 启动服务器: 使用 'uv' 运行主程序。
    uv run mcp dev src/main.py
    服务器通常会监听标准输入/输出,并可以通过MCP客户端连接。

或者,您可以使用 Docker 镜像运行服务器(推荐方式,更简便):

  1. 安装 Docker: 确保您的系统已安装并运行 Docker。
  2. 准备 MCP 客户端配置: 参考下面的服务器配置部分。

服务器配置

MCP服务器通常由MCP客户端负责启动和管理。为了让您的MCP客户端(如兼容MCP协议的LLM应用)能够使用 airi-android 服务器,您需要在客户端的配置中指定如何启动它。以下是一个配置示例的说明,通常存储在客户端的 'mcp.json' 文件中:

// 这是一个示例配置,用于说明如何在MCP客户端中配置 airi-android 服务器
{
  "mcpServers": {
    // 服务器的唯一标识符,由客户端定义
    "airi-android": {
      // 启动服务器的命令
      "command": "docker",
      // 传递给命令的参数列表
      "args": [
        "run",           // Docker 命令:运行一个容器
        "--rm",          // Docker 参数:容器停止后自动移除
        "-i",            // Docker 参数:保持标准输入流开放,用于MCP通信
        "-e", "ADB_HOST",// Docker 参数:设置环境变量 ADB_HOST
        // Docker 参数:环境变量 ADB_HOST 的值,host.docker.internal 指向宿主机的地址
        "host.docker.internal",
        // 要运行的 Docker 镜像名称和版本,即 airi-android 服务器的 Docker 镜像
        "ghcr.io/lemonnekogh/airi-android:v0.2.0"
      ],
      // 传递给容器的环境变量
      "env": {
        // 设置 ADB_HOST 环境变量,用于 DeviceManager 连接 ADB 服务
        "ADB_HOST": "host.docker.internal"
      }
    }
  }
}

请注意,上述配置中的 'ADB_HOST' 需要根据您的实际ADB服务器地址进行调整。'host.docker.internal' 通常用于从Docker容器访问宿主机上的服务。

基本使用方法

配置完成后,兼容的LLM客户端将能够发现并连接到 airi-android MCP服务器。LLM可以根据用户的指令,通过与该服务器通信来调用其暴露的安卓相关工具。

例如,当用户对LLM说“帮我看看手机电量”时,LLM客户端可能会向 airi-android 服务器发送一个调用 'battery_level' 工具的请求。服务器执行相应的ADB命令获取电量信息,并将结果返回给LLM客户端,LLM再将结果以自然语言呈现给用户。类似的,用户也可以通过LLM发出指令来控制安卓设备,如“打开应用商店”或“模拟点击屏幕上的某个位置”。

开发者也可以利用MCP客户端库直接与 airi-android 服务器交互,调用其提供的各种工具,从而在应用程序中集成安卓设备控制和状态获取功能。

信息

分类

桌面与硬件