🚀 ADB MCP 服務器(Python 版)
這是一個用 Python 編寫的 MCP(模型上下文協議)服務器,它允許 Claude 直接通過 Android 調試橋(ADB)與安卓設備進行通信。
🚀 主要特性
- 設備管理:列出已連接的設備
- 命令執行:在安卓設備上執行 shell 命令
- 安裝/卸載應用:管理設備上的應用程序
- 日誌捕獲:訪問安卓設備的 logcat 日誌
- 屏幕截圖:捕獲設備屏幕
- 文件傳輸:推送/拉取文件
- 輸入模擬:模擬觸摸、滑動和輸入操作
- 應用列表:查看已安裝的應用
- 系統信息:獲取電池、版本、型號和內存等系統信息
📋 前置要求
- Python 3.10 及以上版本
- uv(Python 包管理器)
- ADB(Android Debug Bridge),安裝路徑為
C:\Users\Cristiano\Programação\ADB\
- 安卓設備,並已開啟 USB 調試模式
- Claude Desktop,支持 MCP 協議
📦 安裝指南
1. 安裝 uv(如果尚未安裝)
irm https://astral.sh/uv/install.ps1 | iex
2. 創建並配置項目
mkdir adb-mcp-server
cd adb-mcp-server
uv sync
uv run python main.py
3. 文件結構
adb-mcp-server/
├── main.py # 服務器主代碼
├── pyproject.toml # 項目配置文件
├── README.md # 本文件
└── .venv/ # 虛擬環境(由 uv 創建)
⚙️ 在 Claude Desktop 中的配置
將以下配置添加到 Claude Desktop 的配置文件中:
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"adb": {
"command": "uv",
"args": [
"--directory",
"C:\\caminho\\para\\adb-mcp-server",
"run",
"python",
"main.py"
]
}
}
}
實際路徑示例:
{
"mcpServers": {
"adb": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\Cristiano\\Documents\\adb-mcp-server",
"run",
"python",
"main.py"
]
}
}
}
📱 準備安卓設備
-
啟用開發者選項:
-
啟用 USB 調試:
-
通過 USB 連接設備:
-
測試連接:
cd "C:\Users\Cristiano\Programação\ADB"
.\adb.exe devices
💻 使用示例
基礎用法
"列出已連接的安卓設備"
"我的手機上安裝了哪些應用?"
"截取屏幕並保存到 C:\Screenshots\tela.png"
"顯示我的手機電池信息"
高級用法
自動化與控制
"點擊我的手機座標 500, 800 處"
"在我的手機上輸入 '你好,世界'"
"從座標 300,500 滑動到 300,200"
"按下主頁按鈕(按鍵事件 3)"
開發與調試
"在我的手機上執行 'getprop ro.build.version.release' 命令"
"顯示最近 50 條包含 'Error' 過濾條件的系統日誌"
"安裝 C:\Downloads\meuapp.apk 應用"
"卸載 com.exemplo.meuapp 應用"
文件傳輸
"將文件 C:\Downloads\foto.jpg 發送到 /sdcard/Pictures/"
"將文件 /sdcard/Download/documento.pdf 下載到 C:\Documentos\"
🔧 可用命令
| 命令 |
描述 |
使用示例 |
adb_devices |
列出設備 |
"哪些設備已連接?" |
adb_shell |
執行 shell 命令 |
"在手機上執行 'ls /sdcard/'" |
adb_install |
安裝 APK |
"安裝 C:\app.apk 應用" |
adb_uninstall |
卸載應用 |
"卸載 com.example.app 應用" |
adb_logcat |
捕獲日誌 |
"顯示包含 'Error' 過濾條件的日誌" |
adb_screenshot |
截取屏幕 |
"截取屏幕並保存到 C:\tela.png" |
adb_push |
發送文件 |
"將文件.txt 發送到 /sdcard/" |
adb_pull |
拉取文件 |
"將 /sdcard/foto.jpg 文件下載到 C:" |
adb_input |
模擬輸入 |
"點擊座標 100, 200" |
adb_apps |
列出應用 |
"我安裝了哪些應用?" |
adb_info |
系統信息 |
"顯示電池信息" |
🔍 問題解決
錯誤:“未找到 ADB”
ADB_PATH = r"C:\Users\Cristiano\Programação\ADB\adb.exe"
錯誤:“未找到設備”
cd "C:\Users\Cristiano\Programação\ADB"
.\adb.exe devices
錯誤:“權限被拒絕”
- 某些命令需要 root 權限
- 檢查應用是否具有必要的權限
- 某些命令僅在開發者模式下可用
測試服務器
uv run python main.py
🚀 uv 的常用命令
uv sync
uv run python main.py
uv add 庫名稱
uv sync --upgrade
uv tree
🔐 安全注意事項
⚠️ 重要提示
- 此服務器以用戶權限執行 ADB 命令。
- 僅在自己的設備上使用。
- 謹慎執行未知的 shell 命令。
- 保持 ADB 為最新版本。
- 如果連接多個設備,設備將按 ID 進行隔離。
📈 未來改進
- [ ] 支持同時連接多個設備
- [ ] 提供用於監控的 Web 界面
- [ ] 緩存常用命令
- [ ] 提供詳細的操作日誌
- [ ] 支持自定義命令
- [ ] 與 scrcpy 集成以實現可視化控制
🤝 貢獻指南
- Fork 此項目
- 創建分支:
git checkout -b minha-feature
- 提交更改:
git commit -m '新功能'
- 推送分支:
git push origin minha-feature
- 提交 Pull Request
📄 許可證
本項目採用 MIT 許可證,可自由使用!
📞 支持
常見問題
💡 使用建議
- 確認 uv 是否已安裝:
uv --version
- 確認代碼中 ADB 的路徑
- 在使用 MCP 之前手動測試 ADB
- 檢查 Claude Desktop 的日誌以查找錯誤
- 確保設備已授權 USB 調試
高級調試
"C:\Users\Cristiano\Programação\ADB\adb.exe" devices
"C:\Users\Cristiano\Programação\ADB\adb.exe" shell "getprop ro.build.version.release"
uv run python -c "import mcp; print('MCP OK')"