Install
$ agentstack add mcp-nick-wq-android-web-control ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
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
> 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:
# 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 (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
- Source: Nick-wq/Android-Web-Control
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.