🚀 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')"