@usex/mikrotik-mcp 1.0.0 → 2.1.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 +23 -8
- package/dist/cli.js +8571 -2330
- package/dist/index.d.ts +42 -2
- package/dist/index.js +7798 -2226
- package/dist/ui/dashboard.html +19 -0
- package/dist/ui/firewall.html +20 -0
- package/dist/ui/interfaces.html +20 -0
- package/dist/ui/observability.html +27 -0
- package/dist/ui/records.html +20 -0
- package/package.json +63 -50
- package/schemas/README.md +1 -1
- package/schemas/config.schema.json +112 -21
- package/schemas/tool-catalog.json +11783 -5555
- package/schemas/tools/add_dot1x_client.json +42 -0
- package/schemas/tools/add_dot1x_server.json +60 -0
- package/schemas/tools/add_graphing_interface.json +23 -0
- package/schemas/tools/add_graphing_queue.json +22 -0
- package/schemas/tools/add_graphing_resource.json +14 -0
- package/schemas/tools/add_ipv6_address.json +43 -0
- package/schemas/tools/add_ipv6_address_list_entry.json +32 -0
- package/schemas/tools/add_ipv6_default_route.json +34 -0
- package/schemas/tools/add_ipv6_dhcp_binding.json +42 -0
- package/schemas/tools/add_ipv6_dhcp_client.json +69 -0
- package/schemas/tools/add_ipv6_dhcp_option.json +29 -0
- package/schemas/tools/add_ipv6_dhcp_relay.json +35 -0
- package/schemas/tools/add_ipv6_nd.json +68 -0
- package/schemas/tools/add_ipv6_nd_prefix.json +35 -0
- package/schemas/tools/add_ipv6_route.json +64 -0
- package/schemas/tools/add_romon_port.json +34 -0
- package/schemas/tools/add_switch_port_isolation.json +23 -0
- package/schemas/tools/add_switch_rule.json +96 -0
- package/schemas/tools/add_traffic_generator_port.json +23 -0
- package/schemas/tools/add_traffic_generator_stream.json +39 -0
- package/schemas/tools/add_traffic_monitor.json +54 -0
- package/schemas/tools/create_ipv6_dhcp_server.json +60 -0
- package/schemas/tools/create_ipv6_filter_rule.json +103 -0
- package/schemas/tools/create_ipv6_mangle_rule.json +110 -0
- package/schemas/tools/create_ipv6_nat_rule.json +88 -0
- package/schemas/tools/create_ipv6_pool.json +29 -0
- package/schemas/tools/create_ipv6_raw_rule.json +78 -0
- package/schemas/tools/delete_s3_backup.json +15 -0
- package/schemas/tools/disable_ipv6_address_list_entry.json +15 -0
- package/schemas/tools/disable_ipv6_dhcp_relay.json +14 -0
- package/schemas/tools/disable_ipv6_filter_rule.json +14 -0
- package/schemas/tools/disable_ipv6_mangle_rule.json +14 -0
- package/schemas/tools/disable_ipv6_nat_rule.json +14 -0
- package/schemas/tools/disable_ipv6_raw_rule.json +14 -0
- package/schemas/tools/disable_ipv6_route.json +14 -0
- package/schemas/tools/disable_switch_rule.json +14 -0
- package/schemas/tools/disable_traffic_monitor.json +14 -0
- package/schemas/tools/download_backup_from_s3.json +25 -0
- package/schemas/tools/enable_ipv6_address_list_entry.json +15 -0
- package/schemas/tools/enable_ipv6_dhcp_relay.json +14 -0
- package/schemas/tools/enable_ipv6_filter_rule.json +14 -0
- package/schemas/tools/enable_ipv6_mangle_rule.json +14 -0
- package/schemas/tools/enable_ipv6_nat_rule.json +14 -0
- package/schemas/tools/enable_ipv6_raw_rule.json +14 -0
- package/schemas/tools/enable_ipv6_route.json +14 -0
- package/schemas/tools/enable_switch_rule.json +14 -0
- package/schemas/tools/enable_traffic_monitor.json +14 -0
- package/schemas/tools/flood_ping.json +37 -0
- package/schemas/tools/get_bandwidth_server.json +7 -0
- package/schemas/tools/get_dot1x_client.json +15 -0
- package/schemas/tools/get_dot1x_server.json +15 -0
- package/schemas/tools/get_ipv6_address.json +15 -0
- package/schemas/tools/get_ipv6_address_list_entry.json +15 -0
- package/schemas/tools/get_ipv6_dhcp_client.json +15 -0
- package/schemas/tools/get_ipv6_dhcp_relay.json +14 -0
- package/schemas/tools/get_ipv6_dhcp_server.json +14 -0
- package/schemas/tools/get_ipv6_filter_rule.json +15 -0
- package/schemas/tools/get_ipv6_mangle_rule.json +15 -0
- package/schemas/tools/get_ipv6_nat_rule.json +15 -0
- package/schemas/tools/get_ipv6_nd.json +15 -0
- package/schemas/tools/get_ipv6_neighbor.json +15 -0
- package/schemas/tools/get_ipv6_pool.json +14 -0
- package/schemas/tools/get_ipv6_raw_rule.json +15 -0
- package/schemas/tools/get_ipv6_route.json +15 -0
- package/schemas/tools/get_ipv6_settings.json +7 -0
- package/schemas/tools/get_mac_ping.json +7 -0
- package/schemas/tools/get_mac_server.json +7 -0
- package/schemas/tools/get_mac_winbox.json +7 -0
- package/schemas/tools/get_queue_interface.json +15 -0
- package/schemas/tools/get_romon.json +7 -0
- package/schemas/tools/get_sms_settings.json +7 -0
- package/schemas/tools/get_sniffer_settings.json +7 -0
- package/schemas/tools/get_switch.json +15 -0
- package/schemas/tools/get_switch_port.json +15 -0
- package/schemas/tools/get_switch_port_isolation.json +15 -0
- package/schemas/tools/get_switch_rule.json +15 -0
- package/schemas/tools/get_traffic_monitor.json +14 -0
- package/schemas/tools/ip_scan.json +26 -0
- package/schemas/tools/list_bandwidth_server_sessions.json +12 -0
- package/schemas/tools/list_dot1x_clients.json +22 -0
- package/schemas/tools/list_dot1x_servers.json +18 -0
- package/schemas/tools/list_graphing.json +20 -0
- package/schemas/tools/list_ipv6_address_lists.json +24 -0
- package/schemas/tools/list_ipv6_addresses.json +31 -0
- package/schemas/tools/list_ipv6_dhcp_bindings.json +21 -0
- package/schemas/tools/list_ipv6_dhcp_clients.json +27 -0
- package/schemas/tools/list_ipv6_dhcp_options.json +11 -0
- package/schemas/tools/list_ipv6_dhcp_relays.json +21 -0
- package/schemas/tools/list_ipv6_dhcp_servers.json +26 -0
- package/schemas/tools/list_ipv6_filter_rules.json +43 -0
- package/schemas/tools/list_ipv6_mangle_rules.json +37 -0
- package/schemas/tools/list_ipv6_nat_rules.json +37 -0
- package/schemas/tools/list_ipv6_nd.json +18 -0
- package/schemas/tools/list_ipv6_nd_prefixes.json +21 -0
- package/schemas/tools/list_ipv6_neighbors.json +29 -0
- package/schemas/tools/list_ipv6_pool_used.json +12 -0
- package/schemas/tools/list_ipv6_pools.json +14 -0
- package/schemas/tools/list_ipv6_raw_rules.json +37 -0
- package/schemas/tools/list_ipv6_routes.json +34 -0
- package/schemas/tools/list_mac_server_sessions.json +11 -0
- package/schemas/tools/list_queue_interfaces.json +16 -0
- package/schemas/tools/list_romon_ports.json +11 -0
- package/schemas/tools/list_s3_backups.json +22 -0
- package/schemas/tools/list_sms_inbox.json +12 -0
- package/schemas/tools/list_sniffer_connections.json +7 -0
- package/schemas/tools/list_sniffer_hosts.json +11 -0
- package/schemas/tools/list_sniffer_packets.json +15 -0
- package/schemas/tools/list_sniffer_protocols.json +7 -0
- package/schemas/tools/list_switch_port_isolation.json +12 -0
- package/schemas/tools/list_switch_ports.json +16 -0
- package/schemas/tools/list_switch_rules.json +21 -0
- package/schemas/tools/list_switches.json +16 -0
- package/schemas/tools/list_traffic_generator_ports.json +11 -0
- package/schemas/tools/list_traffic_generator_streams.json +14 -0
- package/schemas/tools/list_traffic_monitors.json +21 -0
- package/schemas/tools/move_ipv6_filter_rule.json +21 -0
- package/schemas/tools/move_ipv6_mangle_rule.json +21 -0
- package/schemas/tools/move_ipv6_nat_rule.json +21 -0
- package/schemas/tools/move_ipv6_raw_rule.json +21 -0
- package/schemas/tools/profile_cpu.json +22 -0
- package/schemas/tools/release_ipv6_dhcp_client.json +14 -0
- package/schemas/tools/remove_dot1x_client.json +15 -0
- package/schemas/tools/remove_dot1x_server.json +15 -0
- package/schemas/tools/remove_graphing.json +24 -0
- package/schemas/tools/remove_ipv6_address.json +14 -0
- package/schemas/tools/remove_ipv6_address_list_entry.json +15 -0
- package/schemas/tools/remove_ipv6_dhcp_binding.json +15 -0
- package/schemas/tools/remove_ipv6_dhcp_client.json +14 -0
- package/schemas/tools/remove_ipv6_dhcp_option.json +14 -0
- package/schemas/tools/remove_ipv6_dhcp_relay.json +14 -0
- package/schemas/tools/remove_ipv6_dhcp_server.json +14 -0
- package/schemas/tools/remove_ipv6_filter_rule.json +14 -0
- package/schemas/tools/remove_ipv6_mangle_rule.json +14 -0
- package/schemas/tools/remove_ipv6_nat_rule.json +14 -0
- package/schemas/tools/remove_ipv6_nd.json +15 -0
- package/schemas/tools/remove_ipv6_nd_prefix.json +15 -0
- package/schemas/tools/remove_ipv6_neighbor.json +15 -0
- package/schemas/tools/remove_ipv6_pool.json +14 -0
- package/schemas/tools/remove_ipv6_raw_rule.json +14 -0
- package/schemas/tools/remove_ipv6_route.json +15 -0
- package/schemas/tools/remove_romon_port.json +15 -0
- package/schemas/tools/remove_switch_port_isolation.json +15 -0
- package/schemas/tools/remove_switch_rule.json +14 -0
- package/schemas/tools/remove_traffic_generator_port.json +15 -0
- package/schemas/tools/remove_traffic_generator_stream.json +15 -0
- package/schemas/tools/remove_traffic_monitor.json +14 -0
- package/schemas/tools/renew_ipv6_dhcp_client.json +14 -0
- package/schemas/tools/s3_backup_info.json +15 -0
- package/schemas/tools/s3_backup_status.json +7 -0
- package/schemas/tools/save_sniffer.json +15 -0
- package/schemas/tools/send_sms.json +34 -0
- package/schemas/tools/show_firewall_filter.json +7 -0
- package/schemas/tools/show_interfaces.json +7 -0
- package/schemas/tools/show_system_dashboard.json +7 -0
- package/schemas/tools/speed_test.json +47 -0
- package/schemas/tools/start_sniffer.json +7 -0
- package/schemas/tools/start_traffic_generator.json +14 -0
- package/schemas/tools/stop_sniffer.json +7 -0
- package/schemas/tools/stop_traffic_generator.json +7 -0
- package/schemas/tools/update_bandwidth_server.json +24 -0
- package/schemas/tools/update_dot1x_client.json +36 -0
- package/schemas/tools/update_dot1x_server.json +54 -0
- package/schemas/tools/update_ipv6_filter_rule.json +77 -0
- package/schemas/tools/update_ipv6_mangle_rule.json +80 -0
- package/schemas/tools/update_ipv6_nat_rule.json +65 -0
- package/schemas/tools/update_ipv6_nd.json +64 -0
- package/schemas/tools/update_ipv6_pool.json +28 -0
- package/schemas/tools/update_ipv6_raw_rule.json +59 -0
- package/schemas/tools/update_ipv6_settings.json +35 -0
- package/schemas/tools/update_mac_ping.json +15 -0
- package/schemas/tools/update_mac_server.json +15 -0
- package/schemas/tools/update_mac_winbox.json +15 -0
- package/schemas/tools/update_queue_interface.json +20 -0
- package/schemas/tools/update_romon.json +19 -0
- package/schemas/tools/update_sms_settings.json +30 -0
- package/schemas/tools/update_sniffer_settings.json +39 -0
- package/schemas/tools/update_switch.json +34 -0
- package/schemas/tools/update_switch_port.json +39 -0
- package/schemas/tools/update_switch_port_isolation.json +22 -0
- package/schemas/tools/update_switch_rule.json +83 -0
- package/schemas/tools/update_traffic_monitor.json +46 -0
- package/schemas/tools/upload_backup_to_s3.json +25 -0
- package/schemas/tools/wake_on_lan.json +19 -0
package/README.md
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
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
|
|
3
|
+
<p><strong>A Bun-native MCP server that turns one or more MikroTik routers into 640 tools your AI can drive.</strong><br/>
|
|
4
4
|
Firewall · routing · DHCP/DNS · wireless · QoS · and a complete VPN suite — over SSH, with transactional Safe Mode.</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>
|
|
8
8
|
<img alt="Runtime: Bun" src="https://img.shields.io/badge/runtime-Bun%20%E2%89%A5%201.3-06B6D4.svg">
|
|
9
9
|
<img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-strict-6366F1.svg">
|
|
10
|
-
<img alt="MCP" src="https://img.shields.io/badge/MCP-
|
|
10
|
+
<img alt="MCP" src="https://img.shields.io/badge/MCP-640%20tools-1F2937.svg">
|
|
11
11
|
<a href="docs/"><img alt="Docs" src="https://img.shields.io/badge/docs-reference-7C3AED.svg"></a>
|
|
12
12
|
</p>
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
`@usex/mikrotik-mcp` exposes **MikroTik RouterOS** as **
|
|
17
|
+
`@usex/mikrotik-mcp` exposes **MikroTik RouterOS** as **640 [Model Context Protocol](https://modelcontextprotocol.io)
|
|
18
18
|
tools across 51 modules**, so an AI client (Claude Desktop, Claude Code, any MCP
|
|
19
19
|
client) can read and configure your router in plain language. It speaks to the
|
|
20
20
|
device over **SSH** — no agent, no API package to install on RouterOS — runs on
|
|
@@ -46,7 +46,7 @@ in memory and auto-reverts if your session drops, so you can't lock yourself out
|
|
|
46
46
|
|
|
47
47
|
## Why it's different
|
|
48
48
|
|
|
49
|
-
- 🧰 **Breadth** —
|
|
49
|
+
- 🧰 **Breadth** — 640 tools covering the whole device: L2 (bridge, VLAN, wireless,
|
|
50
50
|
PoE), L3 (addressing, routing, DHCP, DNS), security (firewall, NAT, address-lists,
|
|
51
51
|
certificates), QoS (queues), and system ops (users, logs, backups, scheduler).
|
|
52
52
|
- 🔐 **A complete VPN suite** — WireGuard, IPsec (IKEv1/IKEv2), L2TP, PPTP, SSTP,
|
|
@@ -87,7 +87,7 @@ mikrotik-mcp serve
|
|
|
87
87
|
against the server (from source):
|
|
88
88
|
|
|
89
89
|
```bash
|
|
90
|
-
bun run inspect # opens the Inspector UI to browse/run all
|
|
90
|
+
bun run inspect # opens the Inspector UI to browse/run all 640 tools
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
**Prefer SSH keys over a password?** Point the server at a key file instead — and
|
|
@@ -115,7 +115,7 @@ bun run build # bundle to dist/
|
|
|
115
115
|
|
|
116
116
|
## The tool catalog
|
|
117
117
|
|
|
118
|
-
**
|
|
118
|
+
**640 tools across 51 modules.** Full, always-current reference (parameters +
|
|
119
119
|
risk per tool) is generated from source: **[docs/tools-reference.md](docs/tools-reference.md)**.
|
|
120
120
|
|
|
121
121
|
| Group | Tools | Modules |
|
|
@@ -233,16 +233,30 @@ flags (highest precedence last: defaults → env → flags).
|
|
|
233
233
|
| `MIKROTIK_DEVICES` | `--devices` | — | Inline JSON of named devices |
|
|
234
234
|
| `MIKROTIK_MCP__TRANSPORT` | `--transport` | `stdio` | `stdio` / `streamable-http` / `sse` |
|
|
235
235
|
| `MIKROTIK_MCP__PORT` | `--mcp-port` | `8000` | HTTP bind port |
|
|
236
|
+
| `MIKROTIK_DASHBOARD__ENABLED` | `--dashboard` | `false` | Real-time observability dashboard ([docs](docs/observability.md)) |
|
|
236
237
|
|
|
237
238
|
Full table (incl. HTTP host, allow-lists, timeouts, `MIKROTIK_LOG_LEVEL`):
|
|
238
239
|
**[docs/configuration.md](docs/configuration.md)**.
|
|
239
240
|
|
|
241
|
+
### Observability dashboard (optional)
|
|
242
|
+
|
|
243
|
+
A localhost-only web dashboard that intercepts **every** tool call the LLM makes
|
|
244
|
+
— live feed of inputs/outputs (secrets redacted), latency percentiles, error
|
|
245
|
+
rate and per-tool/risk/device analytics — persisted to a Bun-native SQLite store
|
|
246
|
+
and served on its own port alongside any transport:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
mikrotik-mcp serve --dashboard # → http://127.0.0.1:9090
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
See **[docs/observability.md](docs/observability.md)**.
|
|
253
|
+
|
|
240
254
|
## Schemas
|
|
241
255
|
|
|
242
256
|
`schemas/` ships machine-readable JSON Schemas, **generated from the TypeScript
|
|
243
257
|
source** (`bun run gen:schemas`) so they can never drift:
|
|
244
258
|
|
|
245
|
-
- `schemas/tool-catalog.json` — all
|
|
259
|
+
- `schemas/tool-catalog.json` — all 640 tools with risk, description, and input schema
|
|
246
260
|
- `schemas/tools/<name>.json` — per-tool input schema
|
|
247
261
|
- `schemas/config.schema.json` — the runtime configuration
|
|
248
262
|
|
|
@@ -255,12 +269,13 @@ source** (`bun run gen:schemas`) so they can never drift:
|
|
|
255
269
|
| [Multiple devices](docs/multi-device.md) | Manage several routers; per-call targeting |
|
|
256
270
|
| [Connecting clients](docs/connecting-clients.md) | Claude Desktop, stdio, HTTP |
|
|
257
271
|
| [Transports](docs/transports.md) | stdio / HTTP / SSE, DNS-rebinding |
|
|
272
|
+
| **[Observability](docs/observability.md)** | Real-time dashboard: live feed + analytics, SQLite |
|
|
258
273
|
| [Safe Mode](docs/safe-mode.md) | Transactional changes |
|
|
259
274
|
| **[VPN guide](docs/vpn-guide.md)** | Every tunnel type + how to build it |
|
|
260
275
|
| [Prompts](docs/prompts.md) | The 9 guided workflows |
|
|
261
276
|
| [Architecture](docs/architecture.md) | How it's built |
|
|
262
277
|
| [Security](docs/security.md) | Credentials, risk gating |
|
|
263
|
-
| [Tool reference](docs/tools-reference.md) | All
|
|
278
|
+
| [Tool reference](docs/tools-reference.md) | All 640 tools |
|
|
264
279
|
| [MCP Inspector](docs/inspector.md) | Test tools/prompts in the UI or CLI |
|
|
265
280
|
| [Development](docs/development.md) · [Docker](docs/docker.md) | Build, test, deploy |
|
|
266
281
|
|