mcp server
mcp-memu
๐ค MCP server for AI-powered MEmu Android Emulator control โ 69 tools, 7 prompt templates, 8 resources for VM lifecycle, app testing, UI automation, GPS spoofing, and more
Set up
Runs on your computer. Pick your agent and operating system.
Before you start
- uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
{
"mcpServers": {
"mcp-memu": {
"command": "uvx",
"args": [
"mcp-memu"
]
}
}
}same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12
Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs
README
synced Oct 26, 2026๐ What is MCP-MEmu?
MCP-MEmu is a Model Context Protocol (MCP) server that gives AI agents complete control over MEmu Android Emulator. It wraps the MEMUC CLI through PyMEMUC and exposes 69 tools, 8 resources, and 7 prompt templates for seamless AI-driven Android automation.
Connect it to Claude Desktop, Antigravity, Cursor, or any MCP-compatible client โ and your AI can boot VMs, install apps, automate UI, take screenshots, spoof GPS, transfer files, and much more.
โจ Features
๐ฎ 69 Automation Tools
| Category | Count | Highlights |
|---|---|---|
| ๐ Lifecycle | 15 | Create, clone, start, stop, reboot, delete, export/import VMs |
| โ๏ธ Configuration | 8 | CPU, RAM, resolution, GPS, IMEI, device fingerprint randomization |
| ๐ฑ App Management | 7 | Install APK, launch, stop, uninstall, clear data, list packages |
| ๐ UI Interaction | 14 | Tap, swipe, long press, text input, keys, scroll, rotate, zoom, shake |
| ๐ธ Screenshot | 3 | Save to file, base64 for AI vision, get screen dimensions |
| ๐ Network & Sensors | 6 | Connect/disconnect, GPS spoofing, accelerometer, public IP |
| ๐ป Shell & Advanced | 8 | Shell commands, ADB passthrough, file push/pull, clipboard |
| ๐ Compound | 8 | Boot & ready, fresh start app, batch install, monkey test, snapshots |
๐ 8 MCP Resources (LLM Context)
| Resource | Description |
|---|---|
memu://guide | Comprehensive getting started guide with anti-hallucination rules |
memu://tools | Complete tool reference with all args and descriptions |
memu://workflows | Step-by-step automation recipes |
memu://config-keys | All VM configuration keys with valid values |
memu://vms | Live VM list with status (dynamic) |
memu://vm/{index}/status | Individual VM status (dynamic) |
memu://security | Security model documentation |
๐ก 7 Prompt Templates (Guided Workflows)
| Prompt | Description |
|---|---|
automate_app_testing | Full app testing workflow with screenshot-first rules |
setup_new_vm | Create โ configure โ boot from scratch |
ui_automation_guide | Screen coordinate system, swipe directions, input reference |
batch_device_farm | Set up multiple VMs with diverse configs |
debug_vm_issues | Diagnostic flowchart with error โ fix mapping |
gps_spoofing_guide | 10 city presets with verification steps |
file_transfer_guide | Push/pull files with VM path reference |
๐ก๏ธ Security
- Protected VM Registry โ Pre-existing VMs cannot be deleted/stopped/renamed
- Input Validation โ VM index validation, dangerous command blocklist
- Audit Logging โ All destructive operations logged with timestamps
- Command Blocklist โ Blocks
rm -rf /,mkfs,dd,reboot,shutdown,format,wipe
๐ Quick Start
Prerequisites
| Requirement | Details |
|---|---|
| OS | Windows 10/11 |
| MEmu Player | Download (installed & working) |
| Python | 3.10 or higher |
| uv | Install โ Python package manager |
| Admin Privileges | Required by MEMUC CLI |
Installation
# Clone the repository
git clone https://github.com/devbysatyam/mcp-memu.git
cd mcp-memu
# Install dependencies
uv sync
Run the Server
# Start the MCP server (stdio transport)
python server.py
# Or test with MCP Inspector (opens browser UI)
mcp dev server.py
Connect to Claude Desktop
Add to %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"memu": {
"command": "uv",
"args": ["run", "--directory", "C:\\path\\to\\mcp-memu", "python", "server.py"]
}
}
}
Connect to Antigravity / Gemini
Add to your MCP server settings:
{
"memu": {
"command": "uv",
"args": ["run", "--directory", "C:\\path\\to\\mcp-memu", "python", "server.py"]
}
}
๐ Use Cases
1. ๐ฑ Automated App Testing
"Install my APK, launch it, go through the onboarding flow, and take screenshots at each step."
The AI agent will:
- Boot the VM and wait for Android to fully load
- Install your APK via
install_apk - Launch the app and take a screenshot to see the screen
- Navigate through UI using
tap,swipe,input_text - Capture screenshots at each step for visual verification
Tools used: boot_and_ready โ install_apk โ launch_app โ screenshot_base64 โ tap โ input_text โ take_screenshot
2. ๐ GPS-Based Testing
"Set the location to San Francisco and check if the app shows nearby restaurants."
Tools used: set_gps_location(lat=37.7749, lng=-122.4194) โ launch_app โ screenshot_base64
3. ๐ญ Device Farm Setup
"Create 3 VMs with different resolutions and device fingerprints for compatibility testing."
The AI agent will:
- Create 3 new Android 9 VMs
- Configure each with different CPU, RAM, resolution
- Randomize device fingerprints so each looks unique
- Boot all VMs and verify they're working
Tools used: create_vm (x3) โ set_vm_cpu โ set_vm_memory โ set_vm_resolution โ randomize_vm_device โ boot_and_ready
4. ๐ CI/CD Integration
"Run a monkey test on the app and capture the results."
Tools used: boot_and_ready โ install_apk โ run_monkey_test โ take_screenshot โ pull_file (logs)
5. ๐ Clipboard & File Transfer
"Push a config file to the VM, read back the app's output log."
Tools used: push_file โ launch_app โ pull_file โ set_clipboard โ get_clipboard
6. ๐ง VM Configuration Management
"Read current config, change to 4 CPU cores and 4GB RAM, then reboot."
Tools used: get_all_vm_config โ stop_vm โ set_vm_cpu(cores=4) โ set_vm_memory(mb=4096) โ boot_and_ready
๐ง Tool Reference
Lifecycle Management
| Tool | Description | Key Args |
|---|---|---|
list_vms | List all VMs with status | โ |
get_vm_status | Check running/stopped | vm_index |
start_vm | Boot a VM | vm_index |
stop_vm | Graceful shutdown | vm_index |
reboot_vm | Restart a VM | vm_index |
create_vm | Create new VM | vm_version (76=Android 7, 96=Android 9) |
delete_vm | Permanently delete | vm_index |
clone_vm | Clone existing VM | vm_index, new_name |
rename_vm | Rename a VM | vm_index, new_name |
export_vm | Export to .ova | vm_index, output_path |
import_vm | Import from .ova | ova_path |
compress_vm | Compress disk | vm_index |
sort_out_all_vms | Re-tile windows | โ |
stop_all_vms | Stop all non-protected | โ |
check_task_status | Async task status | task_id |
Configuration
| Tool | Description | Key Args |
|---|---|---|
get_all_vm_config | Read all common settings | vm_index |
get_vm_config | Read single setting | vm_index, key |
set_vm_config | Write single setting | vm_index, key, value |
set_vm_cpu | Set CPU cores | vm_index, cores (1/2/4/8) |
set_vm_memory | Set RAM | vm_index, mb |
set_vm_resolution | Set display | vm_index, width, height, dpi |
set_vm_gps | Set GPS | vm_index, lat, lng |
randomize_vm_device | Random fingerprint | vm_index |
App Management
| Tool | Description | Key Args |
|---|---|---|
list_apps | Installed packages | vm_index |
install_apk | Install APK file | vm_index, apk_path |
uninstall_app | Remove app | vm_index, package |
launch_app | Start app | vm_index, package |
stop_app | Force stop | vm_index, package |
clear_app_data | Wipe app data | vm_index, package |
create_app_shortcut | Desktop shortcut | vm_index, package |
UI Interaction
| Tool | Description | Key Args |
|---|---|---|
tap | Tap coordinates | vm_index, x, y |
swipe | Swipe gesture | vm_index, x1, y1, x2, y2, duration_ms |
long_press | Long press | vm_index, x, y, duration_ms |
input_text | Type text | vm_index, text |
send_key | Send key event | vm_index, key (home/back/menu/volumeup/volumedown) |
press_enter | Enter key | vm_index |
press_back | Back button | vm_index |
press_home | Home button | vm_index |
shake_device | Shake gesture | vm_index |
rotate_screen | Toggle orientation | vm_index |
zoom_in / zoom_out | Pinch zoom | vm_index |
scroll_up / scroll_down | Scroll | vm_index, x |
Screenshot & Capture
| Tool | Description | Key Args |
|---|---|---|
take_screenshot | Save to file | vm_index, save_path |
screenshot_base64 | Base64 PNG for AI vision | vm_index |
get_screen_size | Current resolution | vm_index |
Network & Sensors
| Tool | Description | Key Args |
|---|---|---|
connect_network | Enable internet | vm_index |
disconnect_network | Disable internet | vm_index |
get_public_ip | Get public IP | vm_index |
set_gps_location | Spoof GPS | vm_index, lat, lng |
set_accelerometer | Set sensor | vm_index, x, y, z |
get_adb_connection_info | Get ADB address | vm_index |
Shell & Advanced
| Tool | Description | Key Args |
|---|---|---|
execute_shell | Run shell command | vm_index, command |
send_adb | Raw ADB command | vm_index, command |
get_device_info | Model/version/CPU | vm_index |
get_running_apps | Running processes | vm_index |
pull_file | VM โ Host | vm_index, remote_path, local_path |
push_file | Host โ VM | vm_index, local_path, remote_path |
set_clipboard | Set clipboard | vm_index, text |
get_clipboard | Read clipboard | vm_index |
Compound (Multi-Step)
| Tool | Description |
|---|---|
wait_for_boot | Poll until Android is fully booted |
boot_and_ready | Start VM + wait for boot |
fresh_start_app | Stop โ clear data โ relaunch |
install_and_launch | Install APK + launch |
clone_and_configure | Clone + set CPU/RAM/resolution |
batch_install | Install multiple APKs (;-separated) |
full_vm_snapshot | Stop โ export โ restart |
run_monkey_test | Random UI stress test |
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Client โ
โ (Claude Desktop / Antigravity / Cursor / etc.) โ
โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ JSON-RPC (stdio)
โโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP-MEmu Server โ
โ server.py โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ โ Tools โ โResources โ โ Prompts โ โ
โ โ (69) โ โ (8) โ โ (7 templates) โ โ
โ โโโโโโฌโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Security Layer โ โ
โ โ โข Protected VM registry โ โ
โ โ โข Input validation & command blocklist โ โ
โ โ โข Audit logging โ โ
โ โโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ PyMEMUC + ADB Helpers โ โ
โ โ โข MEMUC CLI wrapper โ โ
โ โ โข ADB pull/push with auto-reconnect โ โ
โ โโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MEmu Android Emulator โ
โ (MEMUC CLI + ADB over TCP) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Project Structure
mcp-memu/
โโโ assets/
โ โโโ banner.png # GitHub banner image
โโโ tools/
โ โโโ lifecycle.py # VM start, stop, create, delete, clone
โ โโโ config.py # CPU, RAM, resolution, GPS settings
โ โโโ apps.py # Install, launch, stop apps
โ โโโ input.py # Tap, swipe, type, scroll, shake
โ โโโ capture.py # Screenshots (file & base64)
โ โโโ network.py # Network, GPS, accelerometer
โ โโโ shell.py # Shell, ADB, file transfer, clipboard
โ โโโ compound.py # High-level combined operations
โโโ resources/
โ โโโ vm_status.py # MCP resources (guides, tools ref, config keys)
โ โโโ prompts.py # MCP prompt templates (7 workflows)
โโโ utils/
โ โโโ memuc_instance.py # Singleton PyMemuc + security layer
โ โโโ adb_helpers.py # ADB pull/push with timeout & reconnect
โโโ server.py # FastMCP entry point
โโโ pyproject.toml # Project metadata & dependencies
โโโ protected_vms.json # Auto-generated (gitignored)
โโโ SECURITY.md # Security documentation
โโโ LICENSE # MIT License
โโโ README.md # This file
๐ฆ Dependencies
| Package | Version | Purpose |
|---|---|---|
| pymemuc | โฅ 0.6.0 | Python wrapper for MEmu's MEMUC CLI |
| mcp[cli] | โฅ 1.0.0 | Model Context Protocol SDK + CLI tools |
| Pillow | โฅ 12.1.1 | Image processing for screenshots |
All dependencies are managed via pyproject.toml and installed automatically with uv sync.
๐ Security
See SECURITY.md for full details.
| Feature | Description |
|---|---|
| Protected VMs | Pre-existing VMs snapshotted on startup โ cannot be deleted/stopped |
| Input Validation | VM index validated, negative values rejected |
| Command Blocklist | rm -rf /, mkfs, dd, reboot, shutdown, format, wipe blocked |
| Audit Logging | All destructive ops logged with timestamps to stderr |
| Local-Only Transport | Uses stdio โ no network exposure by default |
For remote deployments, implement OAuth 2.1 with PKCE per the MCP specification.
โ ๏ธ Known Limitations
| Limitation | Details | Workaround |
|---|---|---|
| Clone requires disk space | Each clone needs 2-4GB | Free disk space before cloning |
| DirectX blank screenshots | MEmu's DirectX mode produces blank images | Set graphics_render_mode=0 (OpenGL) |
| ADB requires WiFi | ADB over TCP needs VM WiFi enabled | Call connect_network() first |
| Config needs stopped VM | CPU/RAM/resolution only changeable when stopped | stop_vm() before config changes |
| Windows only | MEmu is Windows-only software | No Linux/macOS support |
๐ค Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing) - Open a Pull Request
๐ License
This project is licensed under the MIT License โ see the LICENSE file for details.
๐ Acknowledgments
- MEmu Player โ Android emulator
- PyMEMUC โ Python MEMUC wrapper
- Model Context Protocol โ AI tool interoperability standard
- FastMCP โ Python MCP SDK