Android设备控制服务

一个通过ADB与Android设备通信的MCP stdio服务器,提供设备控制功能如点击、文本输入、截图等。

  • by hamen
  • TypeScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 hamen/android-mcp

使用说明

安卓MCP🤖✨

友好的MCP stdio服务器,通过ADB与Android设备聊天 @devicefarmer/adbkit,通过使用换行符分隔的JSON-RPC @modelcontextprotocol/sdk (没有 Content-Length 需要标题)。将其插入Cursor/Claude MCP并开始戳设备。

✨ 这是什么?

  • MCP传输,转发方便的ADB操作(点击、文本、截图、UI转储等)。
  • 在stdin/stdout上使用换行符分隔的JSON;每行一请求,每行一响应。
  • 原型友好:如果你愿意,可以在以后将最小的JSON-RPC循环换成完整的MCP SDK。

📦 需求

  • Node.js 18+和npm。
  • PATH上的ADB(例如,Android SDK平台工具)。保持 adb start-server 跑步。
  • 至少连接了一个设备或模拟器(adb devices).
  • 可选:仅当您计划构建演示应用程序时,才使用Android SDK/Gradle;MCP服务器本身不需要。

🚀 设置(本地)

git clone <repo-url> android-mcp
cd android-mcp
npm ci           # or npm install
npm test         # stdio + tsconfig smoke tests
npm run dev      # start MCP server with tsx
# or explicitly:
npx --yes tsx src/server.ts

要生成输出,请执行以下操作: npm run build (发射 dist/).保持 adb devices 在调用工具之前感到高兴。

🧰 MCP配置(光标/克劳德)

示例 ~/.cursor/mcp.json 条目:

{
  "mcpServers": {
    "android-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["--yes", "tsx", "/home/ivan/code/android-mcp/src/server.ts"],
      "cwd": "/home/ivan/code/android-mcp"
    }
  }
}

🎮 暴露的工具

  • selectDevice { serial } → 为后续通话设置默认设备。
  • keyEvent { keyCode, serial? } → send input keyevent.
  • tap { x, y, serial? }
  • text { text, serial? } → uses input text (空格变成 %s).
  • startActivity { component, serial? } → e.g. "org.example/.MainActivity".
  • screenshot { serial? } → { mimeType: "image/png", base64 }.
  • uiDump { serial? } → 已解析 uiautomator dump 树(文本、内容描述、资源ID、边界)。
  • findAndTap { text?, contentDesc?, serial? } → 找到第一个匹配节点并点击其中心。
  • listDevicesDetailed → 列出带有型号/制造商/sdk信息的附加设备。

📸 注释和限制

  • 屏幕截图和UI转储是周期性快照(尚未流式传输)。
  • UI转储取决于 uiautomator 存在于设备上。
  • 原型运输;您可以在不更改ADB帮助程序的情况下连接更丰富的MCP SDK。

🧪 测试

npm test

📱 可选:构建/安装演示应用程序

只有当你想练习示例Android UI时才需要:

# from the parent monorepo that contains the Android app
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
adb shell am start -n org.dronix.android.kindlegratis/.MainActivity

🛠️ CI提示

  • 节点工作流:签出→ 设置节点18+→ npm ci → npm test.
  • 如果在CI中构建Android应用程序,请添加Java 17+Android SDK设置并运行 ./gradlew assembleDebug.