Docker Android logo

Docker Android

CommunityPopular
budtmo

Android in docker solution with noVNC supported, video recording, mcp server and AI-agent

Publisherbudtmo
Repositorydocker-android
LanguagePython
Forks
1.8K
Stars
15.9K
Available tools
0
Transport typestdio
Links
  • Connect tools to AI workflows

    Docker Android exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 0 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    15.9K stars and 1.8K forks from the linked repository.

Paypal Donate PRs Welcome codecov Join the chat at https://gitter.im/budtmo/docker-android GitHub release

Docker-Android is a docker image built to be used for everything related to Android. It can be used for Application development and testing (native, web and hybrid-app).

Advantages of using this project

  1. Emulator with different device profile and skins, such as Samsung Galaxy S6, LG Nexus 4, HTC Nexus One and more.
  2. Support vnc to be able to see what happen inside docker container
  3. Support log sharing feature where all logs can be accessed from web-UI
  4. Ability to control emulator from outside container by using adb connect
  5. Integrated with other cloud solutions, e.g. Genymotion Cloud
  6. It can be used to build Android project
  7. It can be used to run unit and UI-Test with different test-frameworks, e.g. Appium, Espresso, etc.
  8. It support mcp server (beta-version)
  9. It support ai-agent (beta-version)

List of Docker-Images

AndroidAPIImage with latest release versionImage with specific release version
9.028budtmo/docker-android:emulator_9.0budtmo/docker-android:emulator_9.0_<release_version>
10.029budtmo/docker-android:emulator_10.0budtmo/docker-android:emulator_10.0_<release_version>
11.030budtmo/docker-android:emulator_11.0budtmo/docker-android:emulator_11.0_<release_version>
12.032budtmo/docker-android:emulator_12.0budtmo/docker-android:emulator_12.0_<release_version>
13.033budtmo/docker-android:emulator_13.0budtmo/docker-android:emulator_13.0_<release_version>
14.034budtmo/docker-android:emulator_14.0budtmo/docker-android:emulator_14.0_<release_version>
--budtmo/docker-android:genymotionbudtmo/docker-android:genymotion_<release_version>
--budtmo/docker-android:mcpbudtmo/docker-android:mcp_<release_version>

List of Devices

TypeDevice Name
PhoneSamsung Galaxy S10
PhoneSamsung Galaxy S9
PhoneSamsung Galaxy S8
PhoneSamsung Galaxy S7 Edge
PhoneSamsung Galaxy S7
PhoneSamsung Galaxy S6
PhoneNexus 4
PhoneNexus 5
PhoneNexus One
PhoneNexus S
TabletNexus 7
TabletPixel C

Requirements

  1. Docker is installed on your system.

Quick Start

  1. If you use Ubuntu OS on your host machine, you can skip this step. For OSX and Windows OS user, you need to use Virtual Machine that support Virtualization with Ubuntu OS because the image can be run under Ubuntu OS only.

  2. Your machine should support virtualization. To check if the virtualization is enabled is:

    sudo apt install cpu-checker
    kvm-ok
  3. Run Docker-Android container

    docker run -d -p 6080:6080 -e EMULATOR_DEVICE="Samsung Galaxy S10" -e WEB_VNC=true --device /dev/kvm --name android-container budtmo/docker-android:emulator_11.0
  4. Open http://localhost:6080 to see inside running container.

  5. To check the status of the emulator

    docker exec -it android-container cat device_status

Persisting data

The default behaviour is to destroy the emulated device on container restart. To persist data, you need to mount a volume at /home/androidusr: docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0

WSL2 Hardware acceleration (Windows 11 only)

Credit goes to Guillaume - The Parallel Interface blog

Microsoft - Advanced settings configuration in WSL

  1. Add yourself to the kvm usergroup.

    sudo usermod -a -G kvm ${USER}
  2. Add necessary flags to /etc/wsl.conf to their respective sections.

    [boot]
    command = /bin/bash -c 'chown -v root:kvm /dev/kvm && chmod 660 /dev/kvm'

    Then, using PowerShell, open a notepad on notepad $env:USERPROFILE\.wslconfig. Inside, put these other flags:

    [wsl2]
    nestedVirtualization=true
  3. Restart WSL2 via CMD prompt or Powershell

    wsl --shutdown

command = /bin/bash -c 'chown -v root:kvm /dev/kvm && chmod 660 /dev/kvm' sets /dev/kvm to kvm usergroup rather than the default root usergroup on WSL2 startup.

nestedVirtualization flag is only available to Windows 11.

If this setup does not work, you may have an old WSL version. In that case, ignore \.wslconfig and put everything on /etc/wsl.conf, including the [wsl2] flag.

Use-Cases

  1. Build Android project
  2. UI-Test with Appium
  3. Control Android emulator on host machine
  4. SMS Simulation
  5. Jenkins
  6. Deploying on cloud (Azure, AWS, GCP)

Custom-Configurations

This document contains information about configurations that can be used to enable some features, e.g. log-sharing, etc.

Genymotion

For you who do not have ressources to maintain the simulator or to buy machines or need different device profiles, you can give a try by using Genymotion SAAS. Docker-Android is integrated with Genymotion on different cloud services, e.g. Genymotion SAAS, AWS, GCP, Alibaba Cloud. Please follow this document for more detail.

Emulator Skins

The Emulator skins are taken from Android Studio IDE and Samsung Developer Website

USERS

PRO VERSION

Due to high requests for help and to be able to actively maintain the projects, the creator has decided to create docker-android-pro. Docker-Android-Pro is a sponsor based project which mean that the docker image of pro-version can be pulled only by active sponsor.

The differences between normal version and pro version are:

FeatureNormalProComment
user-behavior-analyticsYesNo-
ai-agentNoYesCurrently supported local AI-host/AI-provider: Ollama
proxyNoYesSet up company proxy on Android emulator on fly
languageNoYesSet up language on Android emulator on fly
Newer Android versionNoYesSupport other newer Android version e.g. Android 15, Android 16, Android 17, etc
root-privilegedNoYesAble to run command with security privileged
headless-modeNoYesSave resources by using headless mode
Selenium 4.x integrationNoYesRunning Appium UI-Tests againt one (Selenium Hub) endpoint for Android- and iOS emulator(s) / device(s)
multiple Android-SimulatorsNoYes (soon)Save resources by having multiple Android-Simulators on one docker-container
Google Play StoreNoYes (soon)-
Video RecordingNoYes (soon)Helpful for debugging

List pro-version images:

AndroidAPITypeImage with latest release versionImage with specific release version
9.028Normalbudtmo2/docker-android-pro:emulator_9.0budtmo2/docker-android-pro:emulator_9.0_<release_version>
10.029Normalbudtmo2/docker-android-pro:emulator_10.0budtmo2/docker-android-pro:emulator_10.0_<release_version>
11.030Normalbudtmo2/docker-android-pro:emulator_11.0budtmo2/docker-android-pro:emulator_11.0_<release_version>
12.032Normalbudtmo2/docker-android-pro:emulator_12.0budtmo2/docker-android-pro:emulator_12.0_<release_version>
13.033Normalbudtmo2/docker-android-pro:emulator_13.0budtmo2/docker-android-pro:emulator_13.0_<release_version>
14.034Normalbudtmo2/docker-android-pro:emulator_14.0budtmo2/docker-android-pro:emulator_14.0_<release_version>
15.035Normalbudtmo2/docker-android-pro:emulator_15.0budtmo2/docker-android-pro:emulator_15.0_<release_version>
16.036Normalbudtmo2/docker-android-pro:emulator_16.0budtmo2/docker-android-pro:emulator_16.0_<release_version>
17.037Normalbudtmo2/docker-android-pro:emulator_17.0budtmo2/docker-android-pro:emulator_17.0_<release_version>
9.028Headlessbudtmo2/docker-android-pro:emulator_headless_9.0budtmo2/docker-android-pro:emulator_headless_9.0_<release_version>
10.029Headlessbudtmo2/docker-android-pro:emulator_headless_10.0budtmo2/docker-android-pro:emulator_headless_10.0_<release_version>
11.030Headlessbudtmo2/docker-android-pro:emulator_headless_11.0budtmo2/docker-android-pro:emulator_headless_11.0_<release_version>
12.032Headlessbudtmo2/docker-android-pro:emulator_headless_12.0budtmo2/docker-android-pro:emulator_headless_12.0_<release_version>
13.033Headlessbudtmo2/docker-android-pro:emulator_headless_13.0budtmo2/docker-android-pro:emulator_headless_13.0_<release_version>
14.034Headlessbudtmo2/docker-android-pro:emulator_headless_14.0budtmo2/docker-android-pro:emulator_headless_14.0_<release_version>
15.035Headlessbudtmo2/docker-android-pro:emulator_headless_15.0budtmo2/docker-android-pro:emulator_headless_15.0_<release_version>
16.036Headlessbudtmo2/docker-android-pro:emulator_headless_16.0budtmo2/docker-android-pro:emulator_headless_16.0_<release_version>
17.037Headlessbudtmo2/docker-android-pro:emulator_headless_17.0budtmo2/docker-android-pro:emulator_headless_17.0_<release_version>
--AI-Agentbudtmo2/docker-android-pro:agentbudtmo2/docker-android-pro:agent_<release_version>
--Seleniumbudtmo2/docker-android-pro:seleniumbudtmo2/docker-android-pro:selenium_<release_version>

This document contains detail information about how to use docker-android-pro.

SPONSORS

SwiftproxySwiftproxy provides high-quality residential proxies for Android testing, automation, and location-based workflows. With 90M+ residential IPs, HTTP(S)/SOCKS5 support, flexible targeting, and non-expiring traffic, Swiftproxy helps users test apps and online services from different locations. Try Swiftproxy for free today and get 10% off with code PROXY90.

Learn more about Swiftproxy →

RapidProxyRapidProxy is a high-performance proxy provider built for automation and multi-account operations, offering clean residential proxies and native static ISP IPs. Access 90 million+ residential IPs worldwide, with intelligent rotation, sticky sessions, and support for high-concurrency requests. Ideal for web scraping, browser automation, social media account management, e-commerce, and bulk account registration. Residential proxies start at just $0.55/GB, with bandwidth that never expires. Use code RAPID10 for 10% off.

Learn more about Rapidproxy →

LICENSE

See License

Use Docker Android MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once Docker Android is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. This MCP runs locally through the TypingMind MCP connector on your device.

Setup guide to use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add Docker Android as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the Docker Android MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "docker-android": {
      "command": "npx",
      "args": [
        "-y",
        "<mcp-server-package>"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the Docker Android MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the Docker Android MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use Docker Android to help me with this task?
Docker Android
Sure. I read it.
Here is what I found using Docker Android.

Frequently asked questions

What is the Docker Android MCP server used for?

Docker Android is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use Docker Android MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use Docker Android with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use Docker Android MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With Docker Android connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect Docker Android MCP to TypingMind?

Docker Android runs through the TypingMind local MCP connector. This is best when the MCP server needs access to local files, desktop apps, command-line tools, or private resources on your computer.

What tools does Docker Android MCP provide in TypingMind?

Docker Android exposes MCP capabilities that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use Docker Android MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If Docker Android requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇