Provides tools for Android Virtual Device (AVD) automation, including starting emulators, executing ADB commands, and capturing device screenshots.
Allows for the management and automation of Android Virtual Devices (AVD) that have been configured within the Android Studio environment.
Enables the execution of Gradle build commands and tasks as part of automated Android development and testing workflows.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AVD MCP ServerStart the Pixel_5_API_31 emulator, run pnpm android, and show me a screenshot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AVD MCP Server
A Model Context Protocol (MCP) server for Android Virtual Device automation. This tool allows you to start an Android emulator, execute commands, and capture screenshots automatically.
Features
Automatically starts Android Virtual Device (AVD) if not running
Executes commands (pnpm, gradle, npm, etc.)
Captures screenshots from the emulator
Returns command output and screenshot in base64 format
Prerequisites
Android SDK with
adbandemulatorin PATHNode.js 18 or higher
An Android Virtual Device configured in Android Studio
Installation
Quick Start (Recommended)
No installation needed! Just add to your MCP client config (e.g., Claude Desktop):
json
{
"mcpServers": {
"avd-mcp": {
"command": "npx",
"args": ["avd-mcp"]
}
}
}
That's it! The package will be automatically downloaded and executed when needed.
Local Development
``bash
Clone the repository
git clone https://github.com/yourusername/avd-mcp.git cd avd-mcp
Install dependencies
pnpm install
Build the project
pnpm build
Test locally
node dist/index.js ``
Usage
Available Tools
avd_run_and_screenshot
Starts an AVD (if not running), executes a command, waits, and captures a screenshot.
Parameters:
avdName(optional): Name of the AVD to start. If omitted and no device is running, will throw an error.command(required): Command to execute (e.g.,pnpm android,gradle assembleDebug)waitMsAfterRun(optional): Milliseconds to wait after command execution before taking screenshot. Default: 2000ms
Returns:
Command output (stdout/stderr)
Screenshot in base64 format (PNG)
Example:
typescript
{
"avdName": "Pixel_5_API_31",
"command": "pnpm android",
"waitMsAfterRun": 5000
}
How It Works
Device Check: Checks if an Android device/emulator is already running using
adb devicesStart Emulator: If no device is running and
avdNameis provided, starts the emulatorExecute Command: Runs the specified command using PowerShell
Wait: Waits for the specified duration to allow UI updates
Screenshot: Captures a screenshot using
adb screencapReturn: Returns both command output and screenshot
Troubleshooting
AVD not starting
Verify AVD name matches one configured in Android Studio:
emulator -list-avdsCheck that
emulatoris in your system PATHEnsure virtualization is enabled in BIOS (Intel VT-x or AMD-V)
ADB not found
Install Android SDK Platform-Tools
Add Android SDK platform-tools to PATH:
C:\Users\YourUser\AppData\Local\Android\Sdk\platform-tools
Screenshot timeout
Increase
waitMsAfterRunparameterCheck if device is fully booted:
adb shell getprop sys.boot_completed(should return1)
Publishing to npm
To publish this package to npm:
``bash
Login to npm
npm login
Update version in package.json
npm version patch # or minor, or major
Publish
npm publish ``
After publishing, users can use it directly with npx avd-mcp without cloning!
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
Author
Created for automating Android development workflows with AI assistants.