# Android Web Control

> An Android Web Control Platform powered by WebRTC, WebCodecs and ADB for browser-based screen mirroring, remote control and AI Agent integration.

- **Type:** MCP server
- **Install:** `agentstack add mcp-nick-wq-android-web-control`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [Nick-wq](https://agentstack.voostack.com/s/nick-wq)
- **Installs:** 0
- **Category:** [Web & Browser](https://agentstack.voostack.com/c/web-and-browser)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [Nick-wq](https://github.com/Nick-wq)
- **Source:** https://github.com/Nick-wq/Android-Web-Control

## Install

```sh
agentstack add mcp-nick-wq-android-web-control
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Android Web Control
## 投屏中控

**Browser-based Android remote control — multi-display, WebRTC streaming, real-time input injection**

[](LICENSE)
[](https://castvehicle.com)
[](docs/webrtc.md)
[](https://github.com/Genymobile/scrcpy)
[](https://castvehicle.com)

[📖 中文文档](docs/README-zh.md)

---

## What is this?

**Android Web Control** is a self-developed product that runs **up to 3 virtual displays** on a single Android phone, streams each display as an H.264 video to the browser over **WebRTC (LAN)**, and forwards mouse/keyboard input back from the browser into each virtual screen via **scrcpy injection**.

The entire control loop lives in the browser — no desktop client required.

> Live at **[castvehicle.com](https://castvehicle.com)**

> **Note:** This is a **product showcase**, not an open-source project. Source code is not publicly available.

---

## Architecture

```
                         Android Web Control

               ┌─────────────────────────────────┐
               │        Signaling Server         │
               │     Room • Socket.IO • ICE      │
               └─────────────────────────────────┘
                              ▲
                              │  Signaling Only
                              │
        ┌─────────────────────┴─────────────────────┐
        │                                           │
┌──────────────────────┐                  ┌────────────────────────┐
│    Android Device    │                  │        Browser         │
│                      │                  │                        │
│                      │                  │  WebCodecs Decoder     │
│  Virtual Display     │◄──── Control ────│  Keyboard / Mouse      │
│  MediaCodec (H.264)  │                  │  Canvas Renderer       │
│  Audio Capture(Opus) │────── Video ───► │                        │
│  Input Injection     │────── Audio ───► │                        │
│                      │                  │                        │
└──────────────────────┘                  └────────────────────────┘

                 End-to-End LAN P2P Connection (WebRTC)
```

---

## Key Features

| Feature | How |
|---|---|
| **3 virtual displays** | launched via in-app ADB client |
| **H.264 streaming** | MediaCodec encodes each virtual screen → WebRTC DataChannel/video |
| **Browser rendering** | WebCodecs / MSE decodes H.264, zero plugin |
| **Remote input** | Mouse events in browser → WebRTC →  input injection |
| **Audio passthrough** | Phone audio captured and routed to browser speaker |
| **IME / keyboard** | Full keyboard shortcut support and soft-keyboard input |
| **No desktop software** | Browser-only control, works on any OS |
| **Phone screen off** | Phone can be flipped face-down while in use |

---

## Demo

  
  3 apps running side-by-side in the browser — mouse controls each independently

  
  Run dual-screen apps and type directly from your computer keyboard

---

## Quick Start

### Prerequisites

- Android phone with **Developer Mode** enabled and **ADB over TCP** activated 
- Phone and computer on the **same LAN**
- A modern browser (Chrome / Edge recommended)

### Steps

**1. Activate your phone**

Enable ADB over TCP so the app can create virtual displays:

```bash
# Connect phone via USB, then run on your computer:
adb tcpip 5555
```

> Full guide → [docs/adb-activation.md](docs/adb-activation.md)

**2. Install the Android app**

Download the APK from the [apk/](apk/) directory or scan the QR code on the web page.

**3. Open the web control panel**

Visit **[castvehicle.com](https://castvehicle.com)** (or self-host), scan the pairing QR code with the app, then tap **Start Mirroring** on the phone.

> Step-by-step guide → [docs/quick-start.md](docs/quick-start.md)

---

## How It Works

```
Android Phone
├── Virtual Display ×3   (created by scrcpy via app_process)
├── MediaCodec           (encodes each display → H.264 bitstream)
└── In-app ADB client    (simulates ADB client protocol over TCP 5555)
        │
        │  WebRTC (LAN, low latency)
        ▼
Browser
├── WebCodecs / MSE      (decodes H.264 → renders 3 video panels)
├── Mouse / Keyboard     (captured → sent back via WebRTC)
└── scrcpy injection     (input events injected into each virtual screen)
```

---

## Docs

> This project is still being documented. More content is coming soon.

| Document | Description |
|---|---|
| [architecture.md](docs/architecture.md) | End-to-end system design |
| [quick-start.md](docs/quick-start.md) | Setup guide for new users |
| [adb-activation.md](docs/adb-activation.md) | How to enable ADB  on the phone |
| [virtual-display.md](docs/virtual-display.md) | Virtual display implementation with scrcpy |
| [webrtc.md](docs/webrtc.md) | WebRTC streaming & signaling design |
| [protocol.md](docs/protocol.md) | Signaling protocol reference |
| [performance.md](docs/performance.md) | Latency, bitrate, and optimization notes |
| [faq.md](docs/faq.md) | Frequently asked questions |
| [roadmap.md](docs/roadmap.md) | Planned features (SDK, AI agent integration, …) |

---

## Roadmap

- [ ] AI Agent SDK for Android device automation
- [ ] Unified management for multiple Android devices
- [ ] Remote access over the Internet (TURN relay)
- [ ] Plugin API for third-party integrations

See [docs/roadmap.md](docs/roadmap.md) for detail.

---

## License

[MIT](LICENSE)

---

## Contact

If you have product feedback or business inquiries, feel free to follow the WeChat Official Account:

  
  Scan to follow — WeChat Official Account

---

  Built by Nick · Android Connectivity & Screen Streaming

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Nick-wq](https://github.com/Nick-wq)
- **Source:** [Nick-wq/Android-Web-Control](https://github.com/Nick-wq/Android-Web-Control)
- **License:** Apache-2.0

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-nick-wq-android-web-control
- Seller: https://agentstack.voostack.com/s/nick-wq
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
