Skip to main content
Glama
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.