关于 admcp - Android Debug MCP
admcp 是面向 Android 开发者和 Agent 构建者的本地优先 MCP 服务,可将 MCP stdio 客户端连接到设备或模拟器。其类型化工具涵盖界面检查、应用调试、性能跟踪、制品和诊断,且不会将项目或设备数据上传到云端。
主要功能
- 0151 个类型化 Android 工具
- 02界面检查与交互
- 03JDI、LLDB 和 Flutter 调试
- 04Perfetto 跟踪与堆转储
- 05制品与基于证据的诊断
适用场景
- 01检查并操作 Android 应用界面
- 02跟踪崩溃并查看 logcat 输出
- 03设置断点并检查运行时状态
- 04采集性能跟踪和堆转储
MCP 相关
将 MCP stdio 客户端连接到 Android 设备或模拟器,并提供 51 个用于开发和调试的类型化工具。服务在 Android 工具链旁本地运行,不会上传项目或设备数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
admcp
admcp 是一款本地优先的 Android 开发模型上下文协议(MCP)服务。它可将任意 MCP stdio 客户端连接到真实设备或模拟器,并提供 51 个类型化工具,用于 UI 检查、屏幕截图、logcat、Java/Kotlin JDI 调试、原生 LLDB、Flutter/Dart DAP、Compose 检查、Perfetto 跟踪、堆转储、工件和基于证据的诊断。
无需 root。无需云账户。
快速开始 | 功能 | 示例提示词 | 为什么选择 admcp | 文档
状态:v1,提供 51 个工具,已在 OnePlus CPH2747(API 36,arm64-v8a)上实测。 完整证据和剩余限制: 实现状态。
快速开始
- 安装 JDK 21 和 Android SDK platform-tools(
adb)。 - 从 GitHub Releases 下载
admcp-<version>.zip并解压。兼容 MCPB 的客户端也可以从同一发布版本安装admcp-<version>.mcpb。 - 在 Windows 上将 MCP 客户端指向
bin/admcp.bat,在 Linux 和 macOS 上指向bin/admcp。
任何 MCP stdio 客户端都可以使用它。以下 JSON 使用常见的 mcpServers 格式;请根据你的客户端(Claude Code、Cursor、VS Code、Codex、Gemini CLI 等)调整命令和参数。
{
"mcpServers": {
"admcp": {
"command": "C:\\Tools\\admcp\\admcp-<version>\\bin\\admcp.bat",
"args": [
"--platform-tools", "C:\\Android\\Sdk\\platform-tools",
"--artifacts", "C:\\temp\\admcp-artifacts"
]
}
}
}
在 Linux 和 macOS 上,将 /opt/admcp/admcp-<version>/bin/admcp 用作 command。
验证安装:
C:\Tools\admcp\admcp-<version>\bin\admcp.bat --selftest
在 Linux 和 macOS 上:
/opt/admcp/admcp-<version>/bin/admcp --selftest
你应该会在 stderr 中看到 catalog=51 registered=51 version=<version>。随后,服务会通过 stdio 使用 MCP 通信;stdout 专用于协议流量。
功能
| 领域 | 工具 |
|---|---|
| 设备和工作区 | device_list、device_inspect、toolchain_probe、workspace_open、workspace_describe |
| 应用生命周期 | app_build、app_install、app_launch |
| 会话 | session_start、session_status、session_stop |
| UI 和屏幕截图 | ui_inspect、ui_find、ui_act、ui_screenshot、compose_inspect |
| 日志 | logcat_start、logcat_query、logcat_stop、logcat_statistics、logcat_health |
| Java/Kotlin 调试 | debug_attach、断点、debug_step、debug_stack、debug_variables、debug_evaluate |
| 原生调试 | LLDB 附加、断点、堆栈、寄存器、内存读取和模块 |
| Flutter 调试 | DART_DAP 附加、断点、堆栈、变量、单步执行、暂停和分离 |
| 性能 | Perfetto 系统跟踪、堆转储和 performance_trace_analyze |
| 工件和证据 | artifact_get、analyze_artifact、预览、diagnostics_* 和 signals_crashes |
完整的 51 个工具契约见 docs/architecture/mcp-tool-catalog-v1.md。 目录通过契约测试进行验证。
示例提示词
连接 admcp 后,可以向你的 Agent 提出类似这样的问题:
Inspect the current screen, find the INCREMENT button, tap it, and verify the counter changed.
Start logcat, reproduce the crash, then summarize the stack trace and the last 50 lines before it.
Launch the app, attach JDI, set a breakpoint in MainActivity, and show locals when it hits.
Inspect this Compose screen and tell me which accessibility node is the DELETE COUNTER button.
Record a 5-second Perfetto trace and summarize what happened.
Attach LLDB to the native library, break in fixture_increment, and show the registers.
为什么选择 admcp
许多 Android MCP 工具只是简单的命令包装器。admcp 将设备、工作区、 进程和会话状态整合在一起,然后通过带类型的架构、产物和安全门提供 调试基础操作。
适用于:
- 希望 Claude Code、Cursor 或其他 Agent 检查并调试真实设备的 Android 开发者。
- 需要稳定、带类型的 Android 操作,而不是解析 adb 字符串的 Agent 构建者。
- 需要从设备获取可复现证据的 QA 和自动化工作流。
| adb 和 shell 脚本 | Android Studio | admcp | |
|---|---|---|---|
| 面向 AI Agent 构建 | 否 | 否 | 是 |
| 带类型的 MCP 工具架构 | 否 | 否 | 51 个工具 |
| 会话、进程和后端状态 | 否 | 部分支持 | 是 |
| 通过 MCP 使用 JDI、LLDB 和 Flutter | 否 | 人工操作界面 | 是 |
| 证据、产物和诊断信息 | 否 | 部分支持 | 是 |
| 本地优先,无云账户 | 是 | 是 | 是 |
对于坐在 IDE 前的开发者,Android Studio 是更好的工具。admcp 面向需要检查、 操作和调试,且不想让人类驱动每次点击的 Agent。
工作原理
flowchart LR
Client["MCP client / agent"] -->|stdio| Server["admcp (MCP server)"]
Server --> ADB["ADB / Android CLI"]
Server --> JDI["JDI (JDWP client)"]
Server --> LLDB["lldb-dap"]
Server --> DAP["Flutter DAP"]
ADB --> Device["Android device / emulator"]
JDI -.->|via adb forward| ADB
LLDB -.->|via adb forward / lldb-server| ADB
DAP -.->|via adb forward| ADB
服务在你的计算机上与 Android 工具链并行运行。它不会将你的项目或设备数据 上传到任何地方。
已验证
- 在已验证的主机上运行了
186项测试,0项失败。 - 目录通过 MCP stdio 注册了全部
51个工具。 - 实时设备:OnePlus CPH2747,API 36,arm64-v8a。
- JDI:附加、断点、单步执行、堆栈、局部变量和只读求值。
- LLDB:附加、断点、堆栈、寄存器、有限内存读取和模块。
- Flutter:
DART_DAP断点、堆栈、变量、单步执行、暂停和分离。 - Compose:无障碍树检查和经过验证的 UI 操作。
- 性能:Perfetto 捕获/分析和 HPROF 堆转储捕获。
- 证据:logcat、崩溃缓冲区、产物、会话时间线和诊断信息。
未连接设备时,依赖设备的集成测试会跳过。完整的验收证据请参阅 实现状态。
要求
- JDK 21。
- Android SDK platform-tools(
adb)。 - Windows、Linux 或 macOS。
- 可选:Android CLI、Flutter SDK、NDK
lldb/lldb-server、lldb-dap,以及 已连接的设备或模拟器。
仅支持可调试的开发版本。不在支持范围内的包括 root 和绕过 Android 安全机制。
从源代码构建
从源代码构建、测试和打包
仓库中已包含 Gradle wrapper;无需本地安装 Gradle。
Windows:
gradlew.bat clean test
gradlew.bat :app:admcp:installDist
Linux 和 macOS:
./gradlew clean test
./gradlew :app:admcp:installDist
可安装的发行包将写入
app/admcp/build/install/admcp/。发布归档通过
:app:admcp:distZip 构建,并写入
app/admcp/build/distributions/admcp-<version>.zip。
发布流程通过 semantic-release 自动化:在推送到 main 或 master 时,根据 Conventional Commits
生成版本;fix: 表示补丁版本,feat: 表示次要版本,BREAKING CHANGE: 表示主要版本。不会生成发布 PR 或变更日志。
配置
| 选项 | 用途 |
|---|---|
--platform-tools <dir> | 包含 adb 的目录 |
--workspace <dir> | 默认工作区根目录 |
--android-cli <path> | Android CLI 可执行文件 |
--flutter-root <dir> | Flutter SDK 根目录 |
--artifacts <dir> | 产物存储根目录 |
--trust-workspace <dir> | 经操作员批准的工作区根目录;可重复指定 |
--selftest | 打印目录/注册数量并退出 |
--version | 打印版本并退出 |
workspace_trust 仅在传给服务启动参数 --trust-workspace 的规范根目录下成功。工具参数
不能自行声明已获批准。
已知限制
- 已验证的设备是运行 API 36 的 OnePlus CPH2747;不保证支持其他 OEM、API 和传输方式组合。
- 在已验证的设备上,同时使用 JDI 和 LLDB 检查并不可靠。使用
debug_attach(switchBackend=true)可顺序切换。 - Compose
TREE使用无障碍层级。内部语义、slot 表和重组数据需要对应用进行插桩。 - 未捆绑主机端
trace_processor_shell,因此除非安装 Perfetto SQL 工具,否则跟踪分析只会返回有限摘要。 - Crashlytics 问题集群需要运行
android auth login;本地崩溃缓冲区仍是默认的证据来源。 - 原生 LLDB 需要单独安装
lldb-dap和 ABI 匹配的lldb-server。 - 主机确认对话框需要交互式桌面。无头服务器会安全地拒绝操作,并改用一次性令牌。
详情和确切的错误行为请参阅实现状态。
安全
- 仅支持可调试的开发版本。
- 只有在明确授予工作区信任后,才会运行由项目控制的代码。
- 破坏性 UI 操作需要主机确认,或使用绑定到会话和操作的一次性令牌。
- 工件读取仅限于存储根目录,默认设有大小上限并进行脱敏。
- 此 MCP 服务以本地优先:不需要云帐户。
文档
贡献
欢迎提交问题和拉取请求。公开工具目录采用版本管理;添加或重命名公开工具前,请先提交问题。发送 PR 前运行 gradlew test。
如果 admcp 能为你的 Agent 节省时间,请点个星,帮助更多 Android 开发者发现它。
许可证
Apache License 2.0。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。