ADB命令编排服务器

基于Go的MCP服务器框架,用于编排Android adb命令,提供设备管理和UI自动化工具。

  • by httprunner
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 httprunner/adb-mcp

使用说明

adb mcp

用于编排Android的基于Go的MCP服务器脚手架 adb 命令。一开始 drop专注于配置、日志记录和生命周期布线,因此新的MCP工具和 接下来可以对资源进行分层。

入门指南

go build ./cmd/adb-mcp
./adb-mcp -config path/to/config.json

二进制文件作为长期进程运行(stdio MCP传输占位符) 通过以下方式终止 Ctrl+C/SIGTERM.

使用stdio MCP传输

服务器现在通过换行符分隔的JSON在 stdin/stdout:

  1. 发射 ./adb-mcp (可选择管道连接到监控IDE/工具)。
  2. 发送一个 initialize 指定协议版本的请求(JSON-RPC 2.0) 2025-03-26 (或 2024-11-05 对于老客户)。
  3. 收到后 initialize 结果,发送 tools/list 和 tools/call 请求枚举和调用下面描述的内置adb帮助程序。

传输强制MCP握手,响应 ping,并返回 结构化的 content 每个工具调用的数组。所有请求必须 JSON-RPC对象由换行符分隔;客户端支持批处理 发送一个数组。

配置

配置是可选的JSON文件;未指定的值会恢复到正常的默认值。

{
  "adb_path": "/usr/local/bin/adb",
  "command_timeout": "45s",
  "logging": {
    "directory": "~/adb-mcp/logs",
    "file_name": "adb-mcp.log",
    "level": "debug",
    "also_console": true
  },
  "mcp": {
    "transport": "stdio"
  }
}

关键默认值:

  • adb_path: adb (通过PATH解决)
  • logging.directory: $HOME/.adb-mcp/logs
  • logging.file_name: adb-mcp.log
  • logging.also_console: false (默认情况下,日志会保存到文件中)
  • command_timeout: 30s
  • mcp.transport: stdio

日志记录

服务器使用 zerolog 具有结构化JSON条目。默认情况下,日志为 写信给 $HOME/.adb-mcp/logs/adb-mcp.log 因此,长时间运行的命令可以刷新 丰富的输出,而不会淹没stdout。使用启用控制台镜像 "also_console": true 如果你需要互动反馈。

内置工具

MCP注册表预先填充了高价值的设备管理和UI 自动化助手。这些表面作为MCP工具(并且已经可以通过 Server.InvokeTool stdio传输正在建设中):

  • device.list --枚举 adb devices -l 输出带有可选状态过滤器。
  • device.connect / device.disconnect --管理TCP/IP或Wi-Fi调试 端点(主机:端口)。
  • device.reboot --重新引导到系统、引导加载程序、恢复或快速引导。
  • ui.tap / ui.swipe --模拟触摸交互;滑动接受可选 持续时间(毫秒)。
  • ui.text --通过键入任意文本 adb shell input text,编码 空白以提高可靠性。
  • ui.keyevent --触发键码(例如。, 3 为了 KEYCODE_HOME).

所有长时间运行的命令都将其stdout/stderr流式传输到zerolog文件中,因此 Codex/Claude集成可以在不阻塞stdin/stdout的情况下获取工件。