mikrotik-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MIKROTIK_TLS | No | Whether to use TLS. | true |
| MIKROTIK_HOST | Yes | Router address. Required. | |
| MIKROTIK_PORT | No | 8729 for api-ssl, 8728 for plaintext. | 8729 |
| MIKROTIK_TIMEOUT | No | Timeout in seconds. | 10 |
| MIKROTIK_PASSWORD | No | Router password (optional if the router user has no password). | |
| MIKROTIK_USERNAME | Yes | Required. | |
| MIKROTIK_TLS_FINGERPRINT | No | SHA-256 of the router certificate, to pin it. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| system_infoA | Identity, RouterOS version, model, uptime, CPU and memory for the device. |
| ros_listA | Read any RouterOS configuration path. The escape hatch for everything without a dedicated tool. Read-only: it lists items at a path and cannot modify the device. |
| list_interfacesA | List every interface with its type, MAC, MTU and running state. |
| set_interface_enabledA | Bring an interface up or down. Disabling the interface you are reaching the router through will cut this connection, and nothing here can undo that remotely. |
| list_ip_addressesA | List configured IPv4 addresses and the interfaces they sit on. |
| list_firewall_rulesA | List firewall filter rules in evaluation order. Each rule carries both an |
| get_firewall_ruleA | Every field of one firewall rule, including counters. |
| add_firewall_ruleA | Add a firewall filter rule. Order decides everything in a RouterOS firewall: the first matching
rule wins. A new rule appended after a final |
| update_firewall_ruleA | Change fields on an existing firewall rule. Only the arguments you pass are modified; omitted ones are left alone. Returns the rule as it stands afterwards. |
| set_firewall_rule_enabledA | Enable or disable one firewall rule, leaving its position intact. Disabling is the reversible way to test whether a rule is responsible for something — prefer it over removing the rule. |
| remove_firewall_ruleA | Delete a firewall rule permanently. There is no undo. Disabling a rule ( |
| move_firewall_ruleA | Reorder a firewall rule relative to another rule. Both ends are given by |
| list_nat_rulesA | List NAT rules, including port forwards, in evaluation order. |
| add_nat_ruleA | Add a NAT rule, such as a port forward. A port forward also needs the forward chain to permit the traffic;
check |
| set_nat_rule_enabledB | Enable or disable one NAT rule. |
| remove_nat_ruleA | Delete a NAT rule permanently. Returns the rule that was removed. |
| list_dhcp_leasesA | List DHCP leases — effectively the inventory of what is on the network. |
| make_lease_staticA | Pin a dynamic DHCP lease so the device keeps its address. |
| list_dns_staticA | List static DNS entries and regex overrides. |
| add_dns_staticC | Add a static DNS entry. |
| remove_dns_staticA | Delete a static DNS entry. |
| list_routesC | List the IPv4 routing table. |
| get_logsB | Read the device log, most recent last. |
| connectivity_checkA | Confirm the hub can reach and authenticate to this device. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Each tool targets a distinct resource/action pair, from list_interfaces to move_firewall_rule, so an agent can reliably select the right operation. ros_list is broad but is explicitly framed as a read-only escape hatch, not a competing path.
Most tools follow a clean list_/add_/remove_/set_*_enabled pattern, and the firewall group is especially consistent. A few stragglers like system_info, ros_list, and connectivity_check break the verb-first convention without causing real confusion.
24 tools is at the upper edge of reasonable, but the server spans many distinct MikroTik subsystems: interfaces, firewall, NAT, DHCP, DNS, routes, and logs. Each tool earns a place, and there is little obvious redundancy beyond the intentional ros_list fallback.
Firewall lifecycle is well covered with create, read, update, delete, move, and enable/disable. However, NAT and DNS entries lack update operations, routes are read-only, and ros_list cannot write, so some configuration changes require workarounds or are impossible.