mcpField
A
android

android

本地服务
github.com/martingeidobler开发工具6832 周前更新

关于 android

Android MCP Server 通过 ADB 控制 Android 模拟器和真机,供 AI 助手查看界面、操作应用并读取日志。它无需修改应用本身,适合移动应用调试与测试。

主要功能

  1. 0125 个工具覆盖设备控制
  2. 02带压缩的截图功能,最大 1280px
  3. 03UI 树检查,包含边界、文本和资源 ID
  4. 04点击、滑动、输入文本和硬件按键
  5. 05按 resource-id、文本或 content-desc 定位元素
  6. 06logcat 日志按包名、级别和时间过滤

适用场景

  1. 01复现并记录应用崩溃的 bug
  2. 02自动化走查登录等界面流程
  3. 03安装 APK 后冒烟测试主要页面

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露设备管理、截图、界面交互、应用管理和日志诊断等工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"martingeidobler-android": {
"command": "npx",
"args": [
"-y",
"android-mcp-server"
],
"env": {
"ANDROID_HOME": "<ANDROID_HOME>"
}
}
}
}
启动命令npx -y android-mcp-server
需要配置的环境变量
ANDROID_HOMEPath to Android SDK (auto-detected on macOS at ~/Library/Android/sdk)

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

安装包
npmandroid-mcp-server1.2.1

工具

21

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

此工具无需参数。

详细介绍

Android MCP Server

npm version npm downloads License: MIT android-mcp-server MCP server Awesome MCP Servers SocketBadge

通过 ADB 控制 Android 模拟器和设备的 MCP 服务。它使 AI 助手能够查看、操作和调试 Android 应用——截取屏幕截图、点击元素、读取日志并记录 Bug。

npm Package | GitHub | Issues

ezgif-3bbb68e918812643 ^ 为便于观看,视频已加速。更多演示和测试用例。

功能

  • 25 种工具,全面控制 Android 设备
  • 截图,支持智能压缩(基于 Sharp,最大 1280px)
  • UI 树检查——读取元素层级结构,包括边界、文本、资源 ID 和状态
  • 触控自动化——点击、滑动、滚动、输入文本、按下硬件按键
  • 元素定位——按 resource-id、文本或 content-desc 查找并点击元素
  • 应用生命周期管理——安装 APK、启动应用、查看当前 Activity
  • Logcat 集成——按软件包、日志级别或时间戳筛选
  • 设备管理——列出设备、启动模拟器、获取设备信息
  • 组合操作——tap_and_wait 将点击、等待稳定和 UI 树检查合并为一次往返
  • 持久 ADB shell——复用单个 shell 会话,加快命令执行
  • 设备信息缓存——每个会话只查询一次设备属性
  • 多设备支持——按 ID 指定目标设备
  • 无需修改应用——通过 ADB 适用于任何 Android 应用,无需集成 SDK

先决条件

  • Node.js 18+
  • Android SDK,包含 platform-tools(ADB)和模拟器
  • 正在运行的 Android 模拟器或已连接的设备
查找你的 ANDROID_HOME

服务会自动在 ~/Library/Android/sdk(macOS)查找 SDK,或通过 ANDROID_HOME 查找。如果 SDK 位于其他位置,请在 MCP 配置中设置 ANDROID_HOME(见下文)。

检查方法:

# macOS
ls ~/Library/Android/sdk/platform-tools/adb

# Or find it via Android Studio: Settings > Languages & Frameworks > Android SDK

设置

Claude Code
claude mcp add --scope user android -- npx -y android-mcp-server

这会全局注册服务,使其在所有项目中都可用。若要将其限制在当前项目中,请改用 --scope project。

如果你的 SDK 不在默认位置:

claude mcp add --scope user --env ANDROID_HOME=/path/to/sdk android -- npx -y android-mcp-server
Claude Desktop

添加到 Claude Desktop 配置文件:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "android-mcp-server"],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk"
      }
    }
  }
}
VS Code

添加到 VS Code 设置(.vscode/settings.json):

{
  "mcp": {
    "servers": {
      "android": {
        "command": "npx",
        "args": ["-y", "android-mcp-server"],
        "env": {
          "ANDROID_HOME": "/path/to/android/sdk"
        }
      }
    }
  }
}
Cursor

添加到 Cursor MCP 配置(~/.cursor/mcp.json):

{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "android-mcp-server"],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk"
      }
    }
  }
}
Windsurf

添加到 Windsurf MCP 配置(~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "android-mcp-server"],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk"
      }
    }
  }
}
项目配置(.mcp.json)

添加到项目的 .mcp.json(提交到版本控制,这样你的团队也能使用):

{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "android-mcp-server"],
      "env": {
        "ANDROID_HOME": "/path/to/android/sdk"
      }
    }
  }
}
从源代码构建
git clone https://github.com/martingeidobler/android-mcp-server.git
cd android-mcp-server
npm install
npm run build
claude mcp add --scope user android -- node /path/to/android-mcp-server/dist/index.js

可用工具

设备管理
工具描述
list_devices列出已连接的 Android 设备和模拟器
list_avds列出可用的 Android Virtual Devices
start_emulator按名称启动 AVD(最多等待 60s)
屏幕截图与 UI 分析
工具描述
screenshot截取屏幕截图以供视觉分析。可选的 save_path 用于将截图保存到磁盘
get_ui_tree获取 UI 元素层级结构,包含边界、文本、资源 ID 和状态
交互
工具描述
tap点击屏幕坐标
tap_element按 resource-id、文本或 content-desc 点击元素
tap_and_wait点击元素,等待 UI 稳定,并返回新的 UI 树——一次往返即可完成
long_press长按坐标(用于打开上下文菜单、拖动控件)
double_tap双击坐标
multi_tap按固定间隔在相同坐标点击 N 次(连续点击)
tap_sequence多步骤操作链:可按任意顺序执行点击、等待、文本输入、按键和滑动
type_text在当前聚焦的输入框中输入文本
press_key按键(back、home、enter、tab、delete、menu 等)
swipe在坐标之间执行滑动手势
scroll_to_element滚动直到元素可见
wait_for_element等待元素出现(带超时)
诊断
工具描述
get_logs获取 logcat 输出,可按包名、日志级别和时间筛选
clear_logs清除 logcat 缓冲区(重现错误前调用,以获得干净的输出)
get_device_info获取型号、Android 版本、API 级别、屏幕尺寸和 DPI
应用管理
工具描述
launch_app按包名启动应用
install_apk安装 APK 文件
get_current_activity获取前台应用和 Activity
pull_file将文件从设备拉取到本地文件系统
adb_shell运行任意 ADB shell 命令

工作流示例

错误记录

“清除日志,打开设置屏幕,点击保存按钮,然后向我展示日志和屏幕截图”

Claude 将执行:clear_logs → launch_app → tap_element → get_logs(package_name="com.example.app", level="E") → screenshot(save_path="./bugs/settings-crash.png")

UI 测试

“浏览登录流程,并确认每个屏幕都与设计稿一致”

Claude 将使用 screenshot + get_ui_tree 查看并理解每个屏幕,使用 tap_element/type_text 进行交互,并利用视觉能力与模型图或描述进行比较。

冒烟测试

“安装 APK,启动应用,并逐一浏览主界面,确认没有崩溃”

Claude 将:install_apk → launch_app → 使用 tap_element 导航 → get_logs(level="E"),在每个界面后检查是否有错误。

元素交互

“打开设置,搜索‘display’,点击第一个结果,然后返回”

Claude 将:launch_app(package_name="com.android.settings") → tap_and_wait(by="text", value="Search settings") → type_text("display") → tap_and_wait(by="text", value="Display") → press_key(key="back")

演示与提示词指南

  • DEMOS.md — 可立即尝试的复制粘贴式提示词场景
  • PROMPTING.md — 最佳实践、性能技巧和常见陷阱

工作原理

服务通过标准输入/输出使用 Model Context Protocol 进行通信。所有设备交互都通过 ADB 完成,无需修改应用。截图会在内存中捕获并压缩,然后以 base64 图像的形式返回,供 AI 查看和进行视觉分析。

参与贡献

欢迎贡献!请参阅 CONTRIBUTING.md 了解指南。

许可证

MIT - 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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