AOSP Platform Builder MCP
by goyaljai
README.md
# AOSP Platform Builder MCP
MCP server that connects to a GCP-hosted AOSP build VM via IAP tunnel,
uploads APKs as privileged system apps, and builds `system.img`.
## Project Structure
```
aosp-platform-builder-mcp/
├── connection.json ← Your GCP/AOSP config (edit this)
├── .env.example
├── pyproject.toml
├── requirements.txt
├── skills.md ← Exhaustive Claude skill definition
├── README.md
└── src/
├── server.py ← MCP server (8 tools)
├── tools/
│ ├── gcp.py ← connect_gcp
│ ├── apk.py ← upload_apk
│ ├── module.py ← create_priv_app_module
│ ├── config.py ← patch_product_config
│ └── build.py ← run_lunch, build_systemimage,
│ stream_build_logs, exec_remote
└── utils/
├── config.py ← Loads connection.json
├── shell.py ← Local command execution
├── ssh.py ← gcloud compute ssh/scp (IAP)
└── validation.py ← Input sanitization
```
## Setup
```bash
# 1. Install
cd aosp-platform-builder-mcp
pip install -e .
# 2. Authenticate
gcloud auth login
# 3. Edit connection.json with your details (pre-filled for current setup)
# 4. Register with Claude Code — add to ~/.claude/settings.json:
```
```json
{
"mcpServers": {
"aosp-platform-builder": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/Users/jai.goyal/aosp-platform-builder-mcp"
}
}
}
```
## Current Configuration
| Setting | Value |
|----------------|------------------------------------|
| GCP Project | `glancecdn-sandbox-c32a` |
| Zone | `asia-south1-c` |
| VM | `aosp-build-vm-replica-1` |
| SSH User | `jai.goyal` |
| IAP Tunnel | enabled |
| AOSP Root | `/home/jai.goyal/a16` |
| Lunch Target | `aosp_arm64-bp2a-userdebug` |
| Build Command | `make -j96` |
| Output | `out/target/product/generic_arm64/system.img` |
## Usage
```
User: "connect and upload my apk and add this apk as a priv-app"
Claude:
1. Asks for APK path
2. connect_gcp → auth + start VM + test SSH
3. upload_apk → validate + scp + extract package name
4. create_priv_app_module → Android.bp in vendor/glance/priv-app/
5. patch_product_config → PRODUCT_PACKAGES += Module
6. run_lunch → lunch aosp_arm64-bp2a-userdebug
7. build_systemimage → make -j96
8. Returns system.img path
```
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues