MikroCLAW
Provides tools for monitoring and managing MikroTik RouterOS devices via REST API, including system info, interfaces, DHCP, firewall, routing, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MikroCLAWshow active DHCP leases"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MikroCLAW
MikroTik + CLAW (Claude) β MCP server yang membuat Claude Code bisa mengakses, memonitor, dan mengelola perangkat MikroTik RouterOS lewat tool ber-skema, langsung dari percakapan.
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.
π Read-only secara default β aman untuk eksplorasi & monitoring.
π§ Operasi write digerbang oleh flag
MIKROCLAW_ALLOW_WRITE.π Kredensial via
.envβ tidak muncul di chat, tidak ikut ter-commit.π§© 92 tool (70 read + 22 write), termasuk dua tool generic (
rest_get/rest_write) untuk hal yang belum punya tool khusus.
Daftar Isi
Related MCP server: defined-mcp
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.
ββββββββββββββ panggil tool ββββββββββββββββ HTTPS /rest/... ββββββββββββββ
β Claude Code β ββββββββββββββββββΆ β MikroCLAW β βββββββββββββββββββΆ β RouterOS β
β (CLI/IDE) β (stdio MCP) β (MCP server) β REST API v7 β (MikroTik) β
β β ββββββββββββββββββ β β βββββββββββββββββββ β β
ββββββββββββββ hasil JSON ββββββββββββββββ JSON ββββββββββββββ
membaca .env
(host, user, pass)Alurnya:
Anda menulis prompt biasa, mis. "siapa saja klien DHCP yang aktif?".
Claude Code memilih tool
dhcp_leasesdan memanggilnya lewat protokol MCP (stdio).MikroCLAW (
client.py) mengirimGET https://<router>/rest/ip/dhcp-server/leasedengan Basic Auth dari.env.RouterOS membalas JSON; MikroCLAW meneruskannya ke Claude.
Claude meringkas/menyajikan hasil untuk Anda.
RouterOS REST memetakan path konsol ke URL secara langsung, contoh:
Perintah konsol RouterOS | Operasi REST |
|
|
|
|
tambah item |
|
ubah item ber- |
|
hapus item ber- |
|
command (ping, dst.) |
|
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/24Membuat 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=noKarena sertifikat self-signed, biarkan
MIKROTIK_VERIFY_TLS=falsedi.env(default). Settruehanya jika memakai sertifikat yang tepercaya.
Instalasi
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 | iexOpsi B β sudah punya repo: masuk folder MikroCLAW lalu double-click
install.bat, atau di PowerShell:
.\install.ps1Argumen 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.
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 |
| β | β | IP/hostname router, mis. |
| β |
| User RouterOS (disarankan user khusus least-privilege). |
| β | (kosong) | Password user tersebut. |
| β |
|
|
| β |
| Port REST. Default mengikuti |
| β |
| Verifikasi sertifikat TLS. |
| β |
| Timeout request (detik). |
| β |
| Gerbang keamanan. |
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=falseMenghubungkan 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 connectedSaat 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
Read β selalu aktif
Tool | Parameter | Fungsi | REST |
| β | Versi RouterOS, CPU, memori, uptime, board, arsitektur. |
|
| β | Nama/identitas perangkat. |
|
| β | Semua interface + status running/disabled + statistik. |
|
| β | Alamat IP per interface. |
|
| β | Klien DHCP yang mendapat IP dari router. |
|
| β | Pemetaan IP β MAC yang terlihat router. |
|
| β | Aturan firewall filter (input/forward/output). |
|
| β | Aturan NAT (masquerade, port forward). |
|
| β | Tabel routing IP (route aktif & statis). |
|
| β | Simple queue β pembatasan bandwidth per IP/target. |
|
| β | Isi semua firewall address-list. |
|
| β | Konfigurasi DNS: server upstream, cache, allow-remote. |
|
| β | DHCP server + interface & address-pool-nya. |
|
| β | Sesi PPP aktif (PPPoE/L2TP/PPTP/SSTP). |
|
| β | Tabel host bridge (MAC per port). |
|
| β | Tetangga terdeteksi (MNDP/CDP/LLDP). |
|
| β | Sensor HW: suhu, tegangan, kipas (jika ada). |
|
| β | Host yang dipantau Netwatch + status up/down. |
|
| β | Daftar user RouterOS + grup/hak aksesnya. |
|
| β | Interface WiFi (auto wifiwave2/legacy). |
|
| β | Klien WiFi yang terhubung (auto wifiwave2/legacy). |
|
| β | Interface WireGuard (VPN) + public key & port. |
|
| β | Peer WireGuard + allowed-address & handshake. |
|
| β | Akun PPP (PPPoE/VPN) β name/service/profile. |
|
| β | IP pool (rentang IP untuk DHCP/PPP). |
|
| β | Entri DNS statis (A/CNAME) yang dilayani router. |
|
| β | Status & konfigurasi NTP client. |
|
| β | Tugas terjadwal RouterOS. |
|
| β | Script tersimpan di RouterOS. |
|
| β | Interface VLAN + vlan-id & interface induk. |
|
| β | Service IP (api/ssh/www/telnet/winbox) + port. |
|
| β | Status DHCP client (mis. IP WAN dari ISP). |
|
| β | IP publik & DDNS MikroTik (remote access). |
|
| β | Paket RouterOS terpasang + status. |
|
| β | Model, serial, firmware terpasang vs tersedia. |
|
| β | User yang sedang login (audit keamanan). |
|
| β | File di router (backup/export) + ukuran & waktu. |
|
| β | Connection tracking aktif (troubleshooting). |
|
| β | Pemetaan port ke bridge. |
|
| β | Sertifikat + masa berlaku (audit kedaluwarsa). |
|
| β | Isi cache DNS resolver router. |
|
| β | Gateway/DNS/netmask yang ditawarkan DHCP. |
|
| β | Aturan mangle (marking QoS/policy routing). |
|
| β | Queue tree (bandwidth hierarkis berbasis mark). |
|
| β | Profil PPP (rate-limit, pool, DNS). |
|
| β | Grup hak akses + policy (audit keamanan). |
|
| β | Detail port ethernet (link speed, auto-neg). |
|
| β | Konfigurasi peer IPsec. |
|
| β | Tunnel IPsec yang sedang aktif. |
|
| β | Alamat IPv6 per interface. |
|
| β | Tabel routing IPv6. |
|
| β | Aturan firewall filter IPv6. |
|
| β | Tabel neighbor IPv6 (NDP). |
|
| β | Server hotspot + interface & profil. |
|
| β | User hotspot yang sedang login. |
|
| β | Akun user hotspot. |
|
| β | CAP/AP yang dikelola CAPsMAN (auto legacy/wifiwave2). |
|
| β | Klien via CAPsMAN (auto legacy/wifiwave2). |
|
| β | Radio WiFi fisik (wifiwave2). |
|
| β | Sesi BGP (v7). |
|
| β | Neighbor OSPF + state adjacency (v7). |
|
| β | Server RADIUS (AAA). |
|
| β | Riwayat perubahan config (undo). |
|
| β | Info lisensi (level/CHR). |
|
|
| Log terbaru RouterOS. |
|
|
| Ping dari router ke sebuah alamat (diagnostik). |
|
|
| Traceroute (jejak hop) dari router. |
|
|
| Satu sampel throughput real-time (rx/tx bps). |
|
| β | Cek update RouterOS (tidak mengubah config). |
|
|
| GET generic ke path REST apa pun (read-only). |
|
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 |
|
| Aktif/nonaktifkan interface (by |
|
|
| Tambah aturan DROP untuk sumber tertentu. |
|
|
| Tambah IP/subnet ke firewall address-list. |
|
|
| Hapus satu aturan firewall filter by |
|
|
| Aktif/nonaktifkan satu aturan firewall by |
|
|
| Tambah simple queue (batas bandwidth target). |
|
|
| Buat file backup konfigurasi (.backup) di router. |
|
| β | Reboot router sekarang (mengganggu koneksi). |
|
|
| Tambah entri DNS statis (A record). |
|
|
| Tambah akun PPP (PPPoE/VPN). |
|
|
| Tambah peer WireGuard. |
|
|
| Aktif/nonaktifkan IP service (mis. matikan telnet). |
|
|
| Tambah NAT: port-forward (dstnat) / masquerade (srcnat). |
|
|
| Tambah route statis (termasuk default route). |
|
|
| Pin IP statis ke MAC (static lease). |
|
|
| Pasang IP (CIDR) ke interface. |
|
|
| Ganti nama/identitas router. |
|
|
| Set DNS upstream router. |
|
|
| Hapus entri address-list by |
|
|
| Tambah akun user hotspot. |
|
|
| Pasang alamat IPv6 ke interface. |
|
|
| Write generic untuk operasi lanjutan. Gunakan hati-hati. | sesuai |
Skills (playbook orkestrasi)
Selain 92 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 |
| Laporan kesehatan & maintenance (resource, suhu, firmware, update, WAN, NTP). | "cek kesehatan router", "ada update routeros?" |
| Tinjau filter/NAT/mangle, address-list, koneksi; temuan + rekomendasi. | "audit firewall", "firewall monitoring" |
| Hardening: service terbuka, user/grup, sesi, sertifikat, DNS, proteksi input. | "audit keamanan", "apakah router aman" |
| Snapshot inventaris: WAN, subnet, interface/VLAN, routing, klien, tetangga. | "overview jaringan", "dokumentasi config" |
| Diagnosa konektivitas berlapis (L1βIPβDNSβfirewall). | "internet mati", "tidak bisa browsing" |
| Backup biner + snapshot JSON konfigurasi kunci untuk diff/dokumentasi. | "backup mikrotik", "snapshot sebelum perubahan" |
Semua skill read-only secara default; remediasi yang mengubah konfigurasi selalu
meminta konfirmasi dan tetap butuh MIKROCLAW_ALLOW_WRITE=true.
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(butuhALLOW_WRITE=true)"Nonaktifkan interface ether5." β
set_interface_enabled(butuhALLOW_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))
"Keamanan
User least-privilege β buat user khusus (mis. grup
read); jangan pakaiadminpenuh.Pisahkan kredensial β hanya di
.env, yang sudah masuk.gitignore. Jangan tempel password di chat atau di.mcp.json.Gunakan TLS β
MIKROTIK_USE_TLS=true. SetMIKROTIK_VERIFY_TLS=truesetelah memasang sertifikat tepercaya.Batasi sumber akses di router:
/ip/service/set www-ssl address=<subnet-tepercaya>.Write off by default β biarkan
MIKROCLAW_ALLOW_WRITE=falsekecuali memang sedang melakukan perubahan; matikan lagi sesudahnya.Audit β operasi
add_firewall_dropmenyertakan komentaradded-by-mikroclawagar mudah ditelusuri/dihapus.
Troubleshooting
Gejala | Kemungkinan sebab | Solusi |
|
|
|
| Port REST tertutup / host salah / firewall | Cek |
| User/password salah | Periksa |
| Path tidak ada di versi RouterOS ini | Cek nama path; sebagian fitur beda antar versi. |
Error sertifikat / SSL | Self-signed + verify aktif | Set |
| Mencoba tool write saat gate off | Set |
Server tak muncul di |
| Jalankan |
Perubahan | Server masih pakai proses lama | Restart koneksi MCP (toggle via |
Kompatibilitas RouterOS v6 vs v7
REST API hanya ada di RouterOS v7. Jika router Anda v6:
Antarmuka tool di
server.pytidak perlu berubah.Ganti lapisan transport di
client.pyke API biner (port8728/8729TLS) memakai library sepertilibrouteros.RouterOSClient.get/put/patch/deletecukup 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
βββ install.ps1 # installer Windows (uv + deps + .env + registrasi MCP)
βββ install.bat # launcher double-click untuk install.ps1
βββ uninstall.ps1 # lepas registrasi MCP (opsi hapus .env/.venv)
βββ bootstrap.ps1 # clone + install satu baris (irm ... | iex)
βββ .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
βββ src/mikroclaw/
βββ __init__.py # versi paket
βββ config.py # baca .env/env β objek Config + validasi
βββ client.py # client REST RouterOS v7 (async httpx)
βββ server.py # FastMCP + definisi 92 tool + write-gatePengembangan: 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')"MikroCLAW dibuat untuk administrasi MikroTik yang sah pada perangkat milik/dikuasakan kepada Anda. Gunakan secara bertanggung jawab.
Maintenance
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