Android设备控制服务

一个通过ADB实现AI助手与Android设备交互的MCP服务器,提供截图捕获、按键控制等功能。

  • by isseikz
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 isseikz/mcp-adb

使用说明

日本语

MCP-ADB

一种模型上下文协议(MCP)服务器,提供与Android调试桥(ADB)的集成,以便AI助手与Android设备进行交互。

特性

  • 电脑屏幕截图工具:使用自动调整大小功能对已连接的Android设备进行截图
  • Base64图像数据:以base64编码字符串的形式直接接收屏幕截图数据
  • 关键事件控制:将关键事件发送到Android设备(导航、返回、主页)
  • 多设备支持:连接多个设备时针对特定设备
  • 设备列表:将所有连接的Android设备列为资源
  • 资源访问:通过资源URI访问屏幕截图和设备信息

先决条件

  • Node.js (建议使用v16或更高版本)
  • 安卓调试桥(ADB) 已安装并在PATH中可用,或通过ADB_PATH环境变量配置
  • 已连接启用USB调试的Android设备

安装

# Clone the repository
git clone https://github.com/isseikz/mcp-adb.git
cd mcp-adb

# Install dependencies
npm install

# Build the project
npm run build

用法

与Claude Desktop一起使用

要将此MCP服务器与Claude Desktop一起使用,请将MCP adb添加到Claude_Desktop_config.json中,该文件可以在Claude Desktop安装目录或Claude-Settings-Developer-Edit config中找到

以下是一个如何配置的示例 claude_desktop_config.json 文件:

{
  "mcpServers": {
    "mcp-adb": {
      "command": "node",
      "args": ["/path/to/mcp-adb/build/index.js"],
      "env": {
        "ADB_PATH": "/path/to/adb"
      }
    }
  }
}

```json
{
  "mcpServers": {
    "mcp-adb": {
      "command": "node",
      "args": ["/path/to/mcp-adb/build/index.js"],
      "env": {
        "ADB_PATH": "/path/to/adb"
      }
    }
  }
}

可用工具

屏幕截图工具

从连接的Android设备捕获屏幕截图,并自动将其大小调整为640px宽。

参数:

  • deviceId (可选):当连接多个设备时,以特定设备为目标

答复:

  • 响应中直接包含Base64编码的图像数据(PNG格式)

例子:

{
  "name": "screenshot",
  "arguments": {
    "deviceId": "emulator-5554"
  }
}

按键工具

向已连接的Android设备发送关键事件。

参数:

  • keycode:要发送的Android密钥代码(见下面的列表)
  • deviceId (可选):当连接多个设备时,以特定设备为目标

可用按键代码:

  • KEYCODE_DPAD_CENTER -中心/确定按钮
  • KEYCODE_DPAD_DOWN -向下导航
  • KEYCODE_DPAD_UP -向上导航
  • KEYCODE_DPAD_LEFT -左侧导航
  • KEYCODE_DPAD_RIGHT -右导航
  • KEYCODE_DPAD_UP_LEFT -对角线左上
  • KEYCODE_DPAD_UP_RIGHT -对角线向上向右
  • KEYCODE_DPAD_DOWN_LEFT -对角线左下
  • KEYCODE_DPAD_DOWN_RIGHT -对角线右下
  • KEYCODE_BACK -后退按钮
  • KEYCODE_HOME -主页按钮

例子:

{
  "name": "pressKey",
  "arguments": {
    "keycode": "KEYCODE_DPAD_DOWN",
    "deviceId": "emulator-5554"
  }
}

资源

连接设备

列出所有已连接的Android设备:

adb://devices

答复:

  • 已连接设备ID列表

截图

按文件名访问特定屏幕截图:

adb://screenshots/{filename}

例如:

adb://screenshots/screenshot-2025-04-10T16-30-48-931Z.png

发展

项目结构

mcp-adb/
├── src/
│   └── index.ts    # Main server implementation
├── build/          # Compiled JavaScript files
├── temp/           # Temporary directory for screenshots
├── package.json    # Project dependencies and scripts
└── tsconfig.json   # TypeScript configuration

建筑

npm run build

这将把TypeScript代码编译为JavaScript build 目录。

需求

此项目使用以下依赖关系:

  • @modelcontextprotocol/sdk:MCP服务器实现
  • fs-extra:增强的文件系统方法
  • sips:用于调整图像大小(内置于macOS中)以减少上下文消耗

许可证

麻省理工学院

贡献

欢迎投稿!请随时提交拉取请求。