Zeus Mobile MCP
README.md
# โก Zeus Mobile MCP
<p align="center">
<b>Hardened, Enterprise & Banking-Grade Mobile Automation MCP Server</b><br>
<i>100% Local Execution โข Air-Gapped Zero Telemetry โข Automatic PII & Secret Redaction โข PCI-DSS Logging Standard</i>
</p>
<p align="center">
<img src="https://img.shields.io/badge/Security-Banking%20Grade-0A84FF?style=for-the-badge&logo=shield" alt="Banking Grade Security" />
<img src="https://img.shields.io/badge/Telemetry-0%25%20Air--Gapped-success?style=for-the-badge" alt="Zero Telemetry" />
<img src="https://img.shields.io/badge/Node-v20%2B-blue?style=for-the-badge&logo=node.js" alt="Node v20+" />
<img src="https://img.shields.io/badge/License-Apache%202.0-lightgrey?style=for-the-badge" alt="License" />
</p>
---
## ๐๏ธ Mengapa Zeus Mobile MCP?
Banyak framework otomatisasi mobile bawaan mengirimkan analitik, pelacakan telemetry, atau mengekspos data sensitif saat UI di-dump ke LLM.
**Zeus Mobile MCP** dirancang khusus untuk lingkungan **finansial, perbankan, dan enterprise** yang memerlukan kepatuhan privasi ketat:
- **100% Local & Air-Gapped:** Seluruh otomasi berjalan lokal di mesin Anda (via USB/ADB atau emulator lokal). Semua kode tracking analitik eksternal (PostHog, Scarf) telah **dihapus permanen**. Tidak ada satu byte pun data yang dikirim ke cloud pihak ketiga.
- **Automatic PII Masking:** Struktur hierarki UI yang dibaca otomatis menyamarkan data pribadi nasabah:
- **Nomor Kartu Debit/Kredit (PAN):** Disamarkan menjadi `****-****-****-1234`
- **NIK / KTP (16-Digit):** Disamarkan otomatis
- **Email & Nomor Telepon:** Otomatis disensor (`n***h@bank.co.id`, `081****90`)
- **Perlindungan Kredensial Sensitif:** Field Password, PIN, MPIN, CVV, dan OTP otomatis diganti dengan `[REDACTED_SECRET]` sebelum dibaca oleh AI agent.
- **Log Sanitasi Standar PCI-DSS (Req 3 & 10):** Tombol yang ditekan (`mobile_type_keys`) dan isi clipboard otomatis disensor di log server (`"text": "********"`), mencegah kebocoran kredensial ke log file.
- **Data Sovereignty Lock:** Alokasi perangkat cloud diblokir secara default. Otomasi hanya diizinkan berjalan di perangkat on-premise/lokal terpercaya.
- **Kebijakan DLP Screenshot:** Opsi untuk memblokir pengambilan tangkapan layar (`MOBILEMCP_SCREENSHOT_POLICY=block`) dan penanganan khusus untuk layar dengan `FLAG_SECURE`.
---
## ๐ Quick Start
### 1. Kloning & Bangun Proyek
```bash
git clone https://github.com/candraprasetya/zeus-mobile-mcp.git
cd zeus-mobile-mcp
npm install
npm run build
```
### 2. Integrasikan ke MCP Client Anda
#### Claude Desktop (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"zeus-mobile-mcp": {
"command": "node",
"args": ["/PATH/TO/zeus-mobile-mcp/lib/index.js"],
"env": {
"MOBILEMCP_BANKING_MODE": "1",
"MOBILEMCP_SCREENSHOT_POLICY": "allow"
}
}
}
}
```
#### Antigravity / Cursor / Cline (`mcp.json`):
```json
{
"mcpServers": {
"zeus-mobile-mcp": {
"command": "node",
"args": ["/PATH/TO/zeus-mobile-mcp/lib/index.js"],
"env": {
"MOBILEMCP_BANKING_MODE": "1"
}
}
}
}
```
---
## ๐งฐ Daftar Tools MCP yang Tersedia
| Kategori | Tool | Penjelasan |
|---|---|---|
| **Perangkat** | `mobile_list_available_devices` | Mendeteksi perangkat Android/iOS fisik & emulator yang aktif secara lokal |
| **Manajemen Aplikasi** | `mobile_list_apps` | Menampilkan aplikasi yang terpasang |
| | `mobile_get_foreground_app` | Mengecek aplikasi yang sedang aktif di layar |
| | `mobile_launch_app` | Membuka aplikasi berdasarkan package name / bundle ID |
| | `mobile_terminate_app` | Menutup aplikasi |
| | `mobile_install_app` / `mobile_uninstall_app` | Memasang atau menghapus aplikasi lokal |
| **Inspeksi Layar** | `mobile_list_elements_on_screen` | Membaca hierarki UI dengan **PII & Secret Redaction otomatis** |
| | `mobile_get_screen_size` | Mendapatkan resolusi layar perangkat |
| | `mobile_get_orientation` / `mobile_set_orientation` | Cek dan ubah orientasi layar (Portrait/Landscape) |
| **Interaksi UI** | `mobile_click_on_screen_at_coordinates` | Melakukan tap pada koordinat tertentu |
| | `mobile_double_tap_on_screen` | Melakukan double tap |
| | `mobile_long_press_on_screen_at_coordinates` | Tekan dan tahan (long press) |
| | `mobile_swipe_on_screen` | Melakukan swipe/scroll ke atas, bawah, kiri, atau kanan |
| **Input Aman** | `mobile_type_keys` | Mengetik teks (tersanitasi di audit log) |
| | `mobile_press_button` | Menekan tombol fisik (HOME, BACK, VOLUME_UP, VOLUME_DOWN, ENTER) |
| | `mobile_clipboard` | Mengatur atau membaca clipboard dengan proteksi log |
| **Tangkapan Layar** | `mobile_take_screenshot` / `mobile_save_screenshot` | Mengambil screenshot (diatur oleh DLP policy) |
| **Diagnostik & Batch**| `mobile_get_device_logs` | Mengambil log perangkat (logcat / syslog) |
| | `mobile_list_crashes` / `mobile_get_crash` | Menganalisis laporan crash aplikasi |
| | `mobile_batch_commands` | Menjalankan serangkaian aksi otomasi dalam satu panggilan batch cepat |
---
## โ๏ธ Konfigurasi Lingkungan (Environment Variables)
| Variable | Deskripsi | Rekomendasi Enterprise |
|---|---|---|
| `MOBILEMCP_BANKING_MODE` | Mengaktifkan perlindungan ekstra perbankan (Zero telemetry, PII masking, local device lock). | `1` |
| `MOBILEMCP_MASK_PII` | Mengaktifkan masking regex pada data kartu kredit, NIK, dsb. | `true` |
| `MOBILEMCP_SCREENSHOT_POLICY` | Atur ke `block` untuk melarang screenshot sama sekali, atau `allow` untuk mengizinkan. | `allow` / `block` |
| `MOBILEMCP_ALLOW_REMOTE_CLOUD` | Diatur ke `0` secara default untuk memblokir tunneling ke cloud device. | `0` |
| `MOBILEMCP_AUTH` | Token wajib (Bearer) jika server dijalankan dalam mode HTTP Streamable. | `"your-secure-token"` |
---
## ๐งช Pengujian & Verifikasi
Proyek ini dilengkapi dengan unit test pengujian standar keamanan perbankan:
```bash
# Jalankan test keamanan perbankan, sanitasi log, dan format elemen UI
npx playwright test test/banking-security.test.ts test/format-elements.test.ts test/utils.ts
```
---
## ๐ค Author & Credit
- **Creator & Maintainer:** **CandraPrasetya**
- **Repository:** [https://github.com/candraprasetya/zeus-mobile-mcp](https://github.com/candraprasetya/zeus-mobile-mcp)
---
## ๐ Lisensi
Didistribusikan di bawah lisensi **Apache-2.0**. Lihat file [LICENSE](LICENSE) untuk informasi lebih lanjut.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues