Saya mencoba mengimplementasikan ulang kali-mcp yang ada dengan Go.
(github.com/found-cake)Halo. Saya seorang mahasiswa yang sedang menempuh studi di jurusan keamanan informasi.
Saya sering menggunakan kali-mcp untuk pekerjaan otomatisasi pentest / pengujian trafik / CTF, tetapi saat menjalankan beberapa agen secara bersamaan saya mengalami bottleneck, jadi saya mencoba mengimplementasikannya ulang sendiri dengan Go.
GitHub: https://github.com/found-cake/kali-mcp-go
Struktur dan keterbatasan kali-mcp yang ada
Versi aslinya diimplementasikan dengan Flask + Python, dan kelas CommandExecutor memiliki struktur yang membuat subprocess.Popen untuk setiap permintaan lalu tambahan menjalankan 2 daemon thread untuk membaca stdout/stderr masing-masing.
Untuk agen tunggal ini sudah memadai, tetapi ketika permintaan serentak menumpuk di lingkungan multi-agent, muncul masalah seperti berikut.
- Single worker bawaan Flask — agen saling memblokir
- Overhead pembuatan proses + thread untuk setiap permintaan
- Agen salah mengira keterlambatan respons sebagai timeout lalu mencoba ulang pekerjaan yang sama
Perubahan utama
Server
- Sebelumnya: Flask (single worker bawaan)
- Diubah: Fiber v3 / fasthttp — konkurensi penuh
Pengumpulan output
- Sebelumnya: readline loop dengan 2 daemon thread
- Diubah: sinkronisasi dengan 2 goroutine + WaitGroup, sehingga waktu pengumpulan stdout/stderr selaras dengan jelas dan diproses tanpa kehilangan output
timeout/cancel
- Sebelumnya:
process.wait(timeout=...)+ kill paksa - Diubah: berbasis context — pipe juga ditutup dengan akurat
File sementara Metasploit
- Sebelumnya: hardcoded
/tmp/mks_msf_resource.rc— berpotensi race condition saat permintaan serentak - Diubah:
os.CreateTemp— diproses aman dengan nama file unik untuk setiap permintaan
Dukungan tshark
- Sebelumnya: tidak ada
- Diubah: menambahkan endpoint khusus
Arsitektur
Saya mempertahankan struktur 2-tier yang sama seperti sebelumnya, sambil mengganti bagian internalnya.
[AI Client] →(MCP stdio)→ [mcp-client] →(HTTP + Bearer token)→ [kali-server] →(exec)→ [nmap, tshark, ...]
Belum ada komentar.