Skip to main content
Glama

๐Ÿฆ… MikroCLAW

MikroTik + CLAW (Claude) โ€” kendalikan RouterOS dari percakapan Claude Code

MCP server yang membuat Claude Code bisa mengakses, memonitor, dan mengelola perangkat MikroTik RouterOS lewat tool ber-skema โ€” plus dashboard monitoring live "Pulse".

Versi Lisensi Python RouterOS MCP Tools Skills Platform Read-only default Bahasa

MikroCLAW menjembatani Claude Code dengan RouterOS melalui REST API RouterOS v7 (HTTPS). Alih-alih Anda mengetik perintah curl/ssh manual, Claude memanggil tool seperti dhcp_leases atau firewall_filter_rules sebagai pemanggilan ber-skema โ€” aman, terstruktur, dan kredensial tidak pernah bocor ke jendela chat.

"Siapa saja klien DHCP yang aktif?" ยท "Interface mana yang down?" ยท "Blokir IP 10.0.0.5." โ€” cukup ketik dalam bahasa biasa, Claude memanggil tool yang tepat.

โœจ Kenapa MikroCLAW?

๐Ÿ”’ Read-only secara default

Aman untuk eksplorasi & monitoring tanpa risiko mengubah konfigurasi.

๐Ÿšง Operasi write digerbang

Setiap tool yang mengubah config dikunci flag MIKROCLAW_ALLOW_WRITE.

๐Ÿ”‘ Kredensial via .env

Tidak pernah muncul di chat, tidak ikut ter-commit.

๐Ÿงฉ 100 tool ber-skema

78 read + 22 write, termasuk lima fitur cerdas (Twin/Sentinel/Chronicle/Replay/Concierge), detect_roles, & rest_get/rest_write generic untuk path apa pun.

๐Ÿง  12 Agent Skills

Playbook siap pakai: health-check, audit firewall, audit keamanan, overview jaringan, troubleshoot, backup-snapshot, deteksi-peran + 5 fitur cerdas baru.

๐Ÿค– 5 fitur cerdas AI

Twin (simulator what-if paket), Sentinel (deteksi botnet/IoT terinfeksi tanpa signature), Chronicle (mesin waktu konfigurasi + deteksi intrusi), Replay (RCA retrospektif "kenapa tadi lemot"), Concierge (laporan bisnis RT-RW net).

๐Ÿ“Ÿ MikroCLAW Pulse

Dashboard web monitoring live per-detik (read-only, via Server-Sent Events).

โš™๏ธ Installer satu-baris

Windows (PowerShell) & macOS/Linux (bash) โ€” pasang uv, dependency, .env, daftar MCP.

๐ŸŒ Tanpa lock-in v7

RouterOS v6 cukup ganti lapis transport ke API biner; daftar tool tetap.

Versi terkini: v1.7.0 ยท Python 3.10+ ยท RouterOS v7.1+ ยท Lisensi Apache-2.0.

๐Ÿ“š Dokumen lain: docs/FITUR.md (ikhtisar fitur ringkas) ยท MANUAL_BOOK.md (panduan tutorial langkah demi langkah).


Daftar Isi

  1. Bagaimana Claude Code mengakses MikroTik

  2. Prasyarat

  3. Persiapan RouterOS

  4. Instalasi

  5. Konfigurasi (.env)

  6. Menghubungkan ke Claude Code

  7. Daftar tool

  8. Skills (playbook orkestrasi)

  9. MikroCLAW Pulse โ€” monitoring live

  10. Contoh penggunaan

  11. Uji manual tanpa Claude

  12. Keamanan

  13. Troubleshooting

  14. Kompatibilitas RouterOS v6 vs v7

  15. Struktur proyek

  16. Pengembangan: menambah tool

  17. Riwayat versi

  18. Lisensi


Related MCP server: MikroMCP

Bagaimana Claude Code mengakses MikroTik

Claude Code tidak punya driver MikroTik bawaan. MikroCLAW berperan sebagai MCP server (Model Context Protocol): proses lokal yang mengekspos sekumpulan tool. Claude Code memanggil tool itu; MikroCLAW menerjemahkannya menjadi panggilan REST API ke RouterOS, lalu mengembalikan JSON hasilnya.

flowchart LR
    subgraph local["๐Ÿ’ป Mesin Anda (lokal)"]
        CC["Claude Code<br/>(CLI ยท IDE ยท Web)"]
        MC["๐Ÿฆ… MikroCLAW<br/>MCP server + Pulse"]
        ENV[(".env<br/>host ยท user ยท pass")]
    end
    ROS["๐Ÿ“ก RouterOS<br/>(MikroTik v7)"]
    BROWSER["๐ŸŒ Browser<br/>(Pulse dashboard)"]

    CC -- "panggil tool (stdio MCP)" --> MC
    MC -- "hasil JSON" --> CC
    MC -- "HTTPS /rest/... (REST API v7)" --> ROS
    ROS -- "JSON" --> MC
    ENV -. "dibaca saat start" .-> MC
    BROWSER -- "SSE live per-detik" --> MC

    classDef box fill:#10182a,stroke:#1f2d44,color:#e6edf3;
    class CC,MC,ROS,BROWSER box;

Alurnya (mis. "siapa saja klien DHCP yang aktif?"):

sequenceDiagram
    autonumber
    participant U as ๐Ÿ‘ค Anda
    participant C as Claude Code
    participant M as ๐Ÿฆ… MikroCLAW
    participant R as ๐Ÿ“ก RouterOS
    U->>C: "siapa klien DHCP yang aktif?"
    C->>M: panggil tool dhcp_leases (MCP/stdio)
    M->>R: GET /rest/ip/dhcp-server/lease (Basic Auth dari .env)
    R-->>M: JSON daftar lease
    M-->>C: hasil terstruktur
    C-->>U: ringkasan klien DHCP

Rinciannya:

  1. Anda menulis prompt biasa, mis. "siapa saja klien DHCP yang aktif?".

  2. Claude Code memilih tool dhcp_leases dan memanggilnya lewat protokol MCP (stdio).

  3. MikroCLAW (client.py) mengirim GET https://<router>/rest/ip/dhcp-server/lease dengan Basic Auth dari .env.

  4. RouterOS membalas JSON; MikroCLAW meneruskannya ke Claude.

  5. Claude meringkas/menyajikan hasil untuk Anda.

RouterOS REST memetakan path konsol ke URL secara langsung, contoh:

Perintah konsol RouterOS

Operasi REST

/interface print

GET /rest/interface

/ip address print

GET /rest/ip/address

tambah item

PUT /rest/<path> (+ body JSON)

ubah item ber-.id

PATCH /rest/<path>/<id>

hapus item ber-.id

DELETE /rest/<path>/<id>

command (ping, dst.)

POST /rest/<path>


Prasyarat

Komponen

Versi

Catatan

RouterOS

v7.1+

REST API hanya ada di v7. Untuk v6 lihat kompatibilitas.

Python

3.10+

Diuji pada 3.14.

uv

terbaru

Pengelola environment/dependency โ€” https://docs.astral.sh/uv/

Akses jaringan

โ€”

Host yang menjalankan MikroCLAW harus bisa menjangkau port 443/80 router.


Persiapan RouterOS

Lakukan sekali di router. Disarankan HTTPS + user least-privilege.

# 1) (HTTPS) Aktifkan service www-ssl dengan sertifikat yang sudah ada di /certificate.
#    Jika belum punya sertifikat, buat self-signed dulu (lihat di bawah).
/ip/service/set www-ssl certificate=<nama-sertifikat> disabled=no

#    Alternatif cepat (kurang aman): pakai HTTP biasa.
#    /ip/service/set www disabled=no

# 2) Buat user khusus MikroCLAW โ€” JANGAN pakai 'admin' penuh.
/user/add name=mikroclaw password=<password-kuat> group=read     ;# read-only
#    Untuk mengizinkan operasi write, gunakan group=write atau policy kustom.

# 3) Batasi sumber yang boleh mengakses service (mis. hanya subnet LAN/host admin).
/ip/service/set www-ssl address=192.168.88.0/24

Membuat sertifikat self-signed (jika belum ada):

/certificate/add name=mikroclaw-ca common-name=mikroclaw-ca key-usage=key-cert-sign,crl-sign
/certificate/sign mikroclaw-ca
/certificate/add name=mikroclaw-https common-name=<ip-atau-hostname-router>
/certificate/sign mikroclaw-https ca=mikroclaw-ca
/ip/service/set www-ssl certificate=mikroclaw-https disabled=no

Karena sertifikat self-signed, biarkan MIKROTIK_VERIFY_TLS=false di .env (default). Set true hanya jika memakai sertifikat yang tepercaya.


Instalasi

Pilih jalur tercepat sesuai OS Anda โ€” installer mengurus uv, dependency, .env, dan registrasi MCP sekaligus:

Jalur

OS

Kapan dipakai

Perintah

๐Ÿš€ Bootstrap 1-baris

Windows

Belum punya repo, ingin clone + install sekaligus

irm .../bootstrap.ps1 | iex

๐Ÿš€ Bootstrap 1-baris

macOS / Linux

Belum punya repo, ingin clone + install sekaligus

curl -LsSf .../bootstrap.sh | bash

๐Ÿ› ๏ธ Installer lokal

Windows

Sudah punya repo

.\install.ps1 (atau double-click install.bat)

๐Ÿ› ๏ธ Installer lokal

macOS / Linux

Sudah punya repo

./install.sh

โœ‹ Manual

semua

Ingin kontrol penuh tiap langkah

cp .env.example .env lalu uv sync

Detail tiap jalur di bawah.

Windows (installer otomatis)

Installer memasang uv, dependency (termasuk Python via uv bila perlu), menulis .env secara interaktif, dan mendaftarkan MCP server ke Claude Code.

Opsi A โ€” satu baris (clone + install) di PowerShell:

irm https://raw.githubusercontent.com/Syamsuddin/MikroCLAW/main/bootstrap.ps1 | iex

Opsi B โ€” sudah punya repo: masuk folder MikroCLAW lalu double-click install.bat, atau di PowerShell:

.\install.ps1

Argumen berguna: -MikrotikHost 192.168.88.1 -MikrotikUser mikroclaw, -AllowWrite (izinkan write), -NonInteractive, -SkipMcpRegister. Lepas instalasi: .\uninstall.ps1 (tambah -RemoveEnv / -RemoveVenv).

Jika PowerShell memblokir skrip, jalankan lewat install.bat (sudah pakai -ExecutionPolicy Bypass) atau jalankan PowerShell sebagai: powershell -ExecutionPolicy Bypass -File .\install.ps1.

macOS / Linux (installer otomatis)

Installer memasang uv, dependency (termasuk Python via uv bila perlu), menulis .env (mode 600), dan mendaftarkan MCP server ke Claude Code.

Opsi A โ€” satu baris (clone + install):

curl -LsSf https://raw.githubusercontent.com/Syamsuddin/MikroCLAW/main/bootstrap.sh | bash

Opsi B โ€” sudah punya repo:

cd /path/ke/MikroCLAW
./install.sh

Argumen berguna: --host 192.168.88.1 --user mikroclaw, --allow-write, --http, --non-interactive, --skip-mcp. Lepas instalasi: ./uninstall.sh (tambah --remove-env / --remove-venv).

Manual (Windows / macOS / Linux)

cd /path/ke/MikroCLAW
cp .env.example .env          # lalu isi host + kredensial router
uv sync                       # pasang dependency (mcp, httpx, python-dotenv)

uv sync membuat virtualenv .venv/ dan menginstal proyek beserta dependensinya.


Konfigurasi (.env)

Semua konfigurasi lewat environment / file .env (otomatis dibaca saat server start).

Variabel

Wajib

Default

Keterangan

MIKROTIK_HOST

โœ…

โ€”

IP/hostname router, mis. 192.168.88.1.

MIKROTIK_USER

โ€”

admin

User RouterOS (disarankan user khusus least-privilege).

MIKROTIK_PASSWORD

โ€”

(kosong)

Password user tersebut.

MIKROTIK_USE_TLS

โ€”

true

true โ†’ HTTPS (www-ssl), false โ†’ HTTP.

MIKROTIK_PORT

โ€”

443/80

Port REST. Default mengikuti USE_TLS.

MIKROTIK_VERIFY_TLS

โ€”

false

Verifikasi sertifikat TLS. false cocok untuk self-signed.

MIKROTIK_TIMEOUT

โ€”

10

Timeout request (detik).

MIKROCLAW_ALLOW_WRITE

โ€”

false

Gerbang keamanan. true mengaktifkan tool yang mengubah konfigurasi.

Contoh .env minimal:

MIKROTIK_HOST=192.168.88.1
MIKROTIK_USER=mikroclaw
MIKROTIK_PASSWORD=rahasia-kuat
MIKROTIK_USE_TLS=true
MIKROTIK_VERIFY_TLS=false
MIKROCLAW_ALLOW_WRITE=false

Menghubungkan ke Claude Code

File .mcp.json sudah disertakan (scope project), isinya:

{
  "mcpServers": {
    "mikroclaw": {
      "command": "uv",
      "args": ["run", "--directory", "/Users/syams/PROJECTS/MikroCLAW", "mikroclaw"]
    }
  }
}

Server berjalan via stdio; kredensial diambil dari .env (bukan dari file ini), jadi .mcp.json aman untuk di-commit.

Langkah di Claude Code:

/mcp        # cek server "mikroclaw" muncul & status connected

Saat pertama kali, Claude Code akan meminta persetujuan untuk menjalankan MCP server project-scope โ€” setujui untuk mengaktifkannya.

Ingin dipakai di semua proyek, bukan cuma folder ini? Daftarkan sebagai user-scope: claude mcp add mikroclaw -s user -- uv run --directory /Users/syams/PROJECTS/MikroCLAW mikroclaw


Daftar tool

100 tool terbagi dua kelas: READ (selalu aktif) dan WRITE (digerbang flag).

pie showData
    title Distribusi 100 tool MikroCLAW
    "Read (selalu aktif)" : 78
    "Write (digerbang)" : 22

Cakupan domain READ (ringkas):

Domain

Contoh tool

๐Ÿ–ฅ๏ธ Sistem & perangkat

system_resource, system_health, routerboard_info, system_packages, system_license

๐Ÿ”Œ Interface & L2

list_interfaces, ethernet_ports, bridge_ports, bridge_hosts, vlans

๐ŸŒ IP & routing

list_ip_addresses, routing_table, arp_table, neighbors, dhcp_*

๐Ÿ›ก๏ธ Firewall & NAT

firewall_filter_rules, firewall_nat_rules, firewall_mangle, address_lists, firewall_connections

๐Ÿ“ถ WiFi & CAPsMAN

wifi_interfaces, wifi_registrations, wifi_radios, capsman_remote_caps

๐Ÿ” VPN & tunnel

wireguard_*, ppp_active, ppp_secrets, ipsec_peers, ipsec_active_peers

๐Ÿ“ˆ QoS & bandwidth

simple_queues, queue_tree, ppp_profiles, ip_pools

๐ŸŒ IPv6

ipv6_addresses, ipv6_routes, ipv6_firewall_filter, ipv6_neighbors

๐Ÿงญ Routing dinamis

bgp_sessions, ospf_neighbors

๐Ÿ‘ฅ Hotspot & AAA

hotspot_servers, hotspot_active, hotspot_users, radius_servers

๐Ÿ”Ž Keamanan & audit

router_users, user_groups, active_sessions, certificates, ip_services

๐Ÿฉบ Diagnostik

ping, traceroute, interface_traffic_live, recent_logs, netwatch, check_for_updates

๐Ÿงญ Deteksi peran

detect_roles (klasifikasikan fungsi router dari bukti konfigurasi)

๐Ÿค– Fitur cerdas AI

simulate_packet, simulate_firewall_change (Twin) ยท analyze_client_behavior (Sentinel) ยท config_snapshot, config_diff (Chronicle) ยท explain_incident (Replay) ยท business_report (Concierge)

Read โ€” selalu aktif

Tool

Parameter

Fungsi

REST

system_resource

โ€”

Versi RouterOS, CPU, memori, uptime, board, arsitektur.

GET /system/resource

system_identity

โ€”

Nama/identitas perangkat.

GET /system/identity

list_interfaces

โ€”

Semua interface + status running/disabled + statistik.

GET /interface

list_ip_addresses

โ€”

Alamat IP per interface.

GET /ip/address

dhcp_leases

โ€”

Klien DHCP yang mendapat IP dari router.

GET /ip/dhcp-server/lease

arp_table

โ€”

Pemetaan IP โ†” MAC yang terlihat router.

GET /ip/arp

firewall_filter_rules

โ€”

Aturan firewall filter (input/forward/output).

GET /ip/firewall/filter

firewall_nat_rules

โ€”

Aturan NAT (masquerade, port forward).

GET /ip/firewall/nat

routing_table

โ€”

Tabel routing IP (route aktif & statis).

GET /ip/route

simple_queues

โ€”

Simple queue โ€” pembatasan bandwidth per IP/target.

GET /queue/simple

address_lists

โ€”

Isi semua firewall address-list.

GET /ip/firewall/address-list

dns_settings

โ€”

Konfigurasi DNS: server upstream, cache, allow-remote.

GET /ip/dns

dhcp_servers

โ€”

DHCP server + interface & address-pool-nya.

GET /ip/dhcp-server

ppp_active

โ€”

Sesi PPP aktif (PPPoE/L2TP/PPTP/SSTP).

GET /ppp/active

bridge_hosts

โ€”

Tabel host bridge (MAC per port).

GET /interface/bridge/host

neighbors

โ€”

Tetangga terdeteksi (MNDP/CDP/LLDP).

GET /ip/neighbor

system_health

โ€”

Sensor HW: suhu, tegangan, kipas (jika ada).

GET /system/health

netwatch

โ€”

Host yang dipantau Netwatch + status up/down.

GET /tool/netwatch

router_users

โ€”

Daftar user RouterOS + grup/hak aksesnya.

GET /user

wifi_interfaces

โ€”

Interface WiFi (auto wifiwave2/legacy).

GET /interface/wifi โ†ป /interface/wireless

wifi_registrations

โ€”

Klien WiFi yang terhubung (auto wifiwave2/legacy).

GET .../registration-table

wireguard_interfaces

โ€”

Interface WireGuard (VPN) + public key & port.

GET /interface/wireguard

wireguard_peers

โ€”

Peer WireGuard + allowed-address & handshake.

GET /interface/wireguard/peers

ppp_secrets

โ€”

Akun PPP (PPPoE/VPN) โ€” name/service/profile.

GET /ppp/secret

ip_pools

โ€”

IP pool (rentang IP untuk DHCP/PPP).

GET /ip/pool

dns_static

โ€”

Entri DNS statis (A/CNAME) yang dilayani router.

GET /ip/dns/static

ntp_client

โ€”

Status & konfigurasi NTP client.

GET /system/ntp/client

schedulers

โ€”

Tugas terjadwal RouterOS.

GET /system/scheduler

scripts

โ€”

Script tersimpan di RouterOS.

GET /system/script

vlans

โ€”

Interface VLAN + vlan-id & interface induk.

GET /interface/vlan

ip_services

โ€”

Service IP (api/ssh/www/telnet/winbox) + port.

GET /ip/service

dhcp_client

โ€”

Status DHCP client (mis. IP WAN dari ISP).

GET /ip/dhcp-client

ip_cloud

โ€”

IP publik & DDNS MikroTik (remote access).

GET /ip/cloud

system_packages

โ€”

Paket RouterOS terpasang + status.

GET /system/package

routerboard_info

โ€”

Model, serial, firmware terpasang vs tersedia.

GET /system/routerboard

active_sessions

โ€”

User yang sedang login (audit keamanan).

GET /user/active

list_files

โ€”

File di router (backup/export) + ukuran & waktu.

GET /file

firewall_connections

โ€”

Connection tracking aktif (troubleshooting).

GET /ip/firewall/connection

bridge_ports

โ€”

Pemetaan port ke bridge.

GET /interface/bridge/port

certificates

โ€”

Sertifikat + masa berlaku (audit kedaluwarsa).

GET /certificate

dns_cache

โ€”

Isi cache DNS resolver router.

GET /ip/dns/cache

dhcp_networks

โ€”

Gateway/DNS/netmask yang ditawarkan DHCP.

GET /ip/dhcp-server/network

firewall_mangle

โ€”

Aturan mangle (marking QoS/policy routing).

GET /ip/firewall/mangle

queue_tree

โ€”

Queue tree (bandwidth hierarkis berbasis mark).

GET /queue/tree

ppp_profiles

โ€”

Profil PPP (rate-limit, pool, DNS).

GET /ppp/profile

user_groups

โ€”

Grup hak akses + policy (audit keamanan).

GET /user/group

ethernet_ports

โ€”

Detail port ethernet (link speed, auto-neg).

GET /interface/ethernet

ipsec_peers

โ€”

Konfigurasi peer IPsec.

GET /ip/ipsec/peer

ipsec_active_peers

โ€”

Tunnel IPsec yang sedang aktif.

GET /ip/ipsec/active-peers

ipv6_addresses

โ€”

Alamat IPv6 per interface.

GET /ipv6/address

ipv6_routes

โ€”

Tabel routing IPv6.

GET /ipv6/route

ipv6_firewall_filter

โ€”

Aturan firewall filter IPv6.

GET /ipv6/firewall/filter

ipv6_neighbors

โ€”

Tabel neighbor IPv6 (NDP).

GET /ipv6/neighbor

hotspot_servers

โ€”

Server hotspot + interface & profil.

GET /ip/hotspot

hotspot_active

โ€”

User hotspot yang sedang login.

GET /ip/hotspot/active

hotspot_users

โ€”

Akun user hotspot.

GET /ip/hotspot/user

capsman_remote_caps

โ€”

CAP/AP yang dikelola CAPsMAN (auto legacy/wifiwave2).

GET /caps-man/remote-cap โ†ป wifiwave2

capsman_registrations

โ€”

Klien via CAPsMAN (auto legacy/wifiwave2).

GET .../registration-table

wifi_radios

โ€”

Radio WiFi fisik (wifiwave2).

GET /interface/wifi/radio

bgp_sessions

โ€”

Sesi BGP (v7).

GET /routing/bgp/session

ospf_neighbors

โ€”

Neighbor OSPF + state adjacency (v7).

GET /routing/ospf/neighbor

radius_servers

โ€”

Server RADIUS (AAA).

GET /radius

system_history

โ€”

Riwayat perubahan config (undo).

GET /system/history

system_license

โ€”

Info lisensi (level/CHR).

GET /system/license

recent_logs

limit (default 50)

Log terbaru RouterOS.

GET /log

ping

address, count (default 3)

Ping dari router ke sebuah alamat (diagnostik).

POST /ping

traceroute

address, count (default 3)

Traceroute (jejak hop) dari router.

POST /tool/traceroute

interface_traffic_live

interface

Satu sampel throughput real-time (rx/tx bps).

POST /interface/monitor-traffic

check_for_updates

โ€”

Cek update RouterOS (tidak mengubah config).

POST /system/package/update/check-for-updates

detect_roles

โ€”

Deteksi peran perangkat (gateway NAT, firewall, BGP/OSPF, switch/AP, BRAS, VPN, DHCP/DNS, QoS, dll) + bukti & keyakinan.

multi GET (introspeksi)

simulate_packet

src, dst, protocol, dst_port, โ€ฆ

Twin โ€” telusuri paket hipotetis menembus mangleโ†’dst-natโ†’routingโ†’filterโ†’src-nat di atas ruleset live; lapor verdict + jejak.

multi GET (model murni)

simulate_firewall_change

src, dst, new_rule, โ€ฆ

Twin โ€” uji dampak satu aturan firewall baru SEBELUM diterapkan (diff verdict).

multi GET (model murni)

analyze_client_behavior

ip (opsional)

Sentinel โ€” sidik-jari perilaku per-perangkat dari conntrack; deteksi botnet IoT/miner/scan tanpa signature, berkonteks kelas perangkat.

GET /ip/firewall/connection + lease/arp

config_snapshot

label

Chronicle โ€” simpan snapshot konfigurasi relevan-keamanan (ber-hash) ke disk lokal.

multi GET โ†’ file lokal

config_diff

simpan

Chronicle โ€” diff konfigurasi live vs snapshot terakhir + penilaian risiko (user baru, port mgmt dibuka, persistensi, dll).

multi GET โ†’ diff

explain_incident

mulai_menit_lalu, selesai_menit_lalu

Replay โ€” rekonstruksi telemetri jendela waktu lampau (riwayat Pulse) + anomali untuk RCA "kenapa tadi lemot".

file riwayat lokal

business_report

plan_down_mbps, wan_interface, โ€ฆ

Concierge โ€” terjemahkan telemetri jadi sinyal bisnis RT-RW net (pelanggan, akun nganggur, pencuri bandwidth, utilisasi WAN).

multi GET (ppp/hotspot/queue)

rest_get

path

GET generic ke path REST apa pun (read-only).

GET /<path>

Contoh rest_get untuk hal yang belum punya tool khusus: ip/dns, ppp/active, interface/wireless, system/clock, queue/simple.

Write โ€” perlu MIKROCLAW_ALLOW_WRITE=true

Jika flag bernilai false (default), tool ini mengembalikan error dan tidak menyentuh router.

Tool

Parameter

Fungsi

REST

set_interface_enabled

interface_id, enabled

Aktif/nonaktifkan interface (by .id atau nama).

PATCH /interface/<id>

add_firewall_drop

src_address, chain (default forward), comment

Tambah aturan DROP untuk sumber tertentu.

PUT /ip/firewall/filter

add_address_list_entry

address, address_list, comment, timeout

Tambah IP/subnet ke firewall address-list.

PUT /ip/firewall/address-list

delete_firewall_rule

rule_id

Hapus satu aturan firewall filter by .id.

DELETE /ip/firewall/filter/<id>

set_firewall_rule_enabled

rule_id, enabled

Aktif/nonaktifkan satu aturan firewall by .id.

PATCH /ip/firewall/filter/<id>

add_simple_queue

name, target, max_limit

Tambah simple queue (batas bandwidth target).

PUT /queue/simple

create_backup

name (default mikroclaw)

Buat file backup konfigurasi (.backup) di router.

POST /system/backup/save

reboot_router

โ€”

Reboot router sekarang (mengganggu koneksi).

POST /system/reboot

add_dns_static

name, address, ttl

Tambah entri DNS statis (A record).

PUT /ip/dns/static

add_ppp_secret

name, password, service, profile

Tambah akun PPP (PPPoE/VPN).

PUT /ppp/secret

add_wireguard_peer

interface, public_key, allowed_address, endpoint_address, endpoint_port

Tambah peer WireGuard.

PUT /interface/wireguard/peers

set_ip_service_enabled

service_id, enabled

Aktif/nonaktifkan IP service (mis. matikan telnet).

PATCH /ip/service/<id>

add_nat_rule

chain, action, +opsional (protocol, dst_port, to_addresses, to_ports, dll)

Tambah NAT: port-forward (dstnat) / masquerade (srcnat).

PUT /ip/firewall/nat

add_static_route

dst_address, gateway, distance, comment

Tambah route statis (termasuk default route).

PUT /ip/route

add_static_dhcp_lease

address, mac_address, server, comment

Pin IP statis ke MAC (static lease).

PUT /ip/dhcp-server/lease

assign_ip_address

address, interface, comment

Pasang IP (CIDR) ke interface.

PUT /ip/address

set_identity

name

Ganti nama/identitas router.

POST /system/identity/set

set_dns_servers

servers, allow_remote_requests

Set DNS upstream router.

POST /ip/dns/set

remove_address_list_entry

entry_id

Hapus entri address-list by .id.

DELETE /ip/firewall/address-list/<id>

add_hotspot_user

name, password, profile, comment

Tambah akun user hotspot.

PUT /ip/hotspot/user

add_ipv6_address

address, interface, comment

Pasang alamat IPv6 ke interface.

PUT /ipv6/address

rest_write

method (PUT/PATCH/DELETE/POST), path, body

Write generic untuk operasi lanjutan. Gunakan hati-hati.

sesuai method


Skills (playbook orkestrasi)

Selain 100 tool atomik, MikroCLAW menyertakan Agent Skills di .claude/skills/ โ€” playbook yang mengoordinasikan banyak tool menjadi alur kerja siap pakai. Claude Code memuatnya otomatis saat frasa pemicunya muncul; bisa juga dipanggil eksplisit dengan /<nama-skill>.

Skill

Fungsi

Pemicu contoh

mikrotik-health-check

Laporan kesehatan & maintenance (resource, suhu, firmware, update, WAN, NTP).

"cek kesehatan router", "ada update routeros?"

mikrotik-firewall-audit

Tinjau filter/NAT/mangle, address-list, koneksi; temuan + rekomendasi.

"audit firewall", "firewall monitoring"

mikrotik-security-audit

Hardening: service terbuka, user/grup, sesi, sertifikat, DNS, proteksi input.

"audit keamanan", "apakah router aman"

mikrotik-network-overview

Snapshot inventaris: WAN, subnet, interface/VLAN, routing, klien, tetangga.

"overview jaringan", "dokumentasi config"

mikrotik-troubleshoot

Diagnosa konektivitas berlapis (L1โ†’IPโ†’DNSโ†’firewall).

"internet mati", "tidak bisa browsing"

mikrotik-backup-snapshot

Backup biner + snapshot JSON konfigurasi kunci untuk diff/dokumentasi.

"backup mikrotik", "snapshot sebelum perubahan"

mikrotik-role-detect

Deteksi & jelaskan peran perangkat (gateway/firewall/BGP/AP/BRAS/VPN/โ€ฆ) beserta bukti & keyakinan.

"deteksi peran mikrotik", "router ini berfungsi sebagai apa"

mikrotik-twin ๐Ÿ†•

Simulator what-if โ€” telusuri nasib paket & uji aturan firewall baru sebelum diterapkan.

"kalau klien X akses Y lolos?", "simulasikan rule ini", "uji firewall sebelum pasang"

mikrotik-sentinel ๐Ÿ†•

Deteksi perangkat terinfeksi โ€” botnet IoT/miner/scan dari perilaku koneksi, tanpa signature.

"ada perangkat terinfeksi?", "cek botnet", "kenapa CCTV ini aneh"

mikrotik-chronicle ๐Ÿ†•

Mesin waktu konfigurasi โ€” snapshot + diff berisiko untuk deteksi perubahan/intrusi.

"apa yang berubah di config?", "deteksi perubahan tak terjadwal", "ada backdoor?"

mikrotik-replay ๐Ÿ†•

RCA retrospektif โ€” jelaskan insiden masa lampau dari riwayat telemetri.

"kenapa tadi sore lemot?", "internet sempat putus jam berapa"

mikrotik-concierge ๐Ÿ†•

Laporan bisnis โ€” pelanggan, akun nganggur, pencuri bandwidth, utilisasi WAN, kapan upgrade.

"laporan bisnis RT-RW net", "ada yang nyolong bandwidth?", "perlu upgrade paket?"

Semua skill read-only secara default; remediasi yang mengubah konfigurasi selalu meminta konfirmasi dan tetap butuh MIKROCLAW_ALLOW_WRITE=true.

MikroCLAW Pulse โ€” dashboard monitoring live

Selain MCP server, MikroCLAW menyertakan Pulse: laman web monitoring yang memperbarui indikator per detik lewat Server-Sent Events.

  • Fase 1 โ€” data plane: read-only, tanpa dependency baru (memakai Starlette + uvicorn yang sudah ikut mcp). Memantau RouterOS bertingkat & menyusun state live.

  • Fase 2 โ€” lapis AI (opsional): kartu ๐Ÿง  AI Analyst menarasikan kondisi jaringan, mendeteksi anomali tanpa ambang tetap, mengkorelasikan akar masalah, dan menyarankan remediasi โ€” memanggil Anthropic Messages API langsung via httpx (tanpa SDK), output terstruktur lewat tool-use. Tetap read-only (hanya membaca snapshot). Aktif bila ANTHROPIC_API_KEY di-set; tanpa itu Pulse tetap jalan dan kartu AI menampilkan status "nonaktif".

  • Fase 3 โ€” AI proaktif: ๐Ÿ”ฎ Prediksi tren deterministik (regresi linear dari riwayat โ†’ tren %/jam + ETA mencapai ambang untuk CPU/memori/disk โ€” jalan tanpa API key), plus โšก Remediasi 1-klik yang diusulkan AI dan dieksekusi dari dashboard. Remediasi di-gate ganda: butuh MIKROCLAW_ALLOW_WRITE=true dan hanya aksi dari allowlist sempit (blokir_ip, tambah_address_list, nonaktifkan_service) yang persis diusulkan AI โ€” tiap aksi diberi komentar audit added-by-pulse-ai.

# memakai kredensial yang sama dari .env
uv run mikroclaw-web                 # atau:  python -m mikroclaw.web
# buka http://127.0.0.1:8800

Arsitektur Pulse โ€” empat loop polling bertingkat โ†’ state in-memory โ†’ SSE โ†’ browser:

flowchart LR
    subgraph poller["poller.py โ€” empat loop async"]
        F["โšก fast ยท 1 dtk<br/>resource ยท health ยท throughput"]
        M["๐Ÿ”„ mid ยท 5 dtk<br/>klien ยท firewall ยท queue"]
        S["๐Ÿข slow ยท 30 dtk<br/>WAN ยท service ยท sertifikat"]
        P["๐Ÿ“ก ping ยท 5 dtk<br/>RTT gateway & 8.8.8.8"]
    end
    ROS["๐Ÿ“ก RouterOS<br/>REST v7"]
    STATE[("๐Ÿง  state in-memory<br/>+ ring-buffer 60 dtk")]
    APP["app.py<br/>Starlette + SSE"]
    UI["๐ŸŒ index.html<br/>(vanilla JS, 0 dependency)"]

    ROS --> F & M & S & P
    F & M & S & P --> STATE
    STATE -- "snapshot tiap tick" --> APP
    APP -- "/api/stream (SSE)" --> UI

    classDef box fill:#10182a,stroke:#1f2d44,color:#e6edf3;
    class F,M,S,P,ROS,STATE,APP,UI box;

๐Ÿ’ก Throughput diturunkan dari delta counter rx/tx /interface (satu request untuk semua interface), bukan monitor-traffic per-interface โ€” jauh lebih ringan untuk router.

ENV

Default

Keterangan

MIKROCLAW_WEB_HOST

127.0.0.1

Alamat bind. Set 0.0.0.0 untuk diakses dari LAN.

MIKROCLAW_WEB_PORT

8800

Port HTTP laman.

ANTHROPIC_API_KEY

(kosong)

Mengaktifkan lapis AI (Fase 2). Tanpa ini, kartu AI tampil "nonaktif".

MIKROCLAW_AI_MODEL

claude-sonnet-4-6

Model Claude untuk analisis.

MIKROCLAW_AI_INTERVAL

60

Detik antar-analisis otomatis.

MIKROCLAW_AI_MAX_TOKENS

2048

Batas token output analisis.

Yang ditampilkan (semua dari tool read yang ada):

  • Vitals (1 dtk): CPU, memori, disk, suhu/tegangan, jumlah klien, firewall drops/dtk, conntrack, sesi login, sertifikat terdekat kedaluwarsa.

  • WAN: IP WAN/publik, DDNS, gateway, RTT ping gateway & 8.8.8.8, sparkline download/upload 60 detik.

  • Interface matrix (1 dtk): throughput rx/tx live (delta counter), status link, link-speed, error/drop.

  • Klien: gabungan DHCP + PPPoE + hotspot + WiFi (sinyal), tebakan vendor dari OUI MAC, dan bandwidth per-klien bila ada simple queue yang cocok.

  • Service terbuka: ditandai merah bila berisiko (telnet/ftp/www/api) tanpa batasan address.

  • Log Stream: tail /log terbaru dengan pewarnaan severity (error/warning).

  • ๐Ÿง  AI Analyst (Fase 2): status sehat/perhatian/kritis, ringkasan naratif, daftar anomali ber-severity, dan rekomendasi โ€” plus tombol "Analisa sekarang".

  • ๐Ÿ”ฎ Prediksi Tren (Fase 3): tren & ETA CPU/memori/disk (deterministik, tanpa API key).

  • โšก Remediasi 1-klik (Fase 3): tombol eksekusi aksi yang diusulkan AI (muncul ter-kunci bila write-gate mati).

Cadence bertingkat (1 dtk vitals/interface ยท 5 dtk klien & ping ยท 30 dtk WAN/ service/sertifikat & sampel prediksi ยท analisis AI default 60 dtk) agar tidak membebani router. Endpoint: / (laman), /api/stream (SSE), /api/snapshot (JSON sekali ambil), /api/analyze (POST โ€” picu analisis AI), /api/remediate (POST โ€” eksekusi 1 aksi remediasi; butuh ALLOW_WRITE).

Contoh penggunaan

Cukup minta dalam bahasa biasa di Claude Code:

  • "Tampilkan versi RouterOS dan pemakaian CPU/memori." โ†’ system_resource

  • "Siapa saja klien DHCP yang aktif sekarang?" โ†’ dhcp_leases

  • "Interface mana yang sedang down?" โ†’ list_interfaces

  • "Tunjukkan 100 baris log terakhir yang mengandung error." โ†’ recent_logs + filter

  • "Ping 8.8.8.8 dari router." โ†’ ping

  • "Apa konfigurasi DNS router?" โ†’ rest_get path=ip/dns

  • "Blokir IP 10.0.0.5 di firewall." โ†’ add_firewall_drop (butuh ALLOW_WRITE=true)

  • "Nonaktifkan interface ether5." โ†’ set_interface_enabled (butuh ALLOW_WRITE=true)


Uji manual tanpa Claude

Memastikan REST hidup & kredensial benar sebelum menyalakan dari Claude:

source .env
curl -sk -u "$MIKROTIK_USER:$MIKROTIK_PASSWORD" \
  "https://$MIKROTIK_HOST/rest/system/resource" | jq .

Uji server MCP-nya sendiri (memuat & mendaftarkan tool, tanpa konek router):

uv run python -c "
import asyncio
from mikroclaw.server import mcp
tools = asyncio.run(mcp.list_tools())
print(f'{len(tools)} tools:', ', '.join(t.name for t in tools))
"

Test suite (pytest)

Tersedia unit test untuk client REST, helper poller, prediksi/throughput, remediasi, lapis AI, dan endpoint Pulse โ€” semuanya offline (httpx di-mock, tanpa router/jaringan/biaya API):

uv run --extra test pytest    # memasang & menjalankan pytest (extra 'test')
83 passed in 0.45s

Keamanan

  • User least-privilege โ€” buat user khusus (mis. grup read); jangan pakai admin penuh.

  • Pisahkan kredensial โ€” hanya di .env, yang sudah masuk .gitignore. Jangan tempel password di chat atau di .mcp.json.

  • Gunakan TLS โ€” MIKROTIK_USE_TLS=true. Set MIKROTIK_VERIFY_TLS=true setelah memasang sertifikat tepercaya.

  • Batasi sumber akses di router: /ip/service/set www-ssl address=<subnet-tepercaya>.

  • Write off by default โ€” biarkan MIKROCLAW_ALLOW_WRITE=false kecuali memang sedang melakukan perubahan; matikan lagi sesudahnya.

  • Audit โ€” operasi add_firewall_drop menyertakan komentar added-by-mikroclaw agar mudah ditelusuri/dihapus.


Troubleshooting

Gejala

Kemungkinan sebab

Solusi

MIKROTIK_HOST belum di-set

.env belum dibuat/diisi

cp .env.example .env, isi MIKROTIK_HOST.

Gagal menghubungi RouterOS ... (timeout)

Port REST tertutup / host salah / firewall

Cek /ip/service, ketersambungan jaringan, dan MIKROTIK_PORT.

RouterOS membalas 401

User/password salah

Periksa MIKROTIK_USER/MIKROTIK_PASSWORD.

RouterOS membalas 404

Path tidak ada di versi RouterOS ini

Cek nama path; sebagian fitur beda antar versi.

Error sertifikat / SSL

Self-signed + verify aktif

Set MIKROTIK_VERIFY_TLS=false.

Operasi write dinonaktifkan

Mencoba tool write saat gate off

Set MIKROCLAW_ALLOW_WRITE=true di .env, restart server.

Server tak muncul di /mcp

.mcp.json belum disetujui

Jalankan /mcp, setujui server project-scope; pastikan uv ada di PATH.

Perubahan .env tak terbaca

Server masih pakai proses lama

Restart koneksi MCP (toggle via /mcp) agar .env dibaca ulang.


Kompatibilitas RouterOS v6 vs v7

REST API hanya ada di RouterOS v7. Jika router Anda v6:

  • Antarmuka tool di server.py tidak perlu berubah.

  • Ganti lapisan transport di client.py ke API biner (port 8728/8729 TLS) memakai library seperti librouteros.

  • RouterOSClient.get/put/patch/delete cukup dipetakan ke perintah API biner; sisanya (config, server, daftar tool) tetap sama.

API biner juga bekerja di v7, sehingga bisa dipakai sebagai transport tunggal lintas versi bila diinginkan.


Struktur proyek

MikroCLAW/
โ”œโ”€โ”€ .mcp.json              # registrasi server untuk Claude Code (project-scope)
โ”œโ”€โ”€ .env.example           # template variabel environment
โ”œโ”€โ”€ .env                   # kredensial nyata (di-gitignore, buat sendiri)
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ pyproject.toml         # metadata + dependency + entry point `mikroclaw`
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ CLAUDE.md              # panduan repo untuk Claude Code (arsitektur & konvensi)
โ”œโ”€โ”€ LICENSE                # Apache License 2.0
โ”œโ”€โ”€ install.ps1 / install.sh    # installer (Windows / macOS+Linux)
โ”œโ”€โ”€ install.bat                 # launcher double-click untuk install.ps1
โ”œโ”€โ”€ uninstall.ps1 / uninstall.sh# lepas registrasi MCP (opsi hapus .env/.venv)
โ”œโ”€โ”€ bootstrap.ps1 / bootstrap.sh# clone + install satu baris
โ”œโ”€โ”€ tests/                 # unit test pytest (offline, httpx di-mock)
โ”œโ”€โ”€ .claude/skills/        # Agent Skills (playbook orkestrasi tool)
โ”‚   โ”œโ”€โ”€ mikrotik-health-check/SKILL.md
โ”‚   โ”œโ”€โ”€ mikrotik-firewall-audit/SKILL.md
โ”‚   โ”œโ”€โ”€ mikrotik-security-audit/SKILL.md
โ”‚   โ”œโ”€โ”€ mikrotik-network-overview/SKILL.md
โ”‚   โ”œโ”€โ”€ mikrotik-troubleshoot/SKILL.md
โ”‚   โ”œโ”€โ”€ mikrotik-backup-snapshot/SKILL.md
โ”‚   โ”œโ”€โ”€ mikrotik-role-detect/SKILL.md
โ”‚   โ”œโ”€โ”€ mikrotik-twin/SKILL.md          # ๐Ÿ†• simulator what-if
โ”‚   โ”œโ”€โ”€ mikrotik-sentinel/SKILL.md      # ๐Ÿ†• deteksi perangkat terinfeksi
โ”‚   โ”œโ”€โ”€ mikrotik-chronicle/SKILL.md     # ๐Ÿ†• mesin waktu konfigurasi
โ”‚   โ”œโ”€โ”€ mikrotik-replay/SKILL.md        # ๐Ÿ†• RCA retrospektif
โ”‚   โ””โ”€โ”€ mikrotik-concierge/SKILL.md     # ๐Ÿ†• laporan bisnis
โ””โ”€โ”€ src/mikroclaw/
    โ”œโ”€โ”€ __init__.py        # versi paket
    โ”œโ”€โ”€ config.py          # baca .env/env โ†’ objek Config + validasi
    โ”œโ”€โ”€ client.py          # client REST RouterOS v7 (async httpx)
    โ”œโ”€โ”€ roles.py           # classify_roles: deteksi peran dari bukti (murni)
    โ”œโ”€โ”€ storage.py         # ๐Ÿ†• helper state dir lokal (Chronicle & Replay)
    โ”œโ”€โ”€ twin.py            # ๐Ÿ†• Twin: engine simulator paket (murni)
    โ”œโ”€โ”€ sentinel.py        # ๐Ÿ†• Sentinel: sidik-jari perilaku perangkat (murni)
    โ”œโ”€โ”€ chronicle.py       # ๐Ÿ†• Chronicle: snapshot/diff/risiko konfigurasi (murni)
    โ”œโ”€โ”€ concierge.py       # ๐Ÿ†• Concierge: telemetri โ†’ sinyal bisnis (murni)
    โ”œโ”€โ”€ server.py          # FastMCP + definisi 100 tool + write-gate
    โ””โ”€โ”€ web/               # MikroCLAW Pulse โ€” dashboard monitoring live
        โ”œโ”€โ”€ poller.py      # data plane: poll bertingkat + ring-buffer + throughput + prediksi
        โ”œโ”€โ”€ history.py     # ๐Ÿ†• Replay: persistensi riwayat telemetri + ringkasan jendela
        โ”œโ”€โ”€ analyst.py     # lapis AI (Fase 2): Anthropic Messages API via httpx
        โ”œโ”€โ”€ actions.py     # remediasi 1-klik (Fase 3): allowlist aksi write yang aman
        โ”œโ”€โ”€ app.py         # Starlette + SSE + endpoint analyze/remediate + entry `mikroclaw-web`
        โ””โ”€โ”€ static/
            โ””โ”€โ”€ index.html # dashboard vanilla JS (tanpa dependency eksternal)

Pengembangan: menambah tool

Tambahkan fungsi async di src/mikroclaw/server.py dengan dekorator @mcp.tool(). Docstring menjadi deskripsi tool yang dilihat Claude โ€” tulis sejelas mungkin.

Contoh menambah daftar simple queue (read):

@mcp.tool()
async def simple_queues() -> Any:
    """Daftar simple queue (pembatasan bandwidth per target)."""
    return await _ros().get("/queue/simple")

Contoh tool write (selalu panggil _require_write() di awal):

@mcp.tool()
async def reboot_router() -> Any:
    """Reboot router. BUTUH MIKROCLAW_ALLOW_WRITE=true."""
    _require_write()
    return await _ros().post("/system/reboot")

Setelah mengubah kode, restart koneksi MCP di Claude Code (/mcp) agar tool baru terdeteksi. Verifikasi cepat:

uv run python -c "import asyncio; from mikroclaw.server import mcp; print(len(asyncio.run(mcp.list_tools())), 'tools')"

Riwayat versi

Versi

Sorotan

v1.7.0

5 fitur cerdas AI โ€” Twin (simulator what-if paket: simulate_packet/simulate_firewall_change), Sentinel (deteksi botnet IoT/miner/scan tanpa signature: analyze_client_behavior), Chronicle (mesin waktu konfigurasi + deteksi intrusi: config_snapshot/config_diff), Replay (RCA retrospektif: explain_incident), Concierge (laporan bisnis RT-RW net: business_report) + 5 skill baru. 100 tool ยท 12 skill ยท 151 test.

v1.6.0

Deteksi peran โ€” tool detect_roles (introspeksi โ†’ klasifikasi gateway/firewall/BGP/OSPF/switch/AP/BRAS/VPN/QoS/โ€ฆ + bukti & keyakinan) & skill mikrotik-role-detect. 93 tool ยท 7 skill.

v1.5.0

Pulse Fase 3 โ€” AI proaktif: prediksi tren deterministik (CPU/mem/disk + ETA) & remediasi 1-klik ter-gate ganda (write-flag + allowlist + cocok usulan AI) lewat POST /api/remediate.

v1.4.0

Pulse Fase 2 โ€” lapis AI Analyst (Anthropic Messages API via httpx, read-only, output terstruktur lewat tool-use) + Log Stream dengan pewarnaan severity + endpoint POST /api/analyze.

v1.3.0

MikroCLAW Pulse โ€” laman web monitoring live per-detik (Starlette + SSE, read-only; tanpa dependency baru).

v1.2.0

Installer macOS / Linux (bash) + bootstrap satu-baris.

v1.1.0

Installer Windows (PowerShell) + bootstrap satu-baris.

v1.0.0

Rilis awal โ€” MCP server (92 tool: 70 read + 22 write) + 6 Agent Skills.

Penomoran mengikuti urutan milestone fitur pada histori git; rincian tiap perubahan ada di git log.


Lisensi

Dirilis di bawah Apache License 2.0 โ€” lihat LICENSE.


MikroCLAW dibuat untuk administrasi MikroTik yang sah pada perangkat milik/dikuasakan kepada Anda. Gunakan secara bertanggung jawab.

Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
0dRelease cycle
4Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Syamsuddin/MikroCLAW'

If you have feedback or need assistance with the MCP directory API, please join our Discord server