adb-mcp-server
The ADB MCP Server is a Model Context Protocol server designed to manage ADB connections and interact with Android devices, allowing device management, screenshot capture, UI element inspection, and ADB command execution.
ADB MCP Server
A Model Context Protocol (MCP) server for managing Android Debug Bridge (ADB) connections and interacting with Android devices.
Features
- Device Management: List all connected Android devices
- Screenshot Capture: Take screenshots from connected devices
- UI Element Inspection: Extract UI hierarchy from device screens
- ADB Command Execution: Run arbitrary ADB commands on connected devices
Prerequisites
- Android Debug Bridge (ADB) must be installed on your system and added to your PATH
- Node.js (v14 or higher)
- TypeScript
Installation
-
Clone the repository:
git clone https://github.com/yourusername/adb-mcp-server.git cd adb-mcp-server
-
Install the dependencies:
npm install
-
Build the project:
npm run build
Usage
Starting the Server
The ADB MCP server runs as a Model Context Protocol server over stdio:
npm start
For development with auto-restart on file changes:
npm run dev
Available Tools
The server exposes the following MCP tools:
1. List Connected Devices
get_devices
Returns a list of all connected Android devices with their IDs and connection states.
2. Capture Screenshot
capture_screenshot
Parameters:
deviceId
: ID of the device to capture frompath
: Path where the screenshot will be saved
The screenshot will be named according to the format: YYYYMMDD_HH_MM_SS.png
3. Get UI Elements
get_ui_elements
Parameters:
deviceId
: ID of the device to extract UI hierarchy from
Returns the full UI hierarchy in XML format, useful for UI automation and testing.
4. Execute ADB Command
execute_adb_command
Parameters:
deviceId
: ID of the device to run the command oncommand
: The ADB command to execute
Allows execution of arbitrary ADB commands on the specified device.
Project Structure
adb-mcp-server
├── src
│ ├── index.ts # Main MCP server entry point
│ ├── handlers/ # Request handlers for each feature
│ │ ├── deviceList.ts # Device listing functionality
│ │ ├── screenshot.ts # Screenshot capture functionality
│ │ └── uiElements.ts # UI hierarchy extraction
│ ├── utils/ # Utility functions
│ │ ├── adb.ts # ADB command execution utilities
│ │ └── screenshot.ts # Screenshot handling utilities
│ └── types/ # TypeScript type definitions
├── package.json # Project dependencies and scripts
└── tsconfig.json # TypeScript configuration
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.