mcpField
A
androidbuild-mcp

androidbuild-mcp

本地服务
github.com/dev-jackson开发工具014 周前更新

关于 androidbuild-mcp

androidbuild-mcp 是面向 Android 应用开发和工具链操作的 Agent MCP 服务。它将 Gradle 构建与测试、设备管理、部署、UI 自动化及日志检查整合在一起。

主要功能

  1. 01构建、测试、Lint 和覆盖率工具
  2. 02模拟器与设备管理
  3. 03APK 安装和应用生命周期控制
  4. 04UI 检查、截图与交互
  5. 05Logcat 捕获和崩溃检查
  6. 06Compose 项目脚手架

适用场景

  1. 01通过 Agent 构建和测试 Android 项目
  2. 02部署应用并自动操作模拟器
  3. 03检查应用崩溃及筛选后的设备日志
  4. 04生成 Compose 起始项目

MCP 相关

该服务通过 stdio 向 MCP 客户端提供 Android 开发和设备控制工具,包括构建、测试、部署、UI 自动化及日志访问。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dev-jackson-androidbuild": {
"command": "npx",
"args": [
"-y",
"@asjackson/androidbuild-mcp"
]
}
}
}
启动命令npx -y @asjackson/androidbuild-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@asjackson/androidbuild-mcp0.1.1

工具

53

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

AndroidBuildMCP

npm license

让你的 AI Agent 亲自操作 Android。AndroidBuildMCP 是一款 MCP 服务,可让任何 MCP 客户端(Claude Code、Cursor 等)构建、部署、操作和调试真实的 Android 应用:提供易读错误信息的 Gradle 构建、模拟器管理、adb 部署、logcat 捕获和完整的 UI 自动化。

快速开始

要求:Node 18+、Android SDK(通过 ANDROID_HOME 指定或使用默认安装路径),以及用于 Gradle 构建的 JDK 17+。

无需安装步骤——首次运行时,npx 会获取该服务。

Claude Code

claude mcp add androidbuild -- npx -y @asjackson/androidbuild-mcp

其他 MCP 客户端

{
  "mcpServers": {
    "androidbuild": {
      "command": "npx",
      "args": ["-y", "@asjackson/androidbuild-mcp"]
    }
  }
}
改为从源码运行
git clone https://github.com/dev-jackson/androidbuild-mcp.git
cd androidbuild-mcp
npm install && npm run build
claude mcp add androidbuild -- node /absolute/path/to/androidbuild-mcp/dist/index.js

然后让你的 Agent 运行 doctor——它会检查 SDK、adb、模拟器、Java 和已连接设备,并准确告知缺少什么。

你的 Agent 可以做什么

  • 构建和测试 — build_app 会编译项目,并返回精简的 file:line 编译错误,而不是上千行 Gradle 输出。test_app / test_instrumented 会返回解析后的通过/失败摘要。还包括 Lint、清理和覆盖率(Kover/Jacoco)。
  • 管理模拟器 — 列出、创建、启动(等待完全启动并返回序列号)、清除和关闭 AVD。设置 GPS 位置、深色模式,以及用于截图的干净演示状态栏。
  • 部署 — build_run 一次调用即可完成编译、安装和启动。通过 adb 安装、卸载、清除数据、查看应用信息;仅连接一台设备时会自动选择该设备。
  • 查看屏幕 — snapshot_ui 会将 UI 作为紧凑的命名元素列表返回,并附带点击坐标(合并 Compose 语义并过滤噪声)。screenshot 会返回图像;设置 annotate: true 后,会使用视觉功能绘制带编号的框,识别图像和 WebView 中的文本。
  • 操作屏幕 — 点击、滚动、滑动、拖动、长按、输入文字(支持键盘,并可清除/提交)、使用硬件按键,以及通过 wait_for_ui 轮询直到指定元素出现。
  • 读取日志 — 在后台捕获经过应用过滤的 logcat、一次性转储日志,以及获取包含堆栈跟踪的崩溃缓冲区。
  • 启动新应用 — scaffold_android_project 会生成一个开箱即用、可直接构建的最小 Compose 项目。

会话默认设置(session_set_defaults)让你只需配置一次项目、模块、变体和设备——之后的所有调用都无需传入参数。

工具参考

共 53 个工具,通过 stdio 使用。每个工具都接收普通参数并返回文本(screenshot 除外,它会返回图像)。

环境和项目

工具描述
doctor检查 SDK、adb、模拟器、avdmanager、Java 和已连接的设备;报告缺少的项目
discover_projects在指定路径下查找 Android/Gradle 项目
list_modules列出 settings.gradle(.kts) 中声明的模块
list_variants列出模块的构建变体
get_app_id读取模块的 applicationId
show_gradle_config显示 Gradle、AGP、Kotlin 和版本目录条目

会话默认值

工具描述
session_set_defaults为之后的所有调用设置默认项目、模块、变体、序列号和 appId
session_show_defaults显示当前默认值
session_clear_defaults清除所有默认值,或只清除列出的键

构建、测试和质量

工具描述
build_app构建 APK;返回精简的 file:line 编译器错误
build_run在一次调用中完成构建、安装和启动
test_app运行 JVM 单元测试并提供解析后的通过/失败摘要
test_instrumented在设备上运行插桩测试
lint运行 Android Lint 并汇总报告
clean运行 gradle clean
get_apk_path查找最新的 APK,但不执行构建
stop_gradle停止项目的 Gradle 守护进程
get_coverage_report运行 Kover/Jacoco 并汇总各软件包的行覆盖率
get_file_coverage显示单个源文件中已覆盖/未覆盖的行

设备和模拟器

工具描述
list_devices列出设备及其序列号、状态、型号、Android 版本和 API 级别
list_avds列出 AVD 及其运行状态
boot_emulator启动 AVD 并等待其完全启动;返回序列号
kill_emulator关闭正在运行的模拟器
create_avd根据已安装的系统映像创建 AVD
delete_avd删除 AVD
set_emulator_location设置 GPS 位置
set_appearance切换深色/浅色模式
statusbar_demo_mode清理状态栏,以便截图

应用生命周期

工具描述
install_app安装 APK(adb install -r)
launch_app根据应用 ID 启动应用,并解析启动器 Activity
stop_app强行停止正在运行的应用
uninstall_app卸载应用
clear_app_data将应用重置为全新安装状态
get_app_info查看版本、目标/最低 SDK、安装路径和运行中的 PID

UI 自动化

工具描述
snapshot_ui将 UI 转储为带名称的元素,并提供精确的点击坐标
screenshot捕获屏幕;annotate: true 会绘制带编号的方框
tap_element点击上一张带注释截图中的元素 #N
tap按像素坐标或屏幕百分比点击
scroll朝指定方向滚动,并使用计算得出的安全滑动操作
swipe在两点之间滑动
drag从一点拖动到另一点
long_press长按 1000 ms
type_text等待键盘就绪后,在当前聚焦的字段中输入文本
key_press按下 BACK、HOME、ENTER、DPAD_* 或任意键码
key_sequence按顺序按下多个按键
wait_for_ui轮询,直到某个元素出现

日志和录制

工具描述
get_logs一次性转储 logcat,可按应用和标签筛选
get_crash_logs获取崩溃缓冲区:Java 异常、原生崩溃和 ANR
start_log_capture开始在后台捕获 logcat 并写入文件
stop_log_capture停止捕获并返回文件及最后几行
record_video_start开始录屏(最长 3 分钟)
record_video_stop停止录制并拉取 MP4 文件

脚手架

工具描述
scaffold_android_project创建一个开箱即用的最简 Compose 应用

精准点击

所有 adb 端操作共用一个坐标空间(设备像素),但 MCP 客户端通常会对屏幕截图进行缩放——凭肉眼估算图像中的像素位置,会导致点击落在错误位置。以下三种方式都能安全地命中目标:

  1. snapshot_ui — 返回每个命名元素的精确设备像素中心坐标。首选。
  2. screenshot { annotate: true } + tap_element { element: N } — 按图像上标出的编号点击;映射是在原始 PNG 上解析的,因此客户端缩放不会造成偏差。
  3. tap { xPct, yPct } — 使用屏幕百分比(0-1),long_press/swipe/drag 也支持此方式。与分辨率无关。

如果你掌握真实的像素坐标,仍可使用原始的 tap { x, y }。

可靠性

发布前,每种工具都在真实模拟器和真实项目中进行了测试,涵盖常规流程和边界情况;逐个场景的证据见 qa-results.md。以下细节有助于避免 Agent 工作流出错:

  • type_text 会等待软键盘出现后再输入(否则,聚焦字段后立即输入会悄悄丢掉开头的几个字符)。
  • scroll 会根据屏幕尺寸计算长而慢的滑动——短而快的滑动会被某些列表忽略。long_press 会按住 1000 ms,这是启动器所要求的。
  • 点击屏幕外的位置时,会返回实际屏幕尺寸,而不是悄无声息地无操作。
  • 文本密集型屏幕(电子书 WebView 等)会限制内容量,并可通过 snapshot_ui { filter } 搜索,避免上下文被大量内容占满。
  • 构建/测试/设备故障会返回简短且可执行的消息,并指出下一步要调用的工具。

可选附加项

  • Google 的 Android CLI 支持 screenshot { annotate: true }。doctor 会输出适用于你操作系统的一行安装命令。
  • ADBKeyboard IME 支持输入非 ASCII 字符的 type_text(adb 本身只支持 ASCII)。安装一次其 APK 即可;服务会自动使用它。

开发

npm install
npm test            # unit tests (no real processes spawned)
npm run dev         # run the server from source
npm run build       # compile to dist/

许可证

MIT — 详见 LICENSE。

概念上受 XcodeBuildMCP 启发;这是围绕 Android 工具链构建的独立实现。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。