@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.
- package/README.md +292 -283
- package/dist/cli.js +54 -24
- package/dist/index.js +13 -2
- package/dist/shared/{cli-8ecncq7y.js → cli-10wtq3xb.js} +5 -5
- package/dist/shared/{cli-73c3hn9f.js → cli-ps0h2mxx.js} +1 -1
- package/dist/shared/{library-v21pwa2g.js → library-2f8ty72a.js} +5 -5
- package/dist/shared/{library-w7gzvedz.js → library-phwm9kqe.js} +1 -1
- package/dist/ui/aaa.html +1 -1
- package/dist/ui/connected-devices.html +1 -1
- package/dist/ui/dashboard.html +1 -1
- package/dist/ui/firewall-audit.html +1 -1
- package/dist/ui/firewall.html +1 -1
- package/dist/ui/interfaces.html +1 -1
- package/dist/ui/observability.html +56 -56
- package/dist/ui/records.html +1 -1
- package/package.json +14 -14
- package/prompts/setup-eoip-tunnel-between-sites.md +4 -0
- package/prompts/setup-gre-tunnel-between-sites.md +4 -0
- package/prompts/setup-ipip-tunnel-between-sites.md +4 -0
- package/prompts/setup-ipsec-site-to-site.md +4 -0
- package/prompts/setup-l2tp-ipsec-roadwarrior.md +4 -0
- package/prompts/setup-openvpn-tunnel-between-sites.md +4 -0
- package/prompts/setup-sstp-tunnel-between-sites.md +4 -0
- package/prompts/setup-tunnel-between-sites.md +4 -0
- package/prompts/setup-v2ray-container-proxy.md +4 -0
- package/prompts/setup-vxlan-tunnel-between-sites.md +4 -0
- package/prompts/setup-wireguard-tunnel-between-sites.md +4 -0
- package/prompts/setup-wireguard-vpn.md +4 -0
- package/schemas/README.md +5 -5
- package/schemas/config.schema.json +7 -36
- package/schemas/tool-catalog.json +747 -2974
- package/schemas/tools/aaa_mutate.json +2 -10
- package/schemas/tools/add_address_list_entry.json +1 -5
- package/schemas/tools/add_bfd_configuration.json +1 -4
- package/schemas/tools/add_bgp_connection.json +1 -5
- package/schemas/tools/add_bgp_template.json +1 -4
- package/schemas/tools/add_blackhole_route.json +1 -4
- package/schemas/tools/add_bridge_port.json +6 -31
- package/schemas/tools/add_bridge_vlan.json +1 -4
- package/schemas/tools/add_container_env.json +1 -5
- package/schemas/tools/add_container_mount.json +1 -5
- package/schemas/tools/add_default_route.json +1 -5
- package/schemas/tools/add_dhcp_client.json +1 -7
- package/schemas/tools/add_disk.json +1 -3
- package/schemas/tools/add_dns_regexp.json +1 -6
- package/schemas/tools/add_dns_static.json +1 -4
- package/schemas/tools/add_dot1x_client.json +1 -5
- package/schemas/tools/add_dot1x_server.json +3 -13
- package/schemas/tools/add_firewall_default_deny.json +1 -4
- package/schemas/tools/add_graphing_interface.json +1 -3
- package/schemas/tools/add_graphing_queue.json +1 -3
- package/schemas/tools/add_igmp_proxy_interface.json +1 -5
- package/schemas/tools/add_ip_address.json +1 -6
- package/schemas/tools/add_ipv6_address.json +1 -6
- package/schemas/tools/add_ipv6_address_list_entry.json +1 -5
- package/schemas/tools/add_ipv6_default_route.json +1 -4
- package/schemas/tools/add_ipv6_dhcp_binding.json +1 -4
- package/schemas/tools/add_ipv6_dhcp_client.json +3 -15
- package/schemas/tools/add_ipv6_dhcp_option.json +1 -5
- package/schemas/tools/add_ipv6_dhcp_relay.json +1 -6
- package/schemas/tools/add_ipv6_nd.json +2 -9
- package/schemas/tools/add_ipv6_nd_prefix.json +1 -4
- package/schemas/tools/add_ipv6_route.json +2 -10
- package/schemas/tools/add_logging_action.json +2 -12
- package/schemas/tools/add_logging_rule.json +1 -4
- package/schemas/tools/add_netwatch.json +2 -10
- package/schemas/tools/add_ospf_area.json +2 -11
- package/schemas/tools/add_ospf_area_range.json +1 -5
- package/schemas/tools/add_ospf_instance.json +1 -5
- package/schemas/tools/add_ospf_interface_template.json +3 -20
- package/schemas/tools/add_ovpn_server.json +4 -17
- package/schemas/tools/add_pimsm_instance.json +2 -9
- package/schemas/tools/add_pimsm_interface_template.json +1 -5
- package/schemas/tools/add_pimsm_rp.json +1 -5
- package/schemas/tools/add_radius_server.json +1 -4
- package/schemas/tools/add_rip_instance.json +1 -4
- package/schemas/tools/add_rip_interface_template.json +1 -5
- package/schemas/tools/add_rip_static_neighbor.json +1 -4
- package/schemas/tools/add_romon_port.json +1 -4
- package/schemas/tools/add_route.json +1 -5
- package/schemas/tools/add_routing_filter_num_list.json +1 -4
- package/schemas/tools/add_routing_filter_rule.json +1 -5
- package/schemas/tools/add_routing_id.json +1 -4
- package/schemas/tools/add_routing_rule.json +2 -10
- package/schemas/tools/add_routing_table.json +1 -5
- package/schemas/tools/add_rpki_session.json +1 -6
- package/schemas/tools/add_script.json +1 -5
- package/schemas/tools/add_switch_port_isolation.json +1 -4
- package/schemas/tools/add_switch_rule.json +2 -10
- package/schemas/tools/add_traffic_generator_port.json +1 -5
- package/schemas/tools/add_traffic_generator_stream.json +1 -5
- package/schemas/tools/add_traffic_monitor.json +3 -17
- package/schemas/tools/add_user.json +1 -6
- package/schemas/tools/add_user_group.json +1 -4
- package/schemas/tools/add_user_manager_limitation.json +1 -3
- package/schemas/tools/add_user_manager_profile.json +2 -7
- package/schemas/tools/add_user_manager_router.json +1 -6
- package/schemas/tools/add_user_manager_user.json +1 -5
- package/schemas/tools/add_wireguard_peer.json +1 -6
- package/schemas/tools/allow_device.json +1 -3
- package/schemas/tools/apply_capsman_fixes.json +1 -3
- package/schemas/tools/apply_plan.json +1 -3
- package/schemas/tools/apply_security_hardening_fixes.json +1 -4
- package/schemas/tools/apply_traffic_shaping.json +2 -10
- package/schemas/tools/assign_user_manager_profile.json +1 -4
- package/schemas/tools/audit_certificate_expiry.json +1 -3
- package/schemas/tools/audit_fleet.json +2 -9
- package/schemas/tools/audit_remediate.json +2 -9
- package/schemas/tools/backup_info.json +1 -3
- package/schemas/tools/bandwidth_test.json +3 -15
- package/schemas/tools/block_device.json +1 -3
- package/schemas/tools/bootstrap_ipv6_firewall_baseline.json +1 -4
- package/schemas/tools/build_guest_hotspot.json +1 -7
- package/schemas/tools/build_wireguard_mesh.json +1 -4
- package/schemas/tools/capture_config_snapshot.json +1 -5
- package/schemas/tools/change_password.json +1 -4
- package/schemas/tools/check_route_path.json +1 -3
- package/schemas/tools/config_check_drift.json +1 -5
- package/schemas/tools/config_reconcile.json +1 -3
- package/schemas/tools/config_set_baseline.json +1 -4
- package/schemas/tools/correlate_events.json +1 -4
- package/schemas/tools/create_backup.json +1 -4
- package/schemas/tools/create_bridge.json +5 -28
- package/schemas/tools/create_certificate.json +1 -6
- package/schemas/tools/create_dhcp_network.json +1 -4
- package/schemas/tools/create_dhcp_pool.json +1 -4
- package/schemas/tools/create_dhcp_server.json +4 -22
- package/schemas/tools/create_eoip_tunnel.json +3 -17
- package/schemas/tools/create_export.json +3 -17
- package/schemas/tools/create_filter_rule.json +1 -6
- package/schemas/tools/create_gre_tunnel.json +2 -9
- package/schemas/tools/create_ip_pool.json +1 -4
- package/schemas/tools/create_ipip_tunnel.json +2 -9
- package/schemas/tools/create_ipsec_identity.json +4 -21
- package/schemas/tools/create_ipsec_peer.json +2 -10
- package/schemas/tools/create_ipsec_policy.json +3 -15
- package/schemas/tools/create_ipsec_profile.json +1 -5
- package/schemas/tools/create_ipsec_proposal.json +1 -7
- package/schemas/tools/create_ipv6_dhcp_server.json +1 -7
- package/schemas/tools/create_ipv6_filter_rule.json +2 -11
- package/schemas/tools/create_ipv6_mangle_rule.json +2 -13
- package/schemas/tools/create_ipv6_nat_rule.json +2 -10
- package/schemas/tools/create_ipv6_pool.json +1 -5
- package/schemas/tools/create_ipv6_raw_rule.json +3 -19
- package/schemas/tools/create_l2tp_client.json +2 -12
- package/schemas/tools/create_local_backup.json +1 -6
- package/schemas/tools/create_mangle_rule.json +2 -13
- package/schemas/tools/create_nat_rule.json +2 -10
- package/schemas/tools/create_ovpn_client.json +4 -18
- package/schemas/tools/create_ppp_profile.json +6 -30
- package/schemas/tools/create_ppp_secret.json +2 -14
- package/schemas/tools/create_pptp_client.json +1 -7
- package/schemas/tools/create_queue_tree.json +1 -5
- package/schemas/tools/create_queue_type.json +5 -28
- package/schemas/tools/create_scheduler.json +1 -5
- package/schemas/tools/create_simple_queue.json +1 -5
- package/schemas/tools/create_sstp_client.json +2 -11
- package/schemas/tools/create_vlan_interface.json +3 -19
- package/schemas/tools/create_vxlan_tunnel.json +3 -17
- package/schemas/tools/create_wireguard_interface.json +1 -4
- package/schemas/tools/create_wireless_interface.json +6 -37
- package/schemas/tools/create_wireless_security_profile.json +1 -3
- package/schemas/tools/delete_local_backup.json +1 -3
- package/schemas/tools/delete_s3_backup.json +1 -3
- package/schemas/tools/describe_tool.json +1 -3
- package/schemas/tools/design_network_segment.json +1 -10
- package/schemas/tools/diagnose.json +1 -3
- package/schemas/tools/diff_config_snapshots.json +1 -6
- package/schemas/tools/disable_address_list_entry.json +1 -3
- package/schemas/tools/disable_dns_static.json +1 -3
- package/schemas/tools/disable_filter_rule.json +1 -3
- package/schemas/tools/disable_interface.json +1 -3
- package/schemas/tools/disable_ip_service.json +1 -3
- package/schemas/tools/disable_ipv6_address_list_entry.json +1 -3
- package/schemas/tools/disable_ipv6_dhcp_relay.json +1 -3
- package/schemas/tools/disable_ipv6_filter_rule.json +1 -3
- package/schemas/tools/disable_ipv6_mangle_rule.json +1 -3
- package/schemas/tools/disable_ipv6_nat_rule.json +1 -3
- package/schemas/tools/disable_ipv6_raw_rule.json +1 -3
- package/schemas/tools/disable_ipv6_route.json +1 -3
- package/schemas/tools/disable_l2tp_client.json +1 -3
- package/schemas/tools/disable_mangle_rule.json +1 -3
- package/schemas/tools/disable_nat_rule.json +1 -3
- package/schemas/tools/disable_ovpn_client.json +1 -3
- package/schemas/tools/disable_ovpn_server.json +1 -3
- package/schemas/tools/disable_queue_tree.json +1 -3
- package/schemas/tools/disable_radius_server.json +1 -3
- package/schemas/tools/disable_route.json +1 -3
- package/schemas/tools/disable_scheduler.json +1 -3
- package/schemas/tools/disable_simple_queue.json +1 -3
- package/schemas/tools/disable_sstp_client.json +1 -3
- package/schemas/tools/disable_switch_rule.json +1 -3
- package/schemas/tools/disable_traffic_monitor.json +1 -3
- package/schemas/tools/disable_user.json +1 -3
- package/schemas/tools/disable_wireguard_interface.json +1 -3
- package/schemas/tools/disable_wireguard_peer.json +1 -3
- package/schemas/tools/disable_wireless_interface.json +1 -3
- package/schemas/tools/disconnect_ppp_active.json +1 -3
- package/schemas/tools/disconnect_user.json +1 -3
- package/schemas/tools/download_backup_from_s3.json +1 -3
- package/schemas/tools/download_file.json +1 -3
- package/schemas/tools/eject_disk.json +1 -3
- package/schemas/tools/enable_address_list_entry.json +1 -3
- package/schemas/tools/enable_dns_static.json +1 -3
- package/schemas/tools/enable_filter_rule.json +1 -3
- package/schemas/tools/enable_interface.json +1 -3
- package/schemas/tools/enable_ip_service.json +1 -3
- package/schemas/tools/enable_ipv6_address_list_entry.json +1 -3
- package/schemas/tools/enable_ipv6_dhcp_relay.json +1 -3
- package/schemas/tools/enable_ipv6_filter_rule.json +1 -3
- package/schemas/tools/enable_ipv6_mangle_rule.json +1 -3
- package/schemas/tools/enable_ipv6_nat_rule.json +1 -3
- package/schemas/tools/enable_ipv6_raw_rule.json +1 -3
- package/schemas/tools/enable_ipv6_route.json +1 -3
- package/schemas/tools/enable_l2tp_client.json +1 -3
- package/schemas/tools/enable_mangle_rule.json +1 -3
- package/schemas/tools/enable_nat_rule.json +1 -3
- package/schemas/tools/enable_ovpn_client.json +1 -3
- package/schemas/tools/enable_ovpn_server.json +1 -3
- package/schemas/tools/enable_queue_tree.json +1 -3
- package/schemas/tools/enable_radius_server.json +1 -3
- package/schemas/tools/enable_route.json +1 -3
- package/schemas/tools/enable_scheduler.json +1 -3
- package/schemas/tools/enable_simple_queue.json +1 -3
- package/schemas/tools/enable_sstp_client.json +1 -3
- package/schemas/tools/enable_switch_rule.json +1 -3
- package/schemas/tools/enable_traffic_monitor.json +1 -3
- package/schemas/tools/enable_user.json +1 -3
- package/schemas/tools/enable_wireguard_interface.json +1 -3
- package/schemas/tools/enable_wireguard_peer.json +1 -3
- package/schemas/tools/enable_wireless_interface.json +1 -3
- package/schemas/tools/enforce_address_list_blocking.json +1 -4
- package/schemas/tools/expand_ip_pool.json +1 -4
- package/schemas/tools/export_logs.json +2 -7
- package/schemas/tools/export_section.json +1 -5
- package/schemas/tools/export_ssh_host_key.json +1 -3
- package/schemas/tools/find_tools.json +1 -3
- package/schemas/tools/firewall_audit.json +1 -4
- package/schemas/tools/firmware_check.json +2 -8
- package/schemas/tools/firmware_stage.json +1 -5
- package/schemas/tools/firmware_status.json +1 -3
- package/schemas/tools/firmware_upgrade.json +1 -5
- package/schemas/tools/fix_certificate_crl_policy.json +1 -4
- package/schemas/tools/fix_password_policy.json +1 -4
- package/schemas/tools/flood_ping.json +1 -4
- package/schemas/tools/forecast_link_saturation.json +1 -5
- package/schemas/tools/format_disk.json +2 -10
- package/schemas/tools/forward_port.json +2 -10
- package/schemas/tools/generate_hotspot_vouchers.json +1 -5
- package/schemas/tools/get_aaa_section.json +1 -3
- package/schemas/tools/get_address_list_entry.json +1 -3
- package/schemas/tools/get_bgp_connection.json +1 -3
- package/schemas/tools/get_bridge.json +1 -3
- package/schemas/tools/get_certificate.json +1 -3
- package/schemas/tools/get_config_snapshot.json +1 -4
- package/schemas/tools/get_device_traffic.json +1 -3
- package/schemas/tools/get_dhcp_client.json +1 -3
- package/schemas/tools/get_dhcp_server.json +1 -3
- package/schemas/tools/get_disk.json +1 -3
- package/schemas/tools/get_dns_static.json +1 -3
- package/schemas/tools/get_dot1x_client.json +1 -3
- package/schemas/tools/get_dot1x_server.json +1 -3
- package/schemas/tools/get_eoip_tunnel.json +1 -3
- package/schemas/tools/get_filter_rule.json +1 -3
- package/schemas/tools/get_gre_tunnel.json +1 -3
- package/schemas/tools/get_interface.json +1 -3
- package/schemas/tools/get_ip_address.json +1 -3
- package/schemas/tools/get_ip_pool.json +1 -3
- package/schemas/tools/get_ip_service.json +1 -3
- package/schemas/tools/get_ipip_tunnel.json +1 -3
- package/schemas/tools/get_ipsec_peer.json +1 -3
- package/schemas/tools/get_ipsec_profile.json +1 -3
- package/schemas/tools/get_ipsec_proposal.json +1 -3
- package/schemas/tools/get_ipv6_address.json +1 -3
- package/schemas/tools/get_ipv6_address_list_entry.json +1 -3
- package/schemas/tools/get_ipv6_dhcp_client.json +1 -3
- package/schemas/tools/get_ipv6_dhcp_relay.json +1 -3
- package/schemas/tools/get_ipv6_dhcp_server.json +1 -3
- package/schemas/tools/get_ipv6_filter_rule.json +1 -3
- package/schemas/tools/get_ipv6_mangle_rule.json +1 -3
- package/schemas/tools/get_ipv6_nat_rule.json +1 -3
- package/schemas/tools/get_ipv6_nd.json +1 -3
- package/schemas/tools/get_ipv6_neighbor.json +1 -3
- package/schemas/tools/get_ipv6_pool.json +1 -3
- package/schemas/tools/get_ipv6_raw_rule.json +1 -3
- package/schemas/tools/get_ipv6_route.json +1 -3
- package/schemas/tools/get_l2tp_client.json +1 -3
- package/schemas/tools/get_local_backup.json +1 -3
- package/schemas/tools/get_logs.json +2 -9
- package/schemas/tools/get_logs_by_severity.json +2 -10
- package/schemas/tools/get_logs_by_topic.json +1 -3
- package/schemas/tools/get_mangle_rule.json +1 -3
- package/schemas/tools/get_nat_rule.json +1 -3
- package/schemas/tools/get_netwatch.json +1 -3
- package/schemas/tools/get_ovpn_client.json +1 -3
- package/schemas/tools/get_poe_monitor.json +1 -3
- package/schemas/tools/get_poe_settings.json +1 -3
- package/schemas/tools/get_port.json +1 -3
- package/schemas/tools/get_ppp_profile.json +1 -3
- package/schemas/tools/get_ppp_secret.json +1 -3
- package/schemas/tools/get_pptp_client.json +1 -3
- package/schemas/tools/get_queue_interface.json +1 -3
- package/schemas/tools/get_queue_tree.json +1 -3
- package/schemas/tools/get_queue_type.json +1 -3
- package/schemas/tools/get_radius_server.json +1 -3
- package/schemas/tools/get_route.json +1 -3
- package/schemas/tools/get_routing_id.json +1 -3
- package/schemas/tools/get_routing_rule.json +1 -3
- package/schemas/tools/get_routing_table.json +1 -4
- package/schemas/tools/get_routing_table_def.json +1 -3
- package/schemas/tools/get_scheduler.json +1 -3
- package/schemas/tools/get_simple_queue.json +1 -3
- package/schemas/tools/get_sstp_client.json +1 -3
- package/schemas/tools/get_switch.json +1 -3
- package/schemas/tools/get_switch_port.json +1 -3
- package/schemas/tools/get_switch_port_isolation.json +1 -3
- package/schemas/tools/get_switch_rule.json +1 -3
- package/schemas/tools/get_traffic_monitor.json +1 -3
- package/schemas/tools/get_user.json +1 -3
- package/schemas/tools/get_user_group.json +1 -3
- package/schemas/tools/get_user_manager_user.json +1 -3
- package/schemas/tools/get_vlan_interface.json +1 -3
- package/schemas/tools/get_vxlan_tunnel.json +1 -3
- package/schemas/tools/get_wireguard_interface.json +1 -3
- package/schemas/tools/get_wireguard_peer.json +1 -3
- package/schemas/tools/get_wireless_interface.json +1 -3
- package/schemas/tools/get_wireless_security_profile.json +1 -3
- package/schemas/tools/harden_connection_tracking_helpers.json +1 -4
- package/schemas/tools/harden_dns_resolver_exposure.json +1 -4
- package/schemas/tools/harden_firewall.json +1 -6
- package/schemas/tools/harden_ip_service_exposure.json +1 -4
- package/schemas/tools/harden_kernel_ip_settings.json +1 -4
- package/schemas/tools/harden_management_plane_exposure.json +1 -4
- package/schemas/tools/harden_ssh_service.json +1 -4
- package/schemas/tools/import_certificate.json +1 -3
- package/schemas/tools/import_configuration.json +1 -5
- package/schemas/tools/import_ssh_host_key.json +1 -3
- package/schemas/tools/invoke_tool.json +1 -3
- package/schemas/tools/ip_scan.json +1 -3
- package/schemas/tools/list_address_lists.json +1 -3
- package/schemas/tools/list_backups.json +1 -3
- package/schemas/tools/list_bfd_sessions.json +1 -3
- package/schemas/tools/list_bgp_sessions.json +1 -3
- package/schemas/tools/list_config_snapshots.json +1 -3
- package/schemas/tools/list_connected_devices.json +1 -4
- package/schemas/tools/list_containers.json +1 -3
- package/schemas/tools/list_dhcp_servers.json +1 -4
- package/schemas/tools/list_disks.json +1 -3
- package/schemas/tools/list_dns_static.json +1 -4
- package/schemas/tools/list_dot1x_clients.json +1 -3
- package/schemas/tools/list_dot1x_servers.json +1 -3
- package/schemas/tools/list_filter_rules.json +1 -5
- package/schemas/tools/list_graphing.json +2 -8
- package/schemas/tools/list_interfaces.json +1 -4
- package/schemas/tools/list_ip_addresses.json +1 -4
- package/schemas/tools/list_ip_pools.json +1 -3
- package/schemas/tools/list_ipv6_address_lists.json +1 -3
- package/schemas/tools/list_ipv6_addresses.json +1 -5
- package/schemas/tools/list_ipv6_dhcp_bindings.json +1 -3
- package/schemas/tools/list_ipv6_dhcp_clients.json +1 -4
- package/schemas/tools/list_ipv6_dhcp_relays.json +1 -3
- package/schemas/tools/list_ipv6_dhcp_servers.json +1 -4
- package/schemas/tools/list_ipv6_filter_rules.json +1 -5
- package/schemas/tools/list_ipv6_mangle_rules.json +1 -5
- package/schemas/tools/list_ipv6_nat_rules.json +1 -5
- package/schemas/tools/list_ipv6_nd.json +1 -3
- package/schemas/tools/list_ipv6_nd_prefixes.json +1 -3
- package/schemas/tools/list_ipv6_neighbors.json +1 -3
- package/schemas/tools/list_ipv6_raw_rules.json +1 -5
- package/schemas/tools/list_ipv6_routes.json +1 -5
- package/schemas/tools/list_mangle_rules.json +1 -5
- package/schemas/tools/list_nat_rules.json +1 -4
- package/schemas/tools/list_ppp_secrets.json +1 -8
- package/schemas/tools/list_queue_trees.json +1 -4
- package/schemas/tools/list_routes.json +1 -6
- package/schemas/tools/list_routing_nexthops.json +1 -3
- package/schemas/tools/list_routing_rules.json +1 -3
- package/schemas/tools/list_s3_backups.json +1 -3
- package/schemas/tools/list_simple_queues.json +1 -4
- package/schemas/tools/list_switch_rules.json +1 -3
- package/schemas/tools/list_traffic_monitors.json +1 -3
- package/schemas/tools/list_user_manager_sessions.json +1 -3
- package/schemas/tools/list_user_ssh_keys.json +1 -3
- package/schemas/tools/list_users.json +1 -4
- package/schemas/tools/list_vlan_interfaces.json +1 -3
- package/schemas/tools/list_wireguard_interfaces.json +1 -4
- package/schemas/tools/list_wireguard_peers.json +1 -3
- package/schemas/tools/list_wireless_interfaces.json +1 -4
- package/schemas/tools/make_device_static.json +1 -3
- package/schemas/tools/memory_add_observations.json +2 -7
- package/schemas/tools/memory_create_entities.json +2 -7
- package/schemas/tools/memory_create_relations.json +2 -8
- package/schemas/tools/memory_delete_entities.json +1 -3
- package/schemas/tools/memory_delete_observations.json +2 -7
- package/schemas/tools/memory_delete_relations.json +2 -8
- package/schemas/tools/memory_open_nodes.json +1 -3
- package/schemas/tools/memory_search_nodes.json +1 -3
- package/schemas/tools/mirror_traffic_to_capture.json +2 -12
- package/schemas/tools/monitor_logs.json +1 -3
- package/schemas/tools/move_filter_rule.json +1 -4
- package/schemas/tools/move_ipv6_filter_rule.json +1 -4
- package/schemas/tools/move_ipv6_mangle_rule.json +1 -4
- package/schemas/tools/move_ipv6_nat_rule.json +1 -4
- package/schemas/tools/move_ipv6_raw_rule.json +1 -4
- package/schemas/tools/move_mangle_rule.json +1 -4
- package/schemas/tools/move_nat_rule.json +1 -4
- package/schemas/tools/onboard_wireguard_user.json +1 -8
- package/schemas/tools/packet_capture_status.json +1 -3
- package/schemas/tools/ping.json +1 -4
- package/schemas/tools/profile_cpu.json +1 -3
- package/schemas/tools/reboot_system.json +1 -3
- package/schemas/tools/release_ipv6_dhcp_client.json +1 -3
- package/schemas/tools/remove_address_list_entry.json +1 -3
- package/schemas/tools/remove_bfd_configuration.json +1 -3
- package/schemas/tools/remove_bgp_connection.json +1 -3
- package/schemas/tools/remove_bgp_template.json +1 -3
- package/schemas/tools/remove_bridge.json +1 -3
- package/schemas/tools/remove_bridge_port.json +1 -3
- package/schemas/tools/remove_certificate.json +1 -3
- package/schemas/tools/remove_config_snapshot.json +1 -3
- package/schemas/tools/remove_container_env.json +1 -4
- package/schemas/tools/remove_container_mount.json +1 -3
- package/schemas/tools/remove_device_lease.json +1 -3
- package/schemas/tools/remove_dhcp_client.json +1 -3
- package/schemas/tools/remove_dhcp_server.json +1 -3
- package/schemas/tools/remove_disk.json +1 -3
- package/schemas/tools/remove_dns_static.json +1 -3
- package/schemas/tools/remove_dot1x_client.json +1 -3
- package/schemas/tools/remove_dot1x_server.json +1 -3
- package/schemas/tools/remove_eoip_tunnel.json +1 -3
- package/schemas/tools/remove_file.json +1 -3
- package/schemas/tools/remove_filter_rule.json +1 -3
- package/schemas/tools/remove_graphing.json +2 -9
- package/schemas/tools/remove_gre_tunnel.json +1 -3
- package/schemas/tools/remove_igmp_proxy_interface.json +1 -3
- package/schemas/tools/remove_ip_address.json +1 -3
- package/schemas/tools/remove_ip_pool.json +1 -3
- package/schemas/tools/remove_ipip_tunnel.json +1 -3
- package/schemas/tools/remove_ipsec_identity.json +1 -3
- package/schemas/tools/remove_ipsec_peer.json +1 -3
- package/schemas/tools/remove_ipsec_policy.json +1 -3
- package/schemas/tools/remove_ipsec_profile.json +1 -3
- package/schemas/tools/remove_ipsec_proposal.json +1 -3
- package/schemas/tools/remove_ipv6_address.json +1 -3
- package/schemas/tools/remove_ipv6_address_list_entry.json +1 -3
- package/schemas/tools/remove_ipv6_dhcp_binding.json +1 -3
- package/schemas/tools/remove_ipv6_dhcp_client.json +1 -3
- package/schemas/tools/remove_ipv6_dhcp_option.json +1 -3
- package/schemas/tools/remove_ipv6_dhcp_relay.json +1 -3
- package/schemas/tools/remove_ipv6_dhcp_server.json +1 -3
- package/schemas/tools/remove_ipv6_filter_rule.json +1 -3
- package/schemas/tools/remove_ipv6_mangle_rule.json +1 -3
- package/schemas/tools/remove_ipv6_nat_rule.json +1 -3
- package/schemas/tools/remove_ipv6_nd.json +1 -3
- package/schemas/tools/remove_ipv6_nd_prefix.json +1 -3
- package/schemas/tools/remove_ipv6_neighbor.json +1 -3
- package/schemas/tools/remove_ipv6_pool.json +1 -3
- package/schemas/tools/remove_ipv6_raw_rule.json +1 -3
- package/schemas/tools/remove_ipv6_route.json +1 -3
- package/schemas/tools/remove_l2tp_client.json +1 -3
- package/schemas/tools/remove_logging_action.json +1 -3
- package/schemas/tools/remove_logging_rule.json +1 -3
- package/schemas/tools/remove_mangle_rule.json +1 -3
- package/schemas/tools/remove_nat_rule.json +1 -3
- package/schemas/tools/remove_netwatch.json +1 -3
- package/schemas/tools/remove_ospf_area.json +1 -3
- package/schemas/tools/remove_ospf_area_range.json +1 -3
- package/schemas/tools/remove_ospf_instance.json +1 -3
- package/schemas/tools/remove_ospf_interface_template.json +1 -3
- package/schemas/tools/remove_ovpn_client.json +1 -3
- package/schemas/tools/remove_ovpn_server.json +1 -3
- package/schemas/tools/remove_pimsm_instance.json +1 -3
- package/schemas/tools/remove_pimsm_interface_template.json +1 -3
- package/schemas/tools/remove_pimsm_rp.json +1 -3
- package/schemas/tools/remove_ppp_profile.json +1 -3
- package/schemas/tools/remove_ppp_secret.json +1 -3
- package/schemas/tools/remove_pptp_client.json +1 -3
- package/schemas/tools/remove_queue_tree.json +1 -3
- package/schemas/tools/remove_queue_type.json +1 -3
- package/schemas/tools/remove_radius_server.json +1 -3
- package/schemas/tools/remove_rip_instance.json +1 -3
- package/schemas/tools/remove_rip_interface_template.json +1 -3
- package/schemas/tools/remove_rip_static_neighbor.json +1 -3
- package/schemas/tools/remove_romon_port.json +1 -3
- package/schemas/tools/remove_route.json +1 -3
- package/schemas/tools/remove_routing_filter_num_list.json +1 -3
- package/schemas/tools/remove_routing_filter_rule.json +1 -3
- package/schemas/tools/remove_routing_id.json +1 -3
- package/schemas/tools/remove_routing_rule.json +1 -3
- package/schemas/tools/remove_routing_table.json +1 -3
- package/schemas/tools/remove_rpki_session.json +1 -3
- package/schemas/tools/remove_scheduler.json +1 -3
- package/schemas/tools/remove_script.json +1 -3
- package/schemas/tools/remove_simple_queue.json +1 -3
- package/schemas/tools/remove_sstp_client.json +1 -3
- package/schemas/tools/remove_switch_port_isolation.json +1 -3
- package/schemas/tools/remove_switch_rule.json +1 -3
- package/schemas/tools/remove_threat_feed.json +1 -3
- package/schemas/tools/remove_time_policy.json +1 -3
- package/schemas/tools/remove_traffic_generator_port.json +1 -3
- package/schemas/tools/remove_traffic_generator_stream.json +1 -3
- package/schemas/tools/remove_traffic_monitor.json +1 -3
- package/schemas/tools/remove_user.json +1 -3
- package/schemas/tools/remove_user_group.json +1 -3
- package/schemas/tools/remove_user_manager_limitation.json +1 -3
- package/schemas/tools/remove_user_manager_profile.json +1 -3
- package/schemas/tools/remove_user_manager_router.json +1 -3
- package/schemas/tools/remove_user_manager_user.json +1 -3
- package/schemas/tools/remove_user_ssh_key.json +1 -3
- package/schemas/tools/remove_vlan_interface.json +1 -3
- package/schemas/tools/remove_vxlan_tunnel.json +1 -3
- package/schemas/tools/remove_wireguard_interface.json +1 -3
- package/schemas/tools/remove_wireguard_peer.json +1 -3
- package/schemas/tools/remove_wireless_access_list_entry.json +1 -3
- package/schemas/tools/remove_wireless_interface.json +1 -3
- package/schemas/tools/remove_wireless_security_profile.json +1 -3
- package/schemas/tools/rename_local_backup.json +1 -4
- package/schemas/tools/renew_dhcp_client.json +1 -4
- package/schemas/tools/renew_ipv6_dhcp_client.json +1 -3
- package/schemas/tools/request_letsencrypt_certificate.json +1 -3
- package/schemas/tools/reset_configuration.json +1 -3
- package/schemas/tools/resolve_dns.json +1 -3
- package/schemas/tools/restore_backup.json +1 -3
- package/schemas/tools/restore_local_backup.json +1 -4
- package/schemas/tools/revoke_wireguard_user.json +1 -3
- package/schemas/tools/run_capsman_audit.json +1 -7
- package/schemas/tools/run_compliance_audit.json +2 -9
- package/schemas/tools/run_failover_drill.json +2 -11
- package/schemas/tools/run_routeros_command.json +1 -3
- package/schemas/tools/run_script.json +1 -3
- package/schemas/tools/s3_backup_info.json +1 -3
- package/schemas/tools/save_sniffer.json +1 -3
- package/schemas/tools/scan_wireless_networks.json +1 -4
- package/schemas/tools/search_logs.json +1 -4
- package/schemas/tools/send_sms.json +1 -5
- package/schemas/tools/set_aaa_settings.json +2 -8
- package/schemas/tools/set_bfd_configuration_enabled.json +1 -4
- package/schemas/tools/set_bgp_connection_enabled.json +1 -4
- package/schemas/tools/set_device_ip.json +1 -4
- package/schemas/tools/set_device_label.json +1 -4
- package/schemas/tools/set_device_limits.json +1 -3
- package/schemas/tools/set_dhcp_client.json +1 -3
- package/schemas/tools/set_disk.json +1 -3
- package/schemas/tools/set_dns_servers.json +1 -6
- package/schemas/tools/set_igmp_proxy_interface_enabled.json +1 -4
- package/schemas/tools/set_ip_cloud_advanced.json +1 -3
- package/schemas/tools/set_ip_service.json +1 -3
- package/schemas/tools/set_l2tp_server.json +2 -9
- package/schemas/tools/set_leds_settings.json +1 -6
- package/schemas/tools/set_neighbor_discovery_settings.json +1 -5
- package/schemas/tools/set_ntp_client.json +1 -6
- package/schemas/tools/set_ovpn_server.json +3 -12
- package/schemas/tools/set_port.json +3 -13
- package/schemas/tools/set_routing_filter_rule_enabled.json +1 -4
- package/schemas/tools/set_routing_id_enabled.json +1 -4
- package/schemas/tools/set_routing_rule_enabled.json +1 -4
- package/schemas/tools/set_routing_table_enabled.json +1 -4
- package/schemas/tools/set_rpki_session_enabled.json +1 -4
- package/schemas/tools/set_ssh_settings.json +2 -10
- package/schemas/tools/set_sstp_server.json +1 -4
- package/schemas/tools/set_system_identity.json +1 -3
- package/schemas/tools/set_time_policy.json +1 -7
- package/schemas/tools/set_user_ssh_keys.json +1 -4
- package/schemas/tools/set_wireless_security_profile.json +1 -4
- package/schemas/tools/setup_port_knock.json +1 -7
- package/schemas/tools/setup_wan_failover.json +2 -11
- package/schemas/tools/setup_wan_loadbalance.json +2 -10
- package/schemas/tools/share_disk.json +1 -3
- package/schemas/tools/shutdown_system.json +1 -3
- package/schemas/tools/sign_certificate.json +1 -3
- package/schemas/tools/speed_test.json +1 -4
- package/schemas/tools/start_packet_capture.json +1 -4
- package/schemas/tools/steer_client.json +2 -8
- package/schemas/tools/subscribe_threat_feed.json +1 -8
- package/schemas/tools/suggest_fix.json +1 -3
- package/schemas/tools/test_dns_query.json +1 -4
- package/schemas/tools/test_ssh_from_device.json +1 -6
- package/schemas/tools/test_ssh_to_host.json +1 -6
- package/schemas/tools/trace_path.json +1 -5
- package/schemas/tools/traceroute.json +1 -4
- package/schemas/tools/tune_wifi_channel.json +1 -5
- package/schemas/tools/update_bfd_configuration.json +1 -3
- package/schemas/tools/update_bgp_connection.json +1 -3
- package/schemas/tools/update_bridge.json +5 -26
- package/schemas/tools/update_dns_static.json +1 -3
- package/schemas/tools/update_dot1x_client.json +1 -3
- package/schemas/tools/update_dot1x_server.json +3 -12
- package/schemas/tools/update_filter_rule.json +1 -3
- package/schemas/tools/update_igmp_proxy_interface.json +1 -3
- package/schemas/tools/update_ip_pool.json +1 -3
- package/schemas/tools/update_ipsec_peer.json +2 -8
- package/schemas/tools/update_ipsec_profile.json +1 -3
- package/schemas/tools/update_ipsec_proposal.json +1 -3
- package/schemas/tools/update_ipv6_filter_rule.json +1 -3
- package/schemas/tools/update_ipv6_mangle_rule.json +1 -3
- package/schemas/tools/update_ipv6_nat_rule.json +1 -3
- package/schemas/tools/update_ipv6_nd.json +2 -8
- package/schemas/tools/update_ipv6_pool.json +1 -3
- package/schemas/tools/update_ipv6_raw_rule.json +1 -3
- package/schemas/tools/update_ipv6_settings.json +3 -15
- package/schemas/tools/update_mac_ping.json +1 -3
- package/schemas/tools/update_mac_server.json +1 -3
- package/schemas/tools/update_mac_winbox.json +1 -3
- package/schemas/tools/update_mangle_rule.json +1 -3
- package/schemas/tools/update_nat_rule.json +1 -3
- package/schemas/tools/update_ospf_instance.json +1 -3
- package/schemas/tools/update_ovpn_server.json +4 -15
- package/schemas/tools/update_ppp_profile.json +6 -30
- package/schemas/tools/update_ppp_secret.json +2 -11
- package/schemas/tools/update_queue_interface.json +1 -4
- package/schemas/tools/update_queue_tree.json +1 -3
- package/schemas/tools/update_queue_type.json +1 -3
- package/schemas/tools/update_radius_server.json +2 -7
- package/schemas/tools/update_rip_instance.json +1 -3
- package/schemas/tools/update_route.json +1 -3
- package/schemas/tools/update_routing_filter_rule.json +1 -3
- package/schemas/tools/update_routing_id.json +1 -3
- package/schemas/tools/update_routing_rule.json +2 -9
- package/schemas/tools/update_routing_settings.json +2 -10
- package/schemas/tools/update_routing_table.json +1 -3
- package/schemas/tools/update_rpki_session.json +1 -3
- package/schemas/tools/update_simple_queue.json +1 -3
- package/schemas/tools/update_sniffer_settings.json +2 -9
- package/schemas/tools/update_switch.json +1 -3
- package/schemas/tools/update_switch_port.json +3 -14
- package/schemas/tools/update_switch_port_isolation.json +1 -3
- package/schemas/tools/update_switch_rule.json +2 -8
- package/schemas/tools/update_traffic_monitor.json +3 -12
- package/schemas/tools/update_user.json +1 -3
- package/schemas/tools/update_user_group.json +1 -3
- package/schemas/tools/update_user_manager_user.json +1 -3
- package/schemas/tools/update_vlan_interface.json +3 -14
- package/schemas/tools/update_wireguard_interface.json +1 -3
- package/schemas/tools/update_wireguard_peer.json +1 -3
- package/schemas/tools/update_wireless_interface.json +6 -36
- package/schemas/tools/upload_backup_to_s3.json +1 -3
- package/schemas/tools/upload_file.json +1 -4
- 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>
|
|
4
|
-
Firewall · routing · DHCP/DNS · wireless · QoS ·
|
|
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`
|
|
18
|
-
tools
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
48
|
-
|
|
49
|
-
- 🧰 **
|
|
50
|
-
|
|
51
|
-
certificates), QoS
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
#
|
|
74
|
+
# Requires Bun ≥ 1.3 — https://bun.sh
|
|
79
75
|
bun add -g @usex/mikrotik-mcp
|
|
80
76
|
|
|
81
|
-
#
|
|
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
|
-
#
|
|
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
|
-
**
|
|
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
|
-
|
|
110
|
-
|
|
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
|
-
|
|
117
|
-
bun
|
|
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
|
-
|
|
102
|
+
Full options: **[docs/configuration.md](docs/configuration.md)** · MCPB details:
|
|
103
|
+
**[docs/getting-started.md](docs/getting-started.md)**.
|
|
123
104
|
|
|
124
|
-
|
|
125
|
-
needed on the machine, and the router credentials are entered in the host's UI
|
|
126
|
-
rather than a shell.
|
|
105
|
+
## Simple usage — by scenario
|
|
127
106
|
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
153
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
168
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
148
|
+
### 🖧 Manage several routers at once
|
|
183
149
|
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
221
|
-
|
|
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
|
-
|
|
225
|
-
|
|
197
|
+
<div align="center">
|
|
198
|
+
<img src="assets/screenshots/dashboard-overview.png" alt="Observability dashboard — overview" width="820" />
|
|
199
|
+
</div>
|
|
226
200
|
|
|
227
|
-
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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
|
-
|
|
234
|
-
|
|
235
|
-
|
|
221
|
+
<div align="center">
|
|
222
|
+
<img src="assets/screenshots/dashboard-devices.png" alt="Observability dashboard — devices & connectivity" width="820" />
|
|
223
|
+
</div>
|
|
236
224
|
|
|
237
|
-
|
|
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
|
-
|
|
231
|
+
<details>
|
|
232
|
+
<summary><b>📸 Every dashboard screen (14 screenshots)</b></summary>
|
|
240
233
|
|
|
241
|
-
|
|
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
|
-
|
|
248
|
-
|
|
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
|
-
|
|
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
|
-
|
|
254
|
-
|
|
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
|
-
|
|
260
|
-
|
|
261
|
-
|
|
246
|
+
<div align="center">
|
|
247
|
+
<img src="assets/screenshots/dashboard-clients.png" alt="Clients" width="820" />
|
|
248
|
+
</div>
|
|
262
249
|
|
|
263
|
-
|
|
264
|
-
mikrotik-mcp serve --ssh-idle-timeout 60000
|
|
265
|
-
```
|
|
250
|
+
**RADIUS & User Manager.** Servers, sessions, profiles, limitations and vouchers.
|
|
266
251
|
|
|
267
|
-
|
|
252
|
+
<div align="center">
|
|
253
|
+
<img src="assets/screenshots/dashboard-radius-um.png" alt="RADIUS & User Manager" width="820" />
|
|
254
|
+
</div>
|
|
268
255
|
|
|
269
|
-
|
|
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
|
-
|
|
280
|
-
|
|
258
|
+
<div align="center">
|
|
259
|
+
<img src="assets/screenshots/dashboard-topology.png" alt="Topology map" width="820" />
|
|
260
|
+
</div>
|
|
281
261
|
|
|
282
|
-
|
|
262
|
+
**Packets.** Packet captures started from the dashboard, with status and download.
|
|
283
263
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
```
|
|
264
|
+
<div align="center">
|
|
265
|
+
<img src="assets/screenshots/dashboard-packets.png" alt="Packet capture" width="820" />
|
|
266
|
+
</div>
|
|
288
267
|
|
|
289
|
-
|
|
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
|
-
|
|
270
|
+
<div align="center">
|
|
271
|
+
<img src="assets/screenshots/dashboard-snapshots.png" alt="Config snapshots" width="820" />
|
|
272
|
+
</div>
|
|
295
273
|
|
|
296
|
-
|
|
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
|
-
|
|
276
|
+
<div align="center">
|
|
277
|
+
<img src="assets/screenshots/dashboard-drift-guard.png" alt="Drift Guard" width="820" />
|
|
278
|
+
</div>
|
|
321
279
|
|
|
322
|
-
|
|
323
|
-
|
|
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
|
-
|
|
328
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
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
|
-
|
|
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
|
-
|
|
415
|
-
|
|
416
|
-
|
|
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
|
|