@usex/mikrotik-mcp 4.22.0 → 4.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (638) hide show
  1. package/README.md +292 -283
  2. package/dist/cli.js +54 -24
  3. package/dist/index.js +13 -2
  4. package/dist/shared/{cli-8ecncq7y.js → cli-10wtq3xb.js} +5 -5
  5. package/dist/shared/{cli-73c3hn9f.js → cli-ps0h2mxx.js} +1 -1
  6. package/dist/shared/{library-v21pwa2g.js → library-2f8ty72a.js} +5 -5
  7. package/dist/shared/{library-w7gzvedz.js → library-phwm9kqe.js} +1 -1
  8. package/dist/ui/aaa.html +1 -1
  9. package/dist/ui/connected-devices.html +1 -1
  10. package/dist/ui/dashboard.html +1 -1
  11. package/dist/ui/firewall-audit.html +1 -1
  12. package/dist/ui/firewall.html +1 -1
  13. package/dist/ui/interfaces.html +1 -1
  14. package/dist/ui/observability.html +56 -56
  15. package/dist/ui/records.html +1 -1
  16. package/package.json +14 -14
  17. package/prompts/setup-eoip-tunnel-between-sites.md +4 -0
  18. package/prompts/setup-gre-tunnel-between-sites.md +4 -0
  19. package/prompts/setup-ipip-tunnel-between-sites.md +4 -0
  20. package/prompts/setup-ipsec-site-to-site.md +4 -0
  21. package/prompts/setup-l2tp-ipsec-roadwarrior.md +4 -0
  22. package/prompts/setup-openvpn-tunnel-between-sites.md +4 -0
  23. package/prompts/setup-sstp-tunnel-between-sites.md +4 -0
  24. package/prompts/setup-tunnel-between-sites.md +4 -0
  25. package/prompts/setup-v2ray-container-proxy.md +4 -0
  26. package/prompts/setup-vxlan-tunnel-between-sites.md +4 -0
  27. package/prompts/setup-wireguard-tunnel-between-sites.md +4 -0
  28. package/prompts/setup-wireguard-vpn.md +4 -0
  29. package/schemas/README.md +5 -5
  30. package/schemas/config.schema.json +7 -36
  31. package/schemas/tool-catalog.json +747 -2974
  32. package/schemas/tools/aaa_mutate.json +2 -10
  33. package/schemas/tools/add_address_list_entry.json +1 -5
  34. package/schemas/tools/add_bfd_configuration.json +1 -4
  35. package/schemas/tools/add_bgp_connection.json +1 -5
  36. package/schemas/tools/add_bgp_template.json +1 -4
  37. package/schemas/tools/add_blackhole_route.json +1 -4
  38. package/schemas/tools/add_bridge_port.json +6 -31
  39. package/schemas/tools/add_bridge_vlan.json +1 -4
  40. package/schemas/tools/add_container_env.json +1 -5
  41. package/schemas/tools/add_container_mount.json +1 -5
  42. package/schemas/tools/add_default_route.json +1 -5
  43. package/schemas/tools/add_dhcp_client.json +1 -7
  44. package/schemas/tools/add_disk.json +1 -3
  45. package/schemas/tools/add_dns_regexp.json +1 -6
  46. package/schemas/tools/add_dns_static.json +1 -4
  47. package/schemas/tools/add_dot1x_client.json +1 -5
  48. package/schemas/tools/add_dot1x_server.json +3 -13
  49. package/schemas/tools/add_firewall_default_deny.json +1 -4
  50. package/schemas/tools/add_graphing_interface.json +1 -3
  51. package/schemas/tools/add_graphing_queue.json +1 -3
  52. package/schemas/tools/add_igmp_proxy_interface.json +1 -5
  53. package/schemas/tools/add_ip_address.json +1 -6
  54. package/schemas/tools/add_ipv6_address.json +1 -6
  55. package/schemas/tools/add_ipv6_address_list_entry.json +1 -5
  56. package/schemas/tools/add_ipv6_default_route.json +1 -4
  57. package/schemas/tools/add_ipv6_dhcp_binding.json +1 -4
  58. package/schemas/tools/add_ipv6_dhcp_client.json +3 -15
  59. package/schemas/tools/add_ipv6_dhcp_option.json +1 -5
  60. package/schemas/tools/add_ipv6_dhcp_relay.json +1 -6
  61. package/schemas/tools/add_ipv6_nd.json +2 -9
  62. package/schemas/tools/add_ipv6_nd_prefix.json +1 -4
  63. package/schemas/tools/add_ipv6_route.json +2 -10
  64. package/schemas/tools/add_logging_action.json +2 -12
  65. package/schemas/tools/add_logging_rule.json +1 -4
  66. package/schemas/tools/add_netwatch.json +2 -10
  67. package/schemas/tools/add_ospf_area.json +2 -11
  68. package/schemas/tools/add_ospf_area_range.json +1 -5
  69. package/schemas/tools/add_ospf_instance.json +1 -5
  70. package/schemas/tools/add_ospf_interface_template.json +3 -20
  71. package/schemas/tools/add_ovpn_server.json +4 -17
  72. package/schemas/tools/add_pimsm_instance.json +2 -9
  73. package/schemas/tools/add_pimsm_interface_template.json +1 -5
  74. package/schemas/tools/add_pimsm_rp.json +1 -5
  75. package/schemas/tools/add_radius_server.json +1 -4
  76. package/schemas/tools/add_rip_instance.json +1 -4
  77. package/schemas/tools/add_rip_interface_template.json +1 -5
  78. package/schemas/tools/add_rip_static_neighbor.json +1 -4
  79. package/schemas/tools/add_romon_port.json +1 -4
  80. package/schemas/tools/add_route.json +1 -5
  81. package/schemas/tools/add_routing_filter_num_list.json +1 -4
  82. package/schemas/tools/add_routing_filter_rule.json +1 -5
  83. package/schemas/tools/add_routing_id.json +1 -4
  84. package/schemas/tools/add_routing_rule.json +2 -10
  85. package/schemas/tools/add_routing_table.json +1 -5
  86. package/schemas/tools/add_rpki_session.json +1 -6
  87. package/schemas/tools/add_script.json +1 -5
  88. package/schemas/tools/add_switch_port_isolation.json +1 -4
  89. package/schemas/tools/add_switch_rule.json +2 -10
  90. package/schemas/tools/add_traffic_generator_port.json +1 -5
  91. package/schemas/tools/add_traffic_generator_stream.json +1 -5
  92. package/schemas/tools/add_traffic_monitor.json +3 -17
  93. package/schemas/tools/add_user.json +1 -6
  94. package/schemas/tools/add_user_group.json +1 -4
  95. package/schemas/tools/add_user_manager_limitation.json +1 -3
  96. package/schemas/tools/add_user_manager_profile.json +2 -7
  97. package/schemas/tools/add_user_manager_router.json +1 -6
  98. package/schemas/tools/add_user_manager_user.json +1 -5
  99. package/schemas/tools/add_wireguard_peer.json +1 -6
  100. package/schemas/tools/allow_device.json +1 -3
  101. package/schemas/tools/apply_capsman_fixes.json +1 -3
  102. package/schemas/tools/apply_plan.json +1 -3
  103. package/schemas/tools/apply_security_hardening_fixes.json +1 -4
  104. package/schemas/tools/apply_traffic_shaping.json +2 -10
  105. package/schemas/tools/assign_user_manager_profile.json +1 -4
  106. package/schemas/tools/audit_certificate_expiry.json +1 -3
  107. package/schemas/tools/audit_fleet.json +2 -9
  108. package/schemas/tools/audit_remediate.json +2 -9
  109. package/schemas/tools/backup_info.json +1 -3
  110. package/schemas/tools/bandwidth_test.json +3 -15
  111. package/schemas/tools/block_device.json +1 -3
  112. package/schemas/tools/bootstrap_ipv6_firewall_baseline.json +1 -4
  113. package/schemas/tools/build_guest_hotspot.json +1 -7
  114. package/schemas/tools/build_wireguard_mesh.json +1 -4
  115. package/schemas/tools/capture_config_snapshot.json +1 -5
  116. package/schemas/tools/change_password.json +1 -4
  117. package/schemas/tools/check_route_path.json +1 -3
  118. package/schemas/tools/config_check_drift.json +1 -5
  119. package/schemas/tools/config_reconcile.json +1 -3
  120. package/schemas/tools/config_set_baseline.json +1 -4
  121. package/schemas/tools/correlate_events.json +1 -4
  122. package/schemas/tools/create_backup.json +1 -4
  123. package/schemas/tools/create_bridge.json +5 -28
  124. package/schemas/tools/create_certificate.json +1 -6
  125. package/schemas/tools/create_dhcp_network.json +1 -4
  126. package/schemas/tools/create_dhcp_pool.json +1 -4
  127. package/schemas/tools/create_dhcp_server.json +4 -22
  128. package/schemas/tools/create_eoip_tunnel.json +3 -17
  129. package/schemas/tools/create_export.json +3 -17
  130. package/schemas/tools/create_filter_rule.json +1 -6
  131. package/schemas/tools/create_gre_tunnel.json +2 -9
  132. package/schemas/tools/create_ip_pool.json +1 -4
  133. package/schemas/tools/create_ipip_tunnel.json +2 -9
  134. package/schemas/tools/create_ipsec_identity.json +4 -21
  135. package/schemas/tools/create_ipsec_peer.json +2 -10
  136. package/schemas/tools/create_ipsec_policy.json +3 -15
  137. package/schemas/tools/create_ipsec_profile.json +1 -5
  138. package/schemas/tools/create_ipsec_proposal.json +1 -7
  139. package/schemas/tools/create_ipv6_dhcp_server.json +1 -7
  140. package/schemas/tools/create_ipv6_filter_rule.json +2 -11
  141. package/schemas/tools/create_ipv6_mangle_rule.json +2 -13
  142. package/schemas/tools/create_ipv6_nat_rule.json +2 -10
  143. package/schemas/tools/create_ipv6_pool.json +1 -5
  144. package/schemas/tools/create_ipv6_raw_rule.json +3 -19
  145. package/schemas/tools/create_l2tp_client.json +2 -12
  146. package/schemas/tools/create_local_backup.json +1 -6
  147. package/schemas/tools/create_mangle_rule.json +2 -13
  148. package/schemas/tools/create_nat_rule.json +2 -10
  149. package/schemas/tools/create_ovpn_client.json +4 -18
  150. package/schemas/tools/create_ppp_profile.json +6 -30
  151. package/schemas/tools/create_ppp_secret.json +2 -14
  152. package/schemas/tools/create_pptp_client.json +1 -7
  153. package/schemas/tools/create_queue_tree.json +1 -5
  154. package/schemas/tools/create_queue_type.json +5 -28
  155. package/schemas/tools/create_scheduler.json +1 -5
  156. package/schemas/tools/create_simple_queue.json +1 -5
  157. package/schemas/tools/create_sstp_client.json +2 -11
  158. package/schemas/tools/create_vlan_interface.json +3 -19
  159. package/schemas/tools/create_vxlan_tunnel.json +3 -17
  160. package/schemas/tools/create_wireguard_interface.json +1 -4
  161. package/schemas/tools/create_wireless_interface.json +6 -37
  162. package/schemas/tools/create_wireless_security_profile.json +1 -3
  163. package/schemas/tools/delete_local_backup.json +1 -3
  164. package/schemas/tools/delete_s3_backup.json +1 -3
  165. package/schemas/tools/describe_tool.json +1 -3
  166. package/schemas/tools/design_network_segment.json +1 -10
  167. package/schemas/tools/diagnose.json +1 -3
  168. package/schemas/tools/diff_config_snapshots.json +1 -6
  169. package/schemas/tools/disable_address_list_entry.json +1 -3
  170. package/schemas/tools/disable_dns_static.json +1 -3
  171. package/schemas/tools/disable_filter_rule.json +1 -3
  172. package/schemas/tools/disable_interface.json +1 -3
  173. package/schemas/tools/disable_ip_service.json +1 -3
  174. package/schemas/tools/disable_ipv6_address_list_entry.json +1 -3
  175. package/schemas/tools/disable_ipv6_dhcp_relay.json +1 -3
  176. package/schemas/tools/disable_ipv6_filter_rule.json +1 -3
  177. package/schemas/tools/disable_ipv6_mangle_rule.json +1 -3
  178. package/schemas/tools/disable_ipv6_nat_rule.json +1 -3
  179. package/schemas/tools/disable_ipv6_raw_rule.json +1 -3
  180. package/schemas/tools/disable_ipv6_route.json +1 -3
  181. package/schemas/tools/disable_l2tp_client.json +1 -3
  182. package/schemas/tools/disable_mangle_rule.json +1 -3
  183. package/schemas/tools/disable_nat_rule.json +1 -3
  184. package/schemas/tools/disable_ovpn_client.json +1 -3
  185. package/schemas/tools/disable_ovpn_server.json +1 -3
  186. package/schemas/tools/disable_queue_tree.json +1 -3
  187. package/schemas/tools/disable_radius_server.json +1 -3
  188. package/schemas/tools/disable_route.json +1 -3
  189. package/schemas/tools/disable_scheduler.json +1 -3
  190. package/schemas/tools/disable_simple_queue.json +1 -3
  191. package/schemas/tools/disable_sstp_client.json +1 -3
  192. package/schemas/tools/disable_switch_rule.json +1 -3
  193. package/schemas/tools/disable_traffic_monitor.json +1 -3
  194. package/schemas/tools/disable_user.json +1 -3
  195. package/schemas/tools/disable_wireguard_interface.json +1 -3
  196. package/schemas/tools/disable_wireguard_peer.json +1 -3
  197. package/schemas/tools/disable_wireless_interface.json +1 -3
  198. package/schemas/tools/disconnect_ppp_active.json +1 -3
  199. package/schemas/tools/disconnect_user.json +1 -3
  200. package/schemas/tools/download_backup_from_s3.json +1 -3
  201. package/schemas/tools/download_file.json +1 -3
  202. package/schemas/tools/eject_disk.json +1 -3
  203. package/schemas/tools/enable_address_list_entry.json +1 -3
  204. package/schemas/tools/enable_dns_static.json +1 -3
  205. package/schemas/tools/enable_filter_rule.json +1 -3
  206. package/schemas/tools/enable_interface.json +1 -3
  207. package/schemas/tools/enable_ip_service.json +1 -3
  208. package/schemas/tools/enable_ipv6_address_list_entry.json +1 -3
  209. package/schemas/tools/enable_ipv6_dhcp_relay.json +1 -3
  210. package/schemas/tools/enable_ipv6_filter_rule.json +1 -3
  211. package/schemas/tools/enable_ipv6_mangle_rule.json +1 -3
  212. package/schemas/tools/enable_ipv6_nat_rule.json +1 -3
  213. package/schemas/tools/enable_ipv6_raw_rule.json +1 -3
  214. package/schemas/tools/enable_ipv6_route.json +1 -3
  215. package/schemas/tools/enable_l2tp_client.json +1 -3
  216. package/schemas/tools/enable_mangle_rule.json +1 -3
  217. package/schemas/tools/enable_nat_rule.json +1 -3
  218. package/schemas/tools/enable_ovpn_client.json +1 -3
  219. package/schemas/tools/enable_ovpn_server.json +1 -3
  220. package/schemas/tools/enable_queue_tree.json +1 -3
  221. package/schemas/tools/enable_radius_server.json +1 -3
  222. package/schemas/tools/enable_route.json +1 -3
  223. package/schemas/tools/enable_scheduler.json +1 -3
  224. package/schemas/tools/enable_simple_queue.json +1 -3
  225. package/schemas/tools/enable_sstp_client.json +1 -3
  226. package/schemas/tools/enable_switch_rule.json +1 -3
  227. package/schemas/tools/enable_traffic_monitor.json +1 -3
  228. package/schemas/tools/enable_user.json +1 -3
  229. package/schemas/tools/enable_wireguard_interface.json +1 -3
  230. package/schemas/tools/enable_wireguard_peer.json +1 -3
  231. package/schemas/tools/enable_wireless_interface.json +1 -3
  232. package/schemas/tools/enforce_address_list_blocking.json +1 -4
  233. package/schemas/tools/expand_ip_pool.json +1 -4
  234. package/schemas/tools/export_logs.json +2 -7
  235. package/schemas/tools/export_section.json +1 -5
  236. package/schemas/tools/export_ssh_host_key.json +1 -3
  237. package/schemas/tools/find_tools.json +1 -3
  238. package/schemas/tools/firewall_audit.json +1 -4
  239. package/schemas/tools/firmware_check.json +2 -8
  240. package/schemas/tools/firmware_stage.json +1 -5
  241. package/schemas/tools/firmware_status.json +1 -3
  242. package/schemas/tools/firmware_upgrade.json +1 -5
  243. package/schemas/tools/fix_certificate_crl_policy.json +1 -4
  244. package/schemas/tools/fix_password_policy.json +1 -4
  245. package/schemas/tools/flood_ping.json +1 -4
  246. package/schemas/tools/forecast_link_saturation.json +1 -5
  247. package/schemas/tools/format_disk.json +2 -10
  248. package/schemas/tools/forward_port.json +2 -10
  249. package/schemas/tools/generate_hotspot_vouchers.json +1 -5
  250. package/schemas/tools/get_aaa_section.json +1 -3
  251. package/schemas/tools/get_address_list_entry.json +1 -3
  252. package/schemas/tools/get_bgp_connection.json +1 -3
  253. package/schemas/tools/get_bridge.json +1 -3
  254. package/schemas/tools/get_certificate.json +1 -3
  255. package/schemas/tools/get_config_snapshot.json +1 -4
  256. package/schemas/tools/get_device_traffic.json +1 -3
  257. package/schemas/tools/get_dhcp_client.json +1 -3
  258. package/schemas/tools/get_dhcp_server.json +1 -3
  259. package/schemas/tools/get_disk.json +1 -3
  260. package/schemas/tools/get_dns_static.json +1 -3
  261. package/schemas/tools/get_dot1x_client.json +1 -3
  262. package/schemas/tools/get_dot1x_server.json +1 -3
  263. package/schemas/tools/get_eoip_tunnel.json +1 -3
  264. package/schemas/tools/get_filter_rule.json +1 -3
  265. package/schemas/tools/get_gre_tunnel.json +1 -3
  266. package/schemas/tools/get_interface.json +1 -3
  267. package/schemas/tools/get_ip_address.json +1 -3
  268. package/schemas/tools/get_ip_pool.json +1 -3
  269. package/schemas/tools/get_ip_service.json +1 -3
  270. package/schemas/tools/get_ipip_tunnel.json +1 -3
  271. package/schemas/tools/get_ipsec_peer.json +1 -3
  272. package/schemas/tools/get_ipsec_profile.json +1 -3
  273. package/schemas/tools/get_ipsec_proposal.json +1 -3
  274. package/schemas/tools/get_ipv6_address.json +1 -3
  275. package/schemas/tools/get_ipv6_address_list_entry.json +1 -3
  276. package/schemas/tools/get_ipv6_dhcp_client.json +1 -3
  277. package/schemas/tools/get_ipv6_dhcp_relay.json +1 -3
  278. package/schemas/tools/get_ipv6_dhcp_server.json +1 -3
  279. package/schemas/tools/get_ipv6_filter_rule.json +1 -3
  280. package/schemas/tools/get_ipv6_mangle_rule.json +1 -3
  281. package/schemas/tools/get_ipv6_nat_rule.json +1 -3
  282. package/schemas/tools/get_ipv6_nd.json +1 -3
  283. package/schemas/tools/get_ipv6_neighbor.json +1 -3
  284. package/schemas/tools/get_ipv6_pool.json +1 -3
  285. package/schemas/tools/get_ipv6_raw_rule.json +1 -3
  286. package/schemas/tools/get_ipv6_route.json +1 -3
  287. package/schemas/tools/get_l2tp_client.json +1 -3
  288. package/schemas/tools/get_local_backup.json +1 -3
  289. package/schemas/tools/get_logs.json +2 -9
  290. package/schemas/tools/get_logs_by_severity.json +2 -10
  291. package/schemas/tools/get_logs_by_topic.json +1 -3
  292. package/schemas/tools/get_mangle_rule.json +1 -3
  293. package/schemas/tools/get_nat_rule.json +1 -3
  294. package/schemas/tools/get_netwatch.json +1 -3
  295. package/schemas/tools/get_ovpn_client.json +1 -3
  296. package/schemas/tools/get_poe_monitor.json +1 -3
  297. package/schemas/tools/get_poe_settings.json +1 -3
  298. package/schemas/tools/get_port.json +1 -3
  299. package/schemas/tools/get_ppp_profile.json +1 -3
  300. package/schemas/tools/get_ppp_secret.json +1 -3
  301. package/schemas/tools/get_pptp_client.json +1 -3
  302. package/schemas/tools/get_queue_interface.json +1 -3
  303. package/schemas/tools/get_queue_tree.json +1 -3
  304. package/schemas/tools/get_queue_type.json +1 -3
  305. package/schemas/tools/get_radius_server.json +1 -3
  306. package/schemas/tools/get_route.json +1 -3
  307. package/schemas/tools/get_routing_id.json +1 -3
  308. package/schemas/tools/get_routing_rule.json +1 -3
  309. package/schemas/tools/get_routing_table.json +1 -4
  310. package/schemas/tools/get_routing_table_def.json +1 -3
  311. package/schemas/tools/get_scheduler.json +1 -3
  312. package/schemas/tools/get_simple_queue.json +1 -3
  313. package/schemas/tools/get_sstp_client.json +1 -3
  314. package/schemas/tools/get_switch.json +1 -3
  315. package/schemas/tools/get_switch_port.json +1 -3
  316. package/schemas/tools/get_switch_port_isolation.json +1 -3
  317. package/schemas/tools/get_switch_rule.json +1 -3
  318. package/schemas/tools/get_traffic_monitor.json +1 -3
  319. package/schemas/tools/get_user.json +1 -3
  320. package/schemas/tools/get_user_group.json +1 -3
  321. package/schemas/tools/get_user_manager_user.json +1 -3
  322. package/schemas/tools/get_vlan_interface.json +1 -3
  323. package/schemas/tools/get_vxlan_tunnel.json +1 -3
  324. package/schemas/tools/get_wireguard_interface.json +1 -3
  325. package/schemas/tools/get_wireguard_peer.json +1 -3
  326. package/schemas/tools/get_wireless_interface.json +1 -3
  327. package/schemas/tools/get_wireless_security_profile.json +1 -3
  328. package/schemas/tools/harden_connection_tracking_helpers.json +1 -4
  329. package/schemas/tools/harden_dns_resolver_exposure.json +1 -4
  330. package/schemas/tools/harden_firewall.json +1 -6
  331. package/schemas/tools/harden_ip_service_exposure.json +1 -4
  332. package/schemas/tools/harden_kernel_ip_settings.json +1 -4
  333. package/schemas/tools/harden_management_plane_exposure.json +1 -4
  334. package/schemas/tools/harden_ssh_service.json +1 -4
  335. package/schemas/tools/import_certificate.json +1 -3
  336. package/schemas/tools/import_configuration.json +1 -5
  337. package/schemas/tools/import_ssh_host_key.json +1 -3
  338. package/schemas/tools/invoke_tool.json +1 -3
  339. package/schemas/tools/ip_scan.json +1 -3
  340. package/schemas/tools/list_address_lists.json +1 -3
  341. package/schemas/tools/list_backups.json +1 -3
  342. package/schemas/tools/list_bfd_sessions.json +1 -3
  343. package/schemas/tools/list_bgp_sessions.json +1 -3
  344. package/schemas/tools/list_config_snapshots.json +1 -3
  345. package/schemas/tools/list_connected_devices.json +1 -4
  346. package/schemas/tools/list_containers.json +1 -3
  347. package/schemas/tools/list_dhcp_servers.json +1 -4
  348. package/schemas/tools/list_disks.json +1 -3
  349. package/schemas/tools/list_dns_static.json +1 -4
  350. package/schemas/tools/list_dot1x_clients.json +1 -3
  351. package/schemas/tools/list_dot1x_servers.json +1 -3
  352. package/schemas/tools/list_filter_rules.json +1 -5
  353. package/schemas/tools/list_graphing.json +2 -8
  354. package/schemas/tools/list_interfaces.json +1 -4
  355. package/schemas/tools/list_ip_addresses.json +1 -4
  356. package/schemas/tools/list_ip_pools.json +1 -3
  357. package/schemas/tools/list_ipv6_address_lists.json +1 -3
  358. package/schemas/tools/list_ipv6_addresses.json +1 -5
  359. package/schemas/tools/list_ipv6_dhcp_bindings.json +1 -3
  360. package/schemas/tools/list_ipv6_dhcp_clients.json +1 -4
  361. package/schemas/tools/list_ipv6_dhcp_relays.json +1 -3
  362. package/schemas/tools/list_ipv6_dhcp_servers.json +1 -4
  363. package/schemas/tools/list_ipv6_filter_rules.json +1 -5
  364. package/schemas/tools/list_ipv6_mangle_rules.json +1 -5
  365. package/schemas/tools/list_ipv6_nat_rules.json +1 -5
  366. package/schemas/tools/list_ipv6_nd.json +1 -3
  367. package/schemas/tools/list_ipv6_nd_prefixes.json +1 -3
  368. package/schemas/tools/list_ipv6_neighbors.json +1 -3
  369. package/schemas/tools/list_ipv6_raw_rules.json +1 -5
  370. package/schemas/tools/list_ipv6_routes.json +1 -5
  371. package/schemas/tools/list_mangle_rules.json +1 -5
  372. package/schemas/tools/list_nat_rules.json +1 -4
  373. package/schemas/tools/list_ppp_secrets.json +1 -8
  374. package/schemas/tools/list_queue_trees.json +1 -4
  375. package/schemas/tools/list_routes.json +1 -6
  376. package/schemas/tools/list_routing_nexthops.json +1 -3
  377. package/schemas/tools/list_routing_rules.json +1 -3
  378. package/schemas/tools/list_s3_backups.json +1 -3
  379. package/schemas/tools/list_simple_queues.json +1 -4
  380. package/schemas/tools/list_switch_rules.json +1 -3
  381. package/schemas/tools/list_traffic_monitors.json +1 -3
  382. package/schemas/tools/list_user_manager_sessions.json +1 -3
  383. package/schemas/tools/list_user_ssh_keys.json +1 -3
  384. package/schemas/tools/list_users.json +1 -4
  385. package/schemas/tools/list_vlan_interfaces.json +1 -3
  386. package/schemas/tools/list_wireguard_interfaces.json +1 -4
  387. package/schemas/tools/list_wireguard_peers.json +1 -3
  388. package/schemas/tools/list_wireless_interfaces.json +1 -4
  389. package/schemas/tools/make_device_static.json +1 -3
  390. package/schemas/tools/memory_add_observations.json +2 -7
  391. package/schemas/tools/memory_create_entities.json +2 -7
  392. package/schemas/tools/memory_create_relations.json +2 -8
  393. package/schemas/tools/memory_delete_entities.json +1 -3
  394. package/schemas/tools/memory_delete_observations.json +2 -7
  395. package/schemas/tools/memory_delete_relations.json +2 -8
  396. package/schemas/tools/memory_open_nodes.json +1 -3
  397. package/schemas/tools/memory_search_nodes.json +1 -3
  398. package/schemas/tools/mirror_traffic_to_capture.json +2 -12
  399. package/schemas/tools/monitor_logs.json +1 -3
  400. package/schemas/tools/move_filter_rule.json +1 -4
  401. package/schemas/tools/move_ipv6_filter_rule.json +1 -4
  402. package/schemas/tools/move_ipv6_mangle_rule.json +1 -4
  403. package/schemas/tools/move_ipv6_nat_rule.json +1 -4
  404. package/schemas/tools/move_ipv6_raw_rule.json +1 -4
  405. package/schemas/tools/move_mangle_rule.json +1 -4
  406. package/schemas/tools/move_nat_rule.json +1 -4
  407. package/schemas/tools/onboard_wireguard_user.json +1 -8
  408. package/schemas/tools/packet_capture_status.json +1 -3
  409. package/schemas/tools/ping.json +1 -4
  410. package/schemas/tools/profile_cpu.json +1 -3
  411. package/schemas/tools/reboot_system.json +1 -3
  412. package/schemas/tools/release_ipv6_dhcp_client.json +1 -3
  413. package/schemas/tools/remove_address_list_entry.json +1 -3
  414. package/schemas/tools/remove_bfd_configuration.json +1 -3
  415. package/schemas/tools/remove_bgp_connection.json +1 -3
  416. package/schemas/tools/remove_bgp_template.json +1 -3
  417. package/schemas/tools/remove_bridge.json +1 -3
  418. package/schemas/tools/remove_bridge_port.json +1 -3
  419. package/schemas/tools/remove_certificate.json +1 -3
  420. package/schemas/tools/remove_config_snapshot.json +1 -3
  421. package/schemas/tools/remove_container_env.json +1 -4
  422. package/schemas/tools/remove_container_mount.json +1 -3
  423. package/schemas/tools/remove_device_lease.json +1 -3
  424. package/schemas/tools/remove_dhcp_client.json +1 -3
  425. package/schemas/tools/remove_dhcp_server.json +1 -3
  426. package/schemas/tools/remove_disk.json +1 -3
  427. package/schemas/tools/remove_dns_static.json +1 -3
  428. package/schemas/tools/remove_dot1x_client.json +1 -3
  429. package/schemas/tools/remove_dot1x_server.json +1 -3
  430. package/schemas/tools/remove_eoip_tunnel.json +1 -3
  431. package/schemas/tools/remove_file.json +1 -3
  432. package/schemas/tools/remove_filter_rule.json +1 -3
  433. package/schemas/tools/remove_graphing.json +2 -9
  434. package/schemas/tools/remove_gre_tunnel.json +1 -3
  435. package/schemas/tools/remove_igmp_proxy_interface.json +1 -3
  436. package/schemas/tools/remove_ip_address.json +1 -3
  437. package/schemas/tools/remove_ip_pool.json +1 -3
  438. package/schemas/tools/remove_ipip_tunnel.json +1 -3
  439. package/schemas/tools/remove_ipsec_identity.json +1 -3
  440. package/schemas/tools/remove_ipsec_peer.json +1 -3
  441. package/schemas/tools/remove_ipsec_policy.json +1 -3
  442. package/schemas/tools/remove_ipsec_profile.json +1 -3
  443. package/schemas/tools/remove_ipsec_proposal.json +1 -3
  444. package/schemas/tools/remove_ipv6_address.json +1 -3
  445. package/schemas/tools/remove_ipv6_address_list_entry.json +1 -3
  446. package/schemas/tools/remove_ipv6_dhcp_binding.json +1 -3
  447. package/schemas/tools/remove_ipv6_dhcp_client.json +1 -3
  448. package/schemas/tools/remove_ipv6_dhcp_option.json +1 -3
  449. package/schemas/tools/remove_ipv6_dhcp_relay.json +1 -3
  450. package/schemas/tools/remove_ipv6_dhcp_server.json +1 -3
  451. package/schemas/tools/remove_ipv6_filter_rule.json +1 -3
  452. package/schemas/tools/remove_ipv6_mangle_rule.json +1 -3
  453. package/schemas/tools/remove_ipv6_nat_rule.json +1 -3
  454. package/schemas/tools/remove_ipv6_nd.json +1 -3
  455. package/schemas/tools/remove_ipv6_nd_prefix.json +1 -3
  456. package/schemas/tools/remove_ipv6_neighbor.json +1 -3
  457. package/schemas/tools/remove_ipv6_pool.json +1 -3
  458. package/schemas/tools/remove_ipv6_raw_rule.json +1 -3
  459. package/schemas/tools/remove_ipv6_route.json +1 -3
  460. package/schemas/tools/remove_l2tp_client.json +1 -3
  461. package/schemas/tools/remove_logging_action.json +1 -3
  462. package/schemas/tools/remove_logging_rule.json +1 -3
  463. package/schemas/tools/remove_mangle_rule.json +1 -3
  464. package/schemas/tools/remove_nat_rule.json +1 -3
  465. package/schemas/tools/remove_netwatch.json +1 -3
  466. package/schemas/tools/remove_ospf_area.json +1 -3
  467. package/schemas/tools/remove_ospf_area_range.json +1 -3
  468. package/schemas/tools/remove_ospf_instance.json +1 -3
  469. package/schemas/tools/remove_ospf_interface_template.json +1 -3
  470. package/schemas/tools/remove_ovpn_client.json +1 -3
  471. package/schemas/tools/remove_ovpn_server.json +1 -3
  472. package/schemas/tools/remove_pimsm_instance.json +1 -3
  473. package/schemas/tools/remove_pimsm_interface_template.json +1 -3
  474. package/schemas/tools/remove_pimsm_rp.json +1 -3
  475. package/schemas/tools/remove_ppp_profile.json +1 -3
  476. package/schemas/tools/remove_ppp_secret.json +1 -3
  477. package/schemas/tools/remove_pptp_client.json +1 -3
  478. package/schemas/tools/remove_queue_tree.json +1 -3
  479. package/schemas/tools/remove_queue_type.json +1 -3
  480. package/schemas/tools/remove_radius_server.json +1 -3
  481. package/schemas/tools/remove_rip_instance.json +1 -3
  482. package/schemas/tools/remove_rip_interface_template.json +1 -3
  483. package/schemas/tools/remove_rip_static_neighbor.json +1 -3
  484. package/schemas/tools/remove_romon_port.json +1 -3
  485. package/schemas/tools/remove_route.json +1 -3
  486. package/schemas/tools/remove_routing_filter_num_list.json +1 -3
  487. package/schemas/tools/remove_routing_filter_rule.json +1 -3
  488. package/schemas/tools/remove_routing_id.json +1 -3
  489. package/schemas/tools/remove_routing_rule.json +1 -3
  490. package/schemas/tools/remove_routing_table.json +1 -3
  491. package/schemas/tools/remove_rpki_session.json +1 -3
  492. package/schemas/tools/remove_scheduler.json +1 -3
  493. package/schemas/tools/remove_script.json +1 -3
  494. package/schemas/tools/remove_simple_queue.json +1 -3
  495. package/schemas/tools/remove_sstp_client.json +1 -3
  496. package/schemas/tools/remove_switch_port_isolation.json +1 -3
  497. package/schemas/tools/remove_switch_rule.json +1 -3
  498. package/schemas/tools/remove_threat_feed.json +1 -3
  499. package/schemas/tools/remove_time_policy.json +1 -3
  500. package/schemas/tools/remove_traffic_generator_port.json +1 -3
  501. package/schemas/tools/remove_traffic_generator_stream.json +1 -3
  502. package/schemas/tools/remove_traffic_monitor.json +1 -3
  503. package/schemas/tools/remove_user.json +1 -3
  504. package/schemas/tools/remove_user_group.json +1 -3
  505. package/schemas/tools/remove_user_manager_limitation.json +1 -3
  506. package/schemas/tools/remove_user_manager_profile.json +1 -3
  507. package/schemas/tools/remove_user_manager_router.json +1 -3
  508. package/schemas/tools/remove_user_manager_user.json +1 -3
  509. package/schemas/tools/remove_user_ssh_key.json +1 -3
  510. package/schemas/tools/remove_vlan_interface.json +1 -3
  511. package/schemas/tools/remove_vxlan_tunnel.json +1 -3
  512. package/schemas/tools/remove_wireguard_interface.json +1 -3
  513. package/schemas/tools/remove_wireguard_peer.json +1 -3
  514. package/schemas/tools/remove_wireless_access_list_entry.json +1 -3
  515. package/schemas/tools/remove_wireless_interface.json +1 -3
  516. package/schemas/tools/remove_wireless_security_profile.json +1 -3
  517. package/schemas/tools/rename_local_backup.json +1 -4
  518. package/schemas/tools/renew_dhcp_client.json +1 -4
  519. package/schemas/tools/renew_ipv6_dhcp_client.json +1 -3
  520. package/schemas/tools/request_letsencrypt_certificate.json +1 -3
  521. package/schemas/tools/reset_configuration.json +1 -3
  522. package/schemas/tools/resolve_dns.json +1 -3
  523. package/schemas/tools/restore_backup.json +1 -3
  524. package/schemas/tools/restore_local_backup.json +1 -4
  525. package/schemas/tools/revoke_wireguard_user.json +1 -3
  526. package/schemas/tools/run_capsman_audit.json +1 -7
  527. package/schemas/tools/run_compliance_audit.json +2 -9
  528. package/schemas/tools/run_failover_drill.json +2 -11
  529. package/schemas/tools/run_routeros_command.json +1 -3
  530. package/schemas/tools/run_script.json +1 -3
  531. package/schemas/tools/s3_backup_info.json +1 -3
  532. package/schemas/tools/save_sniffer.json +1 -3
  533. package/schemas/tools/scan_wireless_networks.json +1 -4
  534. package/schemas/tools/search_logs.json +1 -4
  535. package/schemas/tools/send_sms.json +1 -5
  536. package/schemas/tools/set_aaa_settings.json +2 -8
  537. package/schemas/tools/set_bfd_configuration_enabled.json +1 -4
  538. package/schemas/tools/set_bgp_connection_enabled.json +1 -4
  539. package/schemas/tools/set_device_ip.json +1 -4
  540. package/schemas/tools/set_device_label.json +1 -4
  541. package/schemas/tools/set_device_limits.json +1 -3
  542. package/schemas/tools/set_dhcp_client.json +1 -3
  543. package/schemas/tools/set_disk.json +1 -3
  544. package/schemas/tools/set_dns_servers.json +1 -6
  545. package/schemas/tools/set_igmp_proxy_interface_enabled.json +1 -4
  546. package/schemas/tools/set_ip_cloud_advanced.json +1 -3
  547. package/schemas/tools/set_ip_service.json +1 -3
  548. package/schemas/tools/set_l2tp_server.json +2 -9
  549. package/schemas/tools/set_leds_settings.json +1 -6
  550. package/schemas/tools/set_neighbor_discovery_settings.json +1 -5
  551. package/schemas/tools/set_ntp_client.json +1 -6
  552. package/schemas/tools/set_ovpn_server.json +3 -12
  553. package/schemas/tools/set_port.json +3 -13
  554. package/schemas/tools/set_routing_filter_rule_enabled.json +1 -4
  555. package/schemas/tools/set_routing_id_enabled.json +1 -4
  556. package/schemas/tools/set_routing_rule_enabled.json +1 -4
  557. package/schemas/tools/set_routing_table_enabled.json +1 -4
  558. package/schemas/tools/set_rpki_session_enabled.json +1 -4
  559. package/schemas/tools/set_ssh_settings.json +2 -10
  560. package/schemas/tools/set_sstp_server.json +1 -4
  561. package/schemas/tools/set_system_identity.json +1 -3
  562. package/schemas/tools/set_time_policy.json +1 -7
  563. package/schemas/tools/set_user_ssh_keys.json +1 -4
  564. package/schemas/tools/set_wireless_security_profile.json +1 -4
  565. package/schemas/tools/setup_port_knock.json +1 -7
  566. package/schemas/tools/setup_wan_failover.json +2 -11
  567. package/schemas/tools/setup_wan_loadbalance.json +2 -10
  568. package/schemas/tools/share_disk.json +1 -3
  569. package/schemas/tools/shutdown_system.json +1 -3
  570. package/schemas/tools/sign_certificate.json +1 -3
  571. package/schemas/tools/speed_test.json +1 -4
  572. package/schemas/tools/start_packet_capture.json +1 -4
  573. package/schemas/tools/steer_client.json +2 -8
  574. package/schemas/tools/subscribe_threat_feed.json +1 -8
  575. package/schemas/tools/suggest_fix.json +1 -3
  576. package/schemas/tools/test_dns_query.json +1 -4
  577. package/schemas/tools/test_ssh_from_device.json +1 -6
  578. package/schemas/tools/test_ssh_to_host.json +1 -6
  579. package/schemas/tools/trace_path.json +1 -5
  580. package/schemas/tools/traceroute.json +1 -4
  581. package/schemas/tools/tune_wifi_channel.json +1 -5
  582. package/schemas/tools/update_bfd_configuration.json +1 -3
  583. package/schemas/tools/update_bgp_connection.json +1 -3
  584. package/schemas/tools/update_bridge.json +5 -26
  585. package/schemas/tools/update_dns_static.json +1 -3
  586. package/schemas/tools/update_dot1x_client.json +1 -3
  587. package/schemas/tools/update_dot1x_server.json +3 -12
  588. package/schemas/tools/update_filter_rule.json +1 -3
  589. package/schemas/tools/update_igmp_proxy_interface.json +1 -3
  590. package/schemas/tools/update_ip_pool.json +1 -3
  591. package/schemas/tools/update_ipsec_peer.json +2 -8
  592. package/schemas/tools/update_ipsec_profile.json +1 -3
  593. package/schemas/tools/update_ipsec_proposal.json +1 -3
  594. package/schemas/tools/update_ipv6_filter_rule.json +1 -3
  595. package/schemas/tools/update_ipv6_mangle_rule.json +1 -3
  596. package/schemas/tools/update_ipv6_nat_rule.json +1 -3
  597. package/schemas/tools/update_ipv6_nd.json +2 -8
  598. package/schemas/tools/update_ipv6_pool.json +1 -3
  599. package/schemas/tools/update_ipv6_raw_rule.json +1 -3
  600. package/schemas/tools/update_ipv6_settings.json +3 -15
  601. package/schemas/tools/update_mac_ping.json +1 -3
  602. package/schemas/tools/update_mac_server.json +1 -3
  603. package/schemas/tools/update_mac_winbox.json +1 -3
  604. package/schemas/tools/update_mangle_rule.json +1 -3
  605. package/schemas/tools/update_nat_rule.json +1 -3
  606. package/schemas/tools/update_ospf_instance.json +1 -3
  607. package/schemas/tools/update_ovpn_server.json +4 -15
  608. package/schemas/tools/update_ppp_profile.json +6 -30
  609. package/schemas/tools/update_ppp_secret.json +2 -11
  610. package/schemas/tools/update_queue_interface.json +1 -4
  611. package/schemas/tools/update_queue_tree.json +1 -3
  612. package/schemas/tools/update_queue_type.json +1 -3
  613. package/schemas/tools/update_radius_server.json +2 -7
  614. package/schemas/tools/update_rip_instance.json +1 -3
  615. package/schemas/tools/update_route.json +1 -3
  616. package/schemas/tools/update_routing_filter_rule.json +1 -3
  617. package/schemas/tools/update_routing_id.json +1 -3
  618. package/schemas/tools/update_routing_rule.json +2 -9
  619. package/schemas/tools/update_routing_settings.json +2 -10
  620. package/schemas/tools/update_routing_table.json +1 -3
  621. package/schemas/tools/update_rpki_session.json +1 -3
  622. package/schemas/tools/update_simple_queue.json +1 -3
  623. package/schemas/tools/update_sniffer_settings.json +2 -9
  624. package/schemas/tools/update_switch.json +1 -3
  625. package/schemas/tools/update_switch_port.json +3 -14
  626. package/schemas/tools/update_switch_port_isolation.json +1 -3
  627. package/schemas/tools/update_switch_rule.json +2 -8
  628. package/schemas/tools/update_traffic_monitor.json +3 -12
  629. package/schemas/tools/update_user.json +1 -3
  630. package/schemas/tools/update_user_group.json +1 -3
  631. package/schemas/tools/update_user_manager_user.json +1 -3
  632. package/schemas/tools/update_vlan_interface.json +3 -14
  633. package/schemas/tools/update_wireguard_interface.json +1 -3
  634. package/schemas/tools/update_wireguard_peer.json +1 -3
  635. package/schemas/tools/update_wireless_interface.json +6 -36
  636. package/schemas/tools/upload_backup_to_s3.json +1 -3
  637. package/schemas/tools/upload_file.json +1 -4
  638. package/schemas/tools/wake_on_lan.json +1 -3
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <div align="center">
2
2
  <img src="assets/logo.svg" alt="@usex/mikrotik-mcp" width="440" />
3
- <p><strong>A Bun-native MCP server that turns one or more MikroTik routers into 819 tools your AI can drive.</strong><br/>
4
- Firewall · routing · DHCP/DNS · wireless · QoS · and a complete VPN suite over SSH, with transactional Safe Mode.</p>
3
+ <p><strong>Drive one or more MikroTik routers in plain language — 819 risk-annotated tools your AI can call, over SSH.</strong><br/>
4
+ Firewall · routing · DHCP/DNS · wireless · QoS · a complete VPN suite · transactional Safe Mode · and a live observability dashboard that watches every call.</p>
5
5
 
6
6
  <p>
7
7
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-7C3AED.svg"></a>
@@ -14,15 +14,13 @@
14
14
 
15
15
  ---
16
16
 
17
- `@usex/mikrotik-mcp` exposes **MikroTik RouterOS** as **819 [Model Context Protocol](https://modelcontextprotocol.io)
18
- tools across 111 modules**, so an AI client (Claude Desktop, Claude Code, any MCP
19
- client) can read and configure your router in plain language. It speaks to the
20
- device over **SSH** — no agent, no API package to install on RouterOS — runs on
21
- **[Bun](https://bun.sh)**, and validates every tool call against a Zod schema.
17
+ `@usex/mikrotik-mcp` turns **MikroTik RouterOS** into **819 [Model Context Protocol](https://modelcontextprotocol.io)
18
+ tools** any MCP client (Claude Desktop, Claude Code, Cursor, …) can call to read and
19
+ configure your router by talking to it. It reaches the device over **plain SSH** — no
20
+ agent, no package to install on RouterOS — runs on **[Bun](https://bun.sh)**, and
21
+ validates every call against a schema.
22
22
 
23
- Every tool is **risk-annotated** (read / write / destructive) so clients can gate
24
- what runs, and risky changes can be wrapped in **Safe Mode** — RouterOS holds them
25
- in memory and auto-reverts if your session drops, so you can't lock yourself out.
23
+ Point it at a router and go:
26
24
 
27
25
  ```jsonc
28
26
  // claude_desktop_config.json
@@ -40,64 +38,51 @@ in memory and auto-reverts if your session drops, so you can't lock yourself out
40
38
  }
41
39
  ```
42
40
 
41
+ Then just ask:
42
+
43
43
  > _"Show me the firewall input chain, then block SSH from the WAN under safe mode."_
44
44
  > _"Build an IKEv2 site-to-site tunnel to 203.0.113.5 for 192.168.20.0/24."_
45
45
  > _"Why can't VLAN 50 reach the internet?"_
46
46
 
47
- ## Why it's different
48
-
49
- - 🧰 **Breadth** — 819 tools covering the whole device: L2 (bridge, VLAN, wireless,
50
- PoE), L3 (addressing, routing, DHCP, DNS), security (firewall, NAT, address-lists,
51
- certificates), QoS (queues), and system ops (users, logs, backups, scheduler).
52
- - 🔐 **A complete VPN suite** — WireGuard, IPsec (IKEv1/IKEv2), L2TP, PPTP, SSTP,
53
- OpenVPN, plus GRE/IPIP/EoIP/VXLAN tunnels. With a `choose-vpn-solution` prompt
54
- that picks the right one for you. See the **[VPN guide](docs/vpn-guide.md)**.
55
- - 🛟 **Safe Mode** — a real transactional window (`enable_safe_mode`
56
- changes `commit_safe_mode`/`rollback_safe_mode`) backed by a persistent SSH
57
- session. Auto-reverts on disconnect.
58
- - 🚦 **Risk-annotated tools** `readOnlyHint` / `destructiveHint` let clients
47
+ ## Highlights
48
+
49
+ - 🧰 **819 tools, one per RouterOS scope** L2 (bridge, VLAN, wireless, PoE),
50
+ L3 (addressing, routing, DHCP, DNS), security (firewall, NAT, address-lists,
51
+ certificates), QoS, and system ops (users, logs, backups, scheduler).
52
+ - 📊 **Live observability dashboard** — a localhost web UI that shows **every tool
53
+ call the AI makes** in real time: inputs, outputs, latency, errors, per-device
54
+ analytics. Secrets redacted. [Jump to it ](#-observability-dashboard)
55
+ - 🔐 **Complete VPN suite** — WireGuard, IPsec (IKEv1/IKEv2), L2TP, PPTP, SSTP,
56
+ OpenVPN, plus GRE/IPIP/EoIP/VXLAN. A `choose-vpn-solution` prompt picks one for you.
57
+ - 🛟 **Safe Mode** — wrap risky changes in a real transactional window; RouterOS
58
+ holds them in memory and **auto-reverts if your session drops**, so you can't lock
59
+ yourself out.
60
+ - 🚦 **Risk-annotated** — every tool is tagged read / write / destructive, so clients
59
61
  auto-approve reads and prompt on writes.
60
- - 🧱 **Injection-safe by construction** — a command builder quotes/escapes every
61
- value, so a hostname like `LAN; /system reset` can never split into a second
62
- command.
63
- - 🖧 **Multiple devices** define named routers and the AI targets one per call
64
- (a validated `device` argument). Configure **both ends of a tunnel** from one
65
- conversation. See **[docs/multi-device.md](docs/multi-device.md)**.
66
- - 🪜 **SSH jump hosts** — reach a router with no exposed port by tunnelling
67
- through another via `jumpVia` (ProxyJump/bastion) — commands, Safe Mode and
68
- file upload all ride the hop. No new WAN port.
69
- - ⚡ **Connection pooling** — one persistent SSH session per device, reused
70
- across tool calls. Saves ~200-500 ms handshake per command (double through
71
- jump hosts). Idle connections auto-close after 30 s.
72
- - 🤖 **Guided prompts** — 9 built-in workflows (harden, diagnose, guest Wi-Fi, VPNs,
73
- cross-device tunnels, backup & document) that turn an intent into tool calls.
74
-
75
- ## Quickstart
62
+ - 🧱 **Injection-safe** — a command builder quotes/escapes every value; a hostname
63
+ like `LAN; /system reset` can never split into a second command.
64
+ - 🖧 **Multiple devices** — name your routers and target one per call; configure
65
+ **both ends of a tunnel** in one conversation.
66
+ - 🪜 **SSH jump hosts** reach a router with no exposed port by tunnelling through a
67
+ bastion (`jumpVia`); commands, Safe Mode and file upload all ride the hop.
68
+ - **Connection pooling** — one persistent SSH session per device saves ~200-500 ms
69
+ per command.
70
+
71
+ ## Install
76
72
 
77
73
  ```bash
78
- # 1. Install (requires Bun ≥ 1.3 — https://bun.sh)
74
+ # Requires Bun ≥ 1.3 — https://bun.sh
79
75
  bun add -g @usex/mikrotik-mcp
80
76
 
81
- # 2. Point it at your router and verify SSH connectivity
77
+ # Point it at your router and verify SSH connectivity
82
78
  MIKROTIK_HOST=192.168.88.1 MIKROTIK_USERNAME=admin MIKROTIK_PASSWORD=•••• \
83
79
  mikrotik-mcp auth-check
84
80
 
85
- # 3. List the catalog (name · risk · title)
86
- mikrotik-mcp tools
87
-
88
- # 4. Run it (stdio by default — wire it into your MCP client)
81
+ # Wire it into your MCP client (stdio by default)
89
82
  mikrotik-mcp serve
90
83
  ```
91
84
 
92
- **Try it without an AI client** open the official [MCP Inspector](docs/inspector.md)
93
- against the server (from source):
94
-
95
- ```bash
96
- bun run inspect # opens the Inspector UI to browse/run all 819 tools
97
- ```
98
-
99
- **Prefer SSH keys over a password?** Point the server at a key file instead — and
100
- add a passphrase if the key is encrypted:
85
+ Prefer **SSH keys**? Swap the password for a key file (add a passphrase if it's encrypted):
101
86
 
102
87
  ```bash
103
88
  MIKROTIK_HOST=192.168.88.1 MIKROTIK_USERNAME=admin \
@@ -106,66 +91,48 @@ MIKROTIK_KEY_PASSPHRASE=•••• \
106
91
  mikrotik-mcp auth-check # prints "Auth mode: SSH key"
107
92
  ```
108
93
 
109
- The key (file via `--key-filename` or inline PEM via `--private-key`) takes
110
- precedence over a password. Full configuration reference:
111
- **[docs/configuration.md](docs/configuration.md)**.
112
-
113
- ### From source
94
+ Prefer a **one-click bundle** (no Bun/Node/npm on the machine, credentials entered in
95
+ the host UI)? Build an `.mcpb` and drag it into Claude Desktop → Settings → Extensions:
114
96
 
115
97
  ```bash
116
- git clone https://github.com/mikrotik-mcp/mikrotik-mcp && cd mikrotik-mcp
117
- bun install
118
- bun run start # serve from source
119
- bun run build # bundle to dist/
98
+ bun run build:mcp # bundle for this machine
99
+ bun run build:mcp --target linux-x64 # or one target · build:mcp:all for every target
120
100
  ```
121
101
 
122
- ### As an MCP Bundle (`.mcpb`)
102
+ Full options: **[docs/configuration.md](docs/configuration.md)** · MCPB details:
103
+ **[docs/getting-started.md](docs/getting-started.md)**.
123
104
 
124
- A one-click install for Claude Desktop and other MCPB hosts no Bun, Node or npm
125
- needed on the machine, and the router credentials are entered in the host's UI
126
- rather than a shell.
105
+ ## Simple usageby scenario
127
106
 
128
- ```bash
129
- bun run build:mcp # bundle for this machine
130
- bun run build:mcp --target linux-x64 # or one specific target
131
- bun run build:mcp:all # every target
132
- ```
107
+ Once the server is wired into your client, everything below is a **plain-language
108
+ request**. The AI picks the right tool, validates it, and runs it. No CLI syntax to memorize.
133
109
 
134
- Bundles land in `dist-mcpb/` as `mikrotik-mcp-<version>-<platform>-<arch>.mcpb`.
135
- Open one with your MCPB host (on Claude Desktop, drag it onto Settings →
136
- Extensions) and fill in the router address and credentials it prompts for.
110
+ ### 🔎 See what's on the router
137
111
 
138
- Because the server is Bun-native `bun:sqlite`, `Bun.serve`, `Bun.S3Client`, and
139
- `@tikoci/centrs`, which ships raw TypeScript it cannot run on the Node runtime an
140
- MCPB host provides. Each bundle therefore **vendors the Bun binary it was built
141
- against** and runs `runtime/bun dist/cli.js serve`, so every subsystem (MAC-Telnet,
142
- the dashboard, S3 backups) behaves exactly as it does from source. That costs about
143
- 60 MB per bundle and makes each one platform-specific — hence one artifact per
144
- platform/arch rather than a single universal file.
112
+ > _"List the firewall filter rules and flag anything that allows WAN → LAN."_
113
+ > _"What DHCP leases are active right now?"_
114
+ > _"Show interface traffic and tell me which port is saturated."_
145
115
 
146
- The build stages the bundle, validates the manifest, and drives the staged server
147
- over stdio (`initialize` + `tools/list`, asserting the tool count matches the
148
- manifest) before packing. Pass `--no-smoke` to skip that last check.
116
+ All read-only safe to auto-approve.
149
117
 
150
- ## The tool catalog
118
+ ### 🧱 Make a change, safely
119
+
120
+ > _"Enable safe mode, block inbound SSH on the WAN, then commit if I'm still connected."_
151
121
 
152
- **819 tools across 111 modules.** Full, always-current reference (parameters +
153
- risk per tool) is generated from source: **[docs/tools-reference.md](docs/tools-reference.md)**.
122
+ Safe Mode holds the change in memory and reverts automatically if you lock yourself out:
123
+
124
+ ```text
125
+ enable_safe_mode → (make changes) → commit_safe_mode # persist
126
+ → rollback_safe_mode # discard
127
+ ```
154
128
 
155
- | Group | Tools | Modules |
156
- | ------------------------ | ----: | ---------------------------------------------------------------------------------------------------------- |
157
- | **Interfaces** | 41 | interfaces, VLAN, bridge, wireless, PoE |
158
- | **Addressing & Routing** | 46 | IP addresses, IP pools, routing, DHCP, DNS |
159
- | **Dynamic Routing** | 99 | router-id, settings, tables, rules, next-hops, filters, BFD, BGP, OSPF, RIP, PIM-SM, IGMP proxy, GMP, RPKI |
160
- | **Security** | 34 | firewall filter, NAT, address-lists, certificates, IP services |
161
- | **VPN & Tunneling** | 96 | WireGuard, IPsec, PPP, L2TP, PPTP, SSTP, OpenVPN, GRE/IPIP/EoIP/VXLAN |
162
- | **QoS** | 19 | queue types, queue trees, simple queues |
163
- | **System & Ops** | 102 | system, network tools, scheduler/scripts, users, logs, backup, Safe Mode |
129
+ ### 🔐 Stand up a VPN
164
130
 
165
- ## VPN & tunneling expert coverage
131
+ > _"Create a WireGuard interface on port 13231 and generate a client config for my laptop."_
132
+ > _"Build an IKEv2 site-to-site tunnel to 203.0.113.5 for 192.168.20.0/24."_
166
133
 
167
- Every MikroTik VPN technology, modeled the way RouterOS actually layers them (the
168
- PPP-based VPNs share one `/ppp` backend for users and addressing):
134
+ Not sure which VPN? Ask the **`choose-vpn-solution`** prompt it recommends one and
135
+ outlines the build. Every technology is covered:
169
136
 
170
137
  | Need | Use | Build it with |
171
138
  | ----------------------------------- | ----------------------- | -------------------------------------------------------------------------------------- |
@@ -173,17 +140,15 @@ PPP-based VPNs share one `/ppp` backend for users and addressing):
173
140
  | Interop site-to-site / native IKEv2 | **IPsec** | `create_ipsec_{profile,peer,identity,proposal,policy}`, `get_ipsec_active_peers` |
174
141
  | Built-in OS VPN clients | **L2TP/IPsec** | `set_l2tp_server`, `create_ppp_secret`, `create_ppp_profile` |
175
142
  | Through restrictive firewalls | **SSTP** (TLS) | `set_sstp_server`, `create_sstp_client` |
176
- | Cross-platform OpenVPN | **OpenVPN** | `set_ovpn_server`, `create_ovpn_client` |
143
+ | Cross-platform | **OpenVPN** | `set_ovpn_server`, `create_ovpn_client` |
177
144
  | Route / L2-bridge between sites | **GRE/IPIP/EoIP/VXLAN** | `create_gre_tunnel`, `create_eoip_tunnel`, `create_vxlan_tunnel` |
178
145
 
179
- Not sure which? Invoke the **`choose-vpn-solution`** prompt and the server
180
- recommends one and outlines the build. Details: **[docs/vpn-guide.md](docs/vpn-guide.md)**.
146
+ Details: **[docs/vpn-guide.md](docs/vpn-guide.md)**.
181
147
 
182
- ## Manage multiple devices
148
+ ### 🖧 Manage several routers at once
183
149
 
184
- Give each router a name and the AI can drive them all from one conversation —
185
- exactly what you need to **set up a tunnel between two MikroTiks and test it from
186
- both ends**. Point the server at a JSON file (or `MIKROTIK_DEVICES`):
150
+ Name your routers and drive them all from one conversation — exactly what you need to
151
+ **set up a tunnel between two MikroTiks and test it from both ends**:
187
152
 
188
153
  ```jsonc
189
154
  // devices.json
@@ -199,223 +164,267 @@ both ends**. Point the server at a JSON file (or `MIKROTIK_DEVICES`):
199
164
  ```bash
200
165
  mikrotik-mcp serve --config ./devices.json
201
166
  mikrotik-mcp devices # site-a (default) · site-b
202
- mikrotik-mcp auth-check # probes every device
203
167
  ```
204
168
 
205
- When more than one device is configured, **every tool gains an optional `device`
206
- argument** (a validated enum of your names); omit it to use the default. The AI
207
- discovers names with `list_mikrotik_devices`, and **Safe Mode is per-device** so
208
- each router commits independently. The **`setup-tunnel-between-sites`** prompt
209
- drives the whole both-ends flow. Full guide: **[docs/multi-device.md](docs/multi-device.md)**.
169
+ Every tool gains an optional `device` argument, and **Safe Mode is per-device**:
210
170
 
211
- ```jsonc
212
- // the AI calls a tool against a specific router:
213
- // create_wireguard_interface { "device": "site-a", "name": "wg-to-b", "listen_port": 13231 }
214
- ```
171
+ > _"On site-a create a WireGuard interface, on site-b add it as a peer, then ping across."_
215
172
 
216
- **Behind a bastion?** Reach a router with no exposed SSH port by jumping through
217
- another (OpenSSH-style ProxyJump) `jumpVia` names a configured device to tunnel
218
- through; commands, Safe Mode and SFTP upload all ride the hop:
173
+ Behind a bastion with no exposed port? Jump through another router (`jumpVia`) —
174
+ commands, Safe Mode and SFTP all ride the hop. Full guide:
175
+ **[docs/multi-device.md](docs/multi-device.md)**.
219
176
 
220
- ```jsonc
221
- "home-ax3": { "host": "10.10.30.100", "username": "admin", "jumpVia": "hex" }
177
+ ### 🩺 Diagnose and harden
178
+
179
+ > _"Why can't VLAN 50 reach the internet?"_
180
+ > _"Audit my firewall for shadowed and overly-broad rules."_
181
+ > _"Harden this router and show me the exact diff before committing."_
182
+
183
+ These map to higher-level workflows — [firewall audit](docs/firewall-audit.md),
184
+ [security hardening](docs/security-hardening.md), [change plan & dry-run](docs/change-plan.md) —
185
+ each read-only to inspect, dry-run + Safe Mode to fix.
186
+
187
+ ## 📊 Observability dashboard
188
+
189
+ **A localhost web dashboard that watches every tool call the LLM makes against this
190
+ server — in real time.** Off by default, zero overhead until you flip it on, and it runs
191
+ alongside whatever transport you use:
192
+
193
+ ```bash
194
+ mikrotik-mcp serve --dashboard # → http://127.0.0.1:9090
222
195
  ```
223
196
 
224
- The bastion router needs SSH TCP forwarding enabled (`/ip ssh set
225
- forwarding-enabled=local`). See **[docs/multi-device.md](docs/multi-device.md#ssh-jump-hosts-bastion--proxyjump)**.
197
+ <div align="center">
198
+ <img src="assets/screenshots/dashboard-overview.png" alt="Observability dashboard — overview" width="820" />
199
+ </div>
226
200
 
227
- ## Built-in prompts
201
+ Every call flows through one choke point in the registry, so the dashboard sees **all
202
+ of them, across every transport**. Why you'll want it on:
203
+
204
+ - 👁️ **Live feed of every call** — tool, inputs, outputs, target device, duration,
205
+ success/error — streaming in over a Bun-native WebSocket (SSE fallback). Filter by
206
+ tool / risk / device / status / free-text, pause & resume, export to CSV or JSON.
207
+ - 📈 **Analytics at a glance** — calls in window, calls/min, error rate, avg / p95 / p99
208
+ latency, distinct tools, output volume; top tools, by-risk and status donuts,
209
+ by-device bars, and a recent-errors panel.
210
+ - 🔒 **Secrets redacted before storage** — any password, private key, PSK or token is
211
+ replaced with `«redacted»` before anything is stored or streamed. Set
212
+ `--dashboard-capture-body=false` to keep metadata only.
213
+ - 🕸️ **Devices & connectivity map** — a hub-and-spoke graph of the server to each
214
+ device, coloured by live SSH reachability, with per-device online/offline, latency,
215
+ RouterOS identity/version and recent activity.
228
216
 
229
- MCP **prompts** are one-click guided workflows. This server ships 9 — authored as
230
- Markdown in [`prompts/`](prompts/), so you can edit or add your own without
231
- touching code:
217
+ <div align="center">
218
+ <img src="assets/screenshots/dashboard-live-feed.png" alt="Observability dashboard live call feed" width="820" />
219
+ </div>
232
220
 
233
- `harden-router` · `diagnose-connectivity` · `setup-guest-wifi` ·
234
- `choose-vpn-solution` · `setup-wireguard-vpn` · `setup-ipsec-site-to-site` ·
235
- `setup-l2tp-ipsec-roadwarrior` · `setup-tunnel-between-sites` · `backup-and-document`
221
+ <div align="center">
222
+ <img src="assets/screenshots/dashboard-devices.png" alt="Observability dashboard devices & connectivity" width="820" />
223
+ </div>
236
224
 
237
- See **[docs/prompts.md](docs/prompts.md)**.
225
+ It also carries **Config Studio** (edit the config JSON with autocomplete + safe-apply
226
+ auto-rollback), a **live topology map** from MNDP discovery, a **releases/upgrade**
227
+ timeline, and a **reload/restart** button. Everything persists to a Bun-native SQLite
228
+ store on your machine — no external database. Binds to loopback (`127.0.0.1`) by default;
229
+ set a bearer token (`--dashboard-token`) to expose it safely.
238
230
 
239
- ## Transports
231
+ <details>
232
+ <summary><b>📸 Every dashboard screen (14 screenshots)</b></summary>
240
233
 
241
- | Transport | When | Run |
242
- | ------------------- | --------------------------------- | ---------------------------------------------------------------- |
243
- | **stdio** (default) | Claude Desktop, local MCP clients | `mikrotik-mcp serve` |
244
- | **streamable-http** | Remote / shared, behind a proxy | `mikrotik-mcp serve --transport streamable-http --mcp-port 8000` |
245
- | **sse** | Legacy HTTP clients | `mikrotik-mcp serve --transport sse` |
234
+ <br/>
246
235
 
247
- HTTP transports expose `POST /mcp` and a `GET /health` check, with DNS-rebinding
248
- protection that reconciles with your bind host automatically. See
249
- **[docs/transports.md](docs/transports.md)**.
236
+ **Live feed call detail drawer.** One call expanded: arguments, output, target device,
237
+ duration, risk annotation secrets already `«redacted»`.
250
238
 
251
- ## SSH connection pooling
239
+ <div align="center">
240
+ <img src="assets/screenshots/dashboard-live-feed-detail.png" alt="Live feed — call detail drawer" width="820" />
241
+ </div>
252
242
 
253
- By default the server keeps **one persistent SSH connection per device** and
254
- opens a fresh exec channel for each tool call — eliminating the ~200-500 ms
255
- handshake overhead that a one-shot connection incurs on every command. Through
256
- a jump host the savings double (two handshakes avoided). Idle connections are
257
- closed automatically after 30 s.
243
+ **Clients.** Every DHCP lease / connected station across devices, with identity, traffic
244
+ and last-seen.
258
245
 
259
- ```bash
260
- # Disable pooling (revert to one-shot per tool call)
261
- MIKROTIK_SSH__KEEP_ALIVE=false mikrotik-mcp serve
246
+ <div align="center">
247
+ <img src="assets/screenshots/dashboard-clients.png" alt="Clients" width="820" />
248
+ </div>
262
249
 
263
- # Tune the idle timeout (ms)
264
- mikrotik-mcp serve --ssh-idle-timeout 60000
265
- ```
250
+ **RADIUS & User Manager.** Servers, sessions, profiles, limitations and vouchers.
266
251
 
267
- In a JSON config file:
252
+ <div align="center">
253
+ <img src="assets/screenshots/dashboard-radius-um.png" alt="RADIUS & User Manager" width="820" />
254
+ </div>
268
255
 
269
- ```jsonc
270
- {
271
- "ssh": {
272
- "keepAlive": true, // default — set false to disable
273
- "keepAliveInterval": 10000, // SSH keepalive packet interval (ms)
274
- "idleTimeout": 30000, // close idle connections after (ms)
275
- },
276
- }
277
- ```
256
+ **Topology.** Live L2 map built from MNDP neighbour discovery.
278
257
 
279
- Connection pooling is SSH-only; MAC-Telnet devices always use one-shot
280
- connections. Safe Mode still uses its own dedicated persistent session.
258
+ <div align="center">
259
+ <img src="assets/screenshots/dashboard-topology.png" alt="Topology map" width="820" />
260
+ </div>
281
261
 
282
- ## Safe Mode
262
+ **Packets.** Packet captures started from the dashboard, with status and download.
283
263
 
284
- ```text
285
- enable_safe_mode (make changes) commit_safe_mode # persist
286
- → rollback_safe_mode # discard
287
- ```
264
+ <div align="center">
265
+ <img src="assets/screenshots/dashboard-packets.png" alt="Packet capture" width="820" />
266
+ </div>
288
267
 
289
- While active, every change is held in memory; if the SSH session drops (e.g. a
290
- firewall rule that locks you out), RouterOS reverts everything automatically.
291
- Commands issued during the window are routed through the same persistent session.
292
- See **[docs/safe-mode.md](docs/safe-mode.md)**.
268
+ **Snapshots.** `/export`-based config snapshots kept locally browse and diff any two.
293
269
 
294
- ## Configuration
270
+ <div align="center">
271
+ <img src="assets/screenshots/dashboard-snapshots.png" alt="Config snapshots" width="820" />
272
+ </div>
295
273
 
296
- Connection and transport settings come from `MIKROTIK_*` env vars or matching CLI
297
- flags (highest precedence last: defaults → env → flags).
298
-
299
- | Variable | Flag | Default | Purpose |
300
- | ----------------------------- | -------------------- | ----------- | ---------------------------------------------------------------------------------------------------- |
301
- | `MIKROTIK_HOST` | `--host` | `127.0.0.1` | RouterOS host |
302
- | `MIKROTIK_USERNAME` | `--username` | `admin` | SSH user |
303
- | `MIKROTIK_PORT` | `--port` | `22` | SSH port |
304
- | `MIKROTIK_PASSWORD` | `--password` | — | SSH password _(or use a key →)_ |
305
- | `MIKROTIK_KEY_FILENAME` | `--key-filename` | — | SSH private-key file path |
306
- | `MIKROTIK_PRIVATE_KEY` | `--private-key` | — | Inline private key (PEM) |
307
- | `MIKROTIK_KEY_PASSPHRASE` | `--key-passphrase` | — | Passphrase for an encrypted key |
308
- | `MIKROTIK_JUMP_HOST` | `--jump-host` | — | SSH bastion to tunnel through ([jump hosts](docs/multi-device.md#ssh-jump-hosts-bastion--proxyjump)) |
309
- | `MIKROTIK_CONFIG_FILE` | `--config` | — | JSON file of named devices ([multi-device](docs/multi-device.md)) |
310
- | `MIKROTIK_DEVICES` | `--devices` | — | Inline JSON of named devices |
311
- | `MIKROTIK_MCP__TRANSPORT` | `--transport` | `stdio` | `stdio` / `streamable-http` / `sse` |
312
- | `MIKROTIK_MCP__PORT` | `--mcp-port` | `8000` | HTTP bind port |
313
- | `MIKROTIK_SSH__KEEP_ALIVE` | `--ssh-keep-alive` | `true` | SSH connection pooling (reuse connections across tool calls) |
314
- | `MIKROTIK_SSH__IDLE_TIMEOUT` | `--ssh-idle-timeout` | `30000` | Close idle pooled connections after (ms) |
315
- | `MIKROTIK_DASHBOARD__ENABLED` | `--dashboard` | `false` | Real-time observability dashboard ([docs](docs/observability.md)) |
316
-
317
- Full table (incl. HTTP host, allow-lists, timeouts, `MIKROTIK_LOG_LEVEL`):
318
- **[docs/configuration.md](docs/configuration.md)**.
274
+ **Drift Guard.** Baseline vs. live config, with drift promoted or reconciled.
319
275
 
320
- ### Observability dashboard (optional)
276
+ <div align="center">
277
+ <img src="assets/screenshots/dashboard-drift-guard.png" alt="Drift Guard" width="820" />
278
+ </div>
321
279
 
322
- A localhost-only web dashboard that intercepts **every** tool call the LLM makes
323
- live feed of inputs/outputs (secrets redacted), latency percentiles, error
324
- rate and per-tool/risk/device analytics — persisted to a Bun-native SQLite store
325
- and served on its own port alongside any transport:
280
+ **Change Plan.** Dry-run a batch of changes, review the exact commands, then apply under
281
+ Safe Mode.
326
282
 
327
- ```bash
328
- mikrotik-mcp serve --dashboard # http://127.0.0.1:9090
329
- ```
283
+ <div align="center">
284
+ <img src="assets/screenshots/dashboard-changeplan.png" alt="Change plan / dry-run" width="820" />
285
+ </div>
286
+
287
+ **S3 Backups.** Off-device backup archive — upload, list, download, delete.
288
+
289
+ <div align="center">
290
+ <img src="assets/screenshots/dashboard-s3-backup.png" alt="S3 backups" width="820" />
291
+ </div>
292
+
293
+ **Backups.** Local backup files kept on the MCP host.
330
294
 
331
- See **[docs/observability.md](docs/observability.md)**.
295
+ <div align="center">
296
+ <img src="assets/screenshots/dashboard-local-backup.png" alt="Local backups" width="820" />
297
+ </div>
298
+
299
+ **Modules.** The full tool catalog by module and risk annotation.
300
+
301
+ <div align="center">
302
+ <img src="assets/screenshots/dashboard-modules.png" alt="Tool modules" width="820" />
303
+ </div>
304
+
305
+ **Config.** Config Studio — edit the config JSON with autocomplete, then safe-apply with
306
+ auto-rollback.
307
+
308
+ <div align="center">
309
+ <img src="assets/screenshots/dashboard-config.png" alt="Config Studio" width="820" />
310
+ </div>
311
+
312
+ **Memory.** Knowledge graph of entities, relations and observations gathered from calls.
313
+
314
+ <div align="center">
315
+ <img src="assets/screenshots/dashboard-memory.png" alt="Memory knowledge graph" width="820" />
316
+ </div>
317
+
318
+ **What's new.** Release notes for the running server version, shown on first launch after
319
+ an upgrade.
320
+
321
+ <div align="center">
322
+ <img src="assets/screenshots/dashboard-whats-new.png" alt="What's new — release notes" width="820" />
323
+ </div>
324
+
325
+ </details>
326
+
327
+ Full reference: **[docs/observability.md](docs/observability.md)**.
328
+
329
+ ## The tool catalog
330
+
331
+ **819 tools across 111 modules.** Full, always-current reference (parameters + risk per
332
+ tool) is generated from source: **[docs/tools-reference.md](docs/tools-reference.md)**.
333
+
334
+ | Group | Tools | Modules |
335
+ | ------------------------ | ----: | ------------------------------------------------------------------------------------------------ |
336
+ | **Interfaces** | 41 | interfaces, VLAN, bridge, wireless, PoE |
337
+ | **Addressing & Routing** | 46 | IP addresses, IP pools, routing, DHCP, DNS |
338
+ | **Dynamic Routing** | 99 | router-id, tables, rules, next-hops, filters, BFD, BGP, OSPF, RIP, PIM-SM, IGMP proxy, GMP, RPKI |
339
+ | **Security** | 34 | firewall filter, NAT, address-lists, certificates, IP services |
340
+ | **VPN & Tunneling** | 96 | WireGuard, IPsec, PPP, L2TP, PPTP, SSTP, OpenVPN, GRE/IPIP/EoIP/VXLAN |
341
+ | **QoS** | 19 | queue types, queue trees, simple queues |
342
+ | **System & Ops** | 102 | system, network tools, scheduler/scripts, users, logs, backup, Safe Mode |
332
343
 
333
344
  ## Beyond the catalog
334
345
 
335
- On top of the per-scope tools, the server ships higher-level workflows:
336
-
337
- - **[Change Plan & Dry-Run](docs/change-plan.md)** — preview intended commands as
338
- a terraform-style plan (risk-scored, lock-out-aware, safely reordered), then
339
- `apply_plan` runs them under Safe Mode, shows the **exact `/export` diff**, and
340
- commits only if the device is still reachable (auto-reverts a lock-out).
341
- - **[Config Snapshots](docs/config-snapshots.md)** — store `/export` snapshots on
342
- the host and **time-travel diff** any two, or one against the live device.
343
- - **[Firewall Audit](docs/firewall-audit.md)** — `firewall_audit` finds shadowed,
344
- overly-broad, missing-default-drop, duplicate and dead rules, risk-scored, with
345
- one-click fixes in MCP App hosts.
346
- - **[Security Hardening](docs/security-hardening.md)** — granular audit+remediate
347
- pairs per risk category (firewall default-deny, address-list enforcement, kernel
348
- IP, IPv6 baseline, SSH, service exposure, helpers, management plane, accounts,
349
- CRL, segmentation, DNS) plus an orchestrator. Every audit is read-only; every
350
- fix defaults to dry-run and snapshots + Safe-Modes before writing, remediating
351
- by explicit `finding_id`.
352
- - **[Port-Scan Detection](docs/port-scan-detection.md)** — detect (never block) six
353
- port-scan signatures (psd, Nmap FIN/NULL/Xmas, SYN/FIN, SYN/RST) by tagging the
354
- source, inside a trust-excluding `detect-portscan` jump-gate; explicit signature
355
- selection, trust-list pre-flight, snapshot + Safe-Mode apply.
356
- - **[Packet Capture Studio](docs/packet-capture.md)** — stream mirrored packets to
357
- the host as TZSP, decode them live in the dashboard, and export `.pcap`.
358
- - **[Discovery](docs/discovery.md)** — `bun run discover` lists MikroTik devices on
359
- the LAN by MAC (MNDP); the dashboard draws a live **topology map**.
360
- - **[Config Studio](docs/config-studio.md)** — edit the config JSON in the
361
- dashboard with autocomplete, validation, and safe-apply auto-rollback.
362
-
363
- ## Schemas
364
-
365
- `schemas/` ships machine-readable JSON Schemas, **generated from the TypeScript
366
- source** (`bun run gen:schemas`) so they can never drift:
367
-
368
- - `schemas/tool-catalog.json` — every tool with risk, description, and input schema
369
- - `schemas/tools/<name>.json` — per-tool input schema
370
- - `schemas/config.schema.json` — the runtime configuration
346
+ Higher-level workflows built on top of the per-scope tools:
371
347
 
372
- ## Documentation
348
+ - **[Change Plan & Dry-Run](docs/change-plan.md)** — preview commands as a
349
+ terraform-style plan, apply under Safe Mode, show the exact `/export` diff, commit
350
+ only if still reachable.
351
+ - **[Config Snapshots](docs/config-snapshots.md)** — store `/export` snapshots and
352
+ time-travel diff any two, or one against the live device.
353
+ - **[Firewall Audit](docs/firewall-audit.md)** — find shadowed, broad, missing-default-drop,
354
+ duplicate and dead rules, risk-scored, with one-click fixes.
355
+ - **[Security Hardening](docs/security-hardening.md)** — per-category audit+remediate
356
+ pairs; audits read-only, fixes dry-run + snapshot + Safe-Mode first.
357
+ - **[Port-Scan Detection](docs/port-scan-detection.md)** · **[Packet Capture Studio](docs/packet-capture.md)** ·
358
+ **[Discovery](docs/discovery.md)** · **[Config Studio](docs/config-studio.md)**.
373
359
 
374
- | Doc | |
375
- | ------------------------------------------------------------- | --------------------------------------------------------------------- |
376
- | [Getting started](docs/getting-started.md) | Install, verify, first run |
377
- | [Configuration](docs/configuration.md) | Every env var & flag |
378
- | [Multiple devices](docs/multi-device.md) | Manage several routers; per-call targeting |
379
- | [Connecting clients](docs/connecting-clients.md) | Claude Desktop, stdio, HTTP |
380
- | [Transports](docs/transports.md) | stdio / HTTP / SSE, DNS-rebinding |
381
- | **[Observability](docs/observability.md)** | Real-time dashboard: live feed + analytics, SQLite |
382
- | [Safe Mode](docs/safe-mode.md) | Transactional changes |
383
- | **[Change Plan & Dry-Run](docs/change-plan.md)** | Preview commands, apply with the exact diff + auto-rollback |
384
- | **[Config Snapshots](docs/config-snapshots.md)** | `/export` snapshots + time-travel diff |
385
- | **[Firewall Audit](docs/firewall-audit.md)** | Shadowed/broad/dead rules, risk-scored |
386
- | **[Security Hardening](docs/security-hardening.md)** | Per-category audit+remediate, fix by finding_id, snapshot + Safe-Mode |
387
- | **[Port-Scan Detection](docs/port-scan-detection.md)** | Detect+tag six scan signatures behind a trust-excluding jump-gate |
388
- | **[CAPsMAN Orchestrator](docs/capsman.md)** | Wi-Fi fabric audit: coverage/co-channel, weak signal, load, FT & HA |
389
- | **[Packet Capture Studio](docs/packet-capture.md)** | Live TZSP capture + pcap export |
390
- | **[Discovery](docs/discovery.md)** | `bun run discover`, MNDP neighbours, topology map |
391
- | **[Config Studio](docs/config-studio.md)** | Edit config in the dashboard with autocomplete |
392
- | **[VPN guide](docs/vpn-guide.md)** | Every tunnel type + how to build it |
393
- | [Prompts](docs/prompts.md) | The 9 guided workflows |
394
- | [Architecture](docs/architecture.md) | How it's built |
395
- | [Security](docs/security.md) | Credentials, risk gating |
396
- | [Tool reference](docs/tools-reference.md) | The full generated catalog |
397
- | [MCP Inspector](docs/inspector.md) | Test tools/prompts in the UI or CLI |
398
- | [Development](docs/development.md) · [Docker](docs/docker.md) | Build, test, deploy |
399
-
400
- ## Development
360
+ ## Built-in prompts
401
361
 
402
- ```bash
403
- bun run test:types # tsc --noEmit
404
- bun test # unit tests
405
- bun run gen # regenerate schemas/ + docs/tools-reference.md from source
406
- bun run build # bundle to dist/
407
- ```
362
+ MCP **prompts** are one-click guided workflows — authored as Markdown in
363
+ [`prompts/`](prompts/), so you can edit or add your own without touching code:
364
+
365
+ `harden-router` · `diagnose-connectivity` · `setup-guest-wifi` ·
366
+ `choose-vpn-solution` · `setup-wireguard-vpn` · `setup-ipsec-site-to-site` ·
367
+ `setup-l2tp-ipsec-roadwarrior` · `setup-tunnel-between-sites` · `backup-and-document`
368
+
369
+ See **[docs/prompts.md](docs/prompts.md)**.
370
+
371
+ ## Transports
372
+
373
+ | Transport | When | Run |
374
+ | ------------------- | --------------------------------- | ---------------------------------------------------------------- |
375
+ | **stdio** (default) | Claude Desktop, local MCP clients | `mikrotik-mcp serve` |
376
+ | **streamable-http** | Remote / shared, behind a proxy | `mikrotik-mcp serve --transport streamable-http --mcp-port 8000` |
377
+ | **sse** | Legacy HTTP clients | `mikrotik-mcp serve --transport sse` |
378
+
379
+ HTTP transports expose `POST /mcp` and `GET /health` with DNS-rebinding protection. See
380
+ **[docs/transports.md](docs/transports.md)**.
381
+
382
+ ## Configuration
383
+
384
+ Settings come from `MIKROTIK_*` env vars or matching CLI flags (defaults → env → flags):
385
+
386
+ | Variable | Flag | Default | Purpose |
387
+ | ----------------------------- | ------------------ | ----------- | ----------------------------------- |
388
+ | `MIKROTIK_HOST` | `--host` | `127.0.0.1` | RouterOS host |
389
+ | `MIKROTIK_USERNAME` | `--username` | `admin` | SSH user |
390
+ | `MIKROTIK_PASSWORD` | `--password` | — | SSH password _(or use a key →)_ |
391
+ | `MIKROTIK_KEY_FILENAME` | `--key-filename` | — | SSH private-key file path |
392
+ | `MIKROTIK_KEY_PASSPHRASE` | `--key-passphrase` | — | Passphrase for an encrypted key |
393
+ | `MIKROTIK_JUMP_HOST` | `--jump-host` | — | SSH bastion to tunnel through |
394
+ | `MIKROTIK_CONFIG_FILE` | `--config` | — | JSON file of named devices |
395
+ | `MIKROTIK_DEVICES` | `--devices` | — | Inline JSON of named devices |
396
+ | `MIKROTIK_MCP__TRANSPORT` | `--transport` | `stdio` | `stdio` / `streamable-http` / `sse` |
397
+ | `MIKROTIK_SSH__KEEP_ALIVE` | `--ssh-keep-alive` | `true` | SSH connection pooling |
398
+ | `MIKROTIK_DASHBOARD__ENABLED` | `--dashboard` | `false` | Real-time observability dashboard |
399
+
400
+ Full table (HTTP host, allow-lists, timeouts, dashboard options, `MIKROTIK_LOG_LEVEL`):
401
+ **[docs/configuration.md](docs/configuration.md)**.
402
+
403
+ ## Documentation
408
404
 
409
- See **[docs/development.md](docs/development.md)** and [CONTRIBUTING.md](CONTRIBUTING.md).
405
+ | Doc | |
406
+ | ------------------------------------------------------------------- | ----------------------------------------------------------- |
407
+ | [Getting started](docs/getting-started.md) | Install, verify, first run |
408
+ | [Configuration](docs/configuration.md) | Every env var & flag |
409
+ | [Multiple devices](docs/multi-device.md) | Manage several routers; per-call targeting |
410
+ | [Connecting clients](docs/connecting-clients.md) | Claude Desktop, stdio, HTTP |
411
+ | **[Observability](docs/observability.md)** | Real-time dashboard: live feed + analytics, SQLite |
412
+ | [Safe Mode](docs/safe-mode.md) | Transactional changes |
413
+ | **[Change Plan & Dry-Run](docs/change-plan.md)** | Preview commands, apply with the exact diff + auto-rollback |
414
+ | **[Firewall Audit](docs/firewall-audit.md)** | Shadowed/broad/dead rules, risk-scored |
415
+ | **[Security Hardening](docs/security-hardening.md)** | Per-category audit+remediate, snapshot + Safe-Mode |
416
+ | **[VPN guide](docs/vpn-guide.md)** | Every tunnel type + how to build it |
417
+ | [Prompts](docs/prompts.md) | The 9 guided workflows |
418
+ | [Architecture](docs/architecture.md) · [Security](docs/security.md) | How it's built · credentials & risk gating |
419
+ | [Tool reference](docs/tools-reference.md) | The full generated catalog |
420
+ | [Development](docs/development.md) · [Docker](docs/docker.md) | Build, test, deploy |
410
421
 
411
422
  ## Security
412
423
 
413
- Talks to RouterOS over SSH using credentials you supply; nothing is sent anywhere
414
- else. Tool values are quoted/escaped to prevent console-command injection.
415
- Destructive and dangerous tools are annotated so clients can require confirmation,
416
- and a plaintext-password-in-a-container warning nudges you toward key files or
417
- secrets. Details: **[docs/security.md](docs/security.md)**. Only point this at
418
- devices you're authorized to manage.
424
+ Talks to RouterOS over SSH using credentials you supply; nothing is sent anywhere else.
425
+ Tool values are quoted/escaped to prevent console-command injection. Destructive tools
426
+ are annotated so clients can require confirmation. Details:
427
+ **[docs/security.md](docs/security.md)**. Only point this at devices you're authorized to manage.
419
428
 
420
429
  ## License
421
430