MikroTik MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| create_backupC | Creates a system backup on the MikroTik device. |
| list_backupsC | Lists backup files on the MikroTik device. |
| create_exportC | Creates a configuration export file (rsc/json/xml) on the MikroTik device. |
| export_sectionA | Exports a specific RouterOS configuration section to a file. Notes: section: RouterOS path without leading slash e.g. "ip address", "interface vlan", "ip firewall filter", "ip firewall nat", "queue simple" |
| download_fileA | Downloads a backup or export file from the MikroTik device as base64-encoded content. |
| upload_fileB | Uploads a base64-encoded file to the MikroTik device (for restore operations). |
| restore_backupA | Restores a system backup on the MikroTik device; triggers a reboot. |
| import_configurationC | Imports and executes a RouterOS configuration script (.rsc file) on the device. |
| remove_fileA | Removes a file from the MikroTik device filesystem. |
| backup_infoA | Gets detailed information about a backup file on the MikroTik device. |
| create_dhcp_serverB | Creates a DHCP server bound to the specified interface on the MikroTik device. Notes: lease_time: duration e.g. "1d", "12h", "30m", "1h30m" |
| list_dhcp_serversB | Lists DHCP servers on the MikroTik device. |
| get_dhcp_serverB | Gets detailed information about a specific DHCP server. |
| create_dhcp_networkC | Creates a DHCP network configuration (gateway, DNS, domain, etc.) on the MikroTik device. |
| create_dhcp_poolB | Creates a DHCP address pool with the given IP ranges on the MikroTik device. Notes: ranges: hyphen-separated range(s) e.g. "192.168.1.1-192.168.1.100" Multiple ranges comma-separated: "10.0.0.1-10.0.0.50,10.0.0.100-10.0.0.120" |
| remove_dhcp_serverA | Removes a DHCP server from the MikroTik device. |
| set_dns_serversC | Sets DNS server configuration. |
| get_dns_settingsC | Gets current DNS configuration. |
| add_dns_staticC | Adds a static DNS entry. |
| list_dns_staticB | Lists static DNS entries. |
| get_dns_staticA | Gets details of a specific static DNS entry. |
| update_dns_staticC | Updates a static DNS entry. |
| remove_dns_staticC | Removes a static DNS entry. |
| enable_dns_staticB | Enables a static DNS entry. |
| disable_dns_staticB | Disables a static DNS entry. |
| get_dns_cacheB | Gets the current DNS cache. |
| flush_dns_cacheB | Flushes the DNS cache. |
| get_dns_cache_statisticsC | Gets DNS cache statistics. |
| add_dns_regexpC | Adds a DNS regexp entry. |
| test_dns_queryC | Tests a DNS query. |
| export_dns_configC | Exports DNS configuration to a file. |
| create_filter_ruleA | Creates a firewall filter rule in the specified chain on the MikroTik device. Notes: connection_state: comma-separated e.g. "established,related,new,invalid" limit: RouterOS rate/burst string e.g. "10,5:packet" or "10/1s:packet" tcp_flags: RouterOS flag expression e.g. "syn,!ack" place_before: rule number or ID (*N) to insert before e.g. "0" or "*3" |
| list_filter_rulesC | Lists firewall filter rules on the MikroTik device. |
| get_filter_ruleA | Gets detailed information about a specific firewall filter rule. Notes: rule_id: use the ID from list output e.g. "*1" or "0" |
| update_filter_ruleA | Updates an existing firewall filter rule on the MikroTik device. Notes: rule_id: use the ID from list output e.g. "*1" or "0" connection_state: comma-separated e.g. "established,related" limit: RouterOS rate string e.g. "10,5:packet" tcp_flags: RouterOS flag expression e.g. "syn,!ack" Pass "" to clear an optional field (e.g. src_address=""). |
| remove_filter_ruleA | Removes a firewall filter rule from the MikroTik device. Notes: rule_id: use the ID from list output e.g. "*1" or "0" |
| move_filter_ruleA | Moves a firewall filter rule to a different position in the chain. Notes: rule_id: use the ID from list output e.g. "*1" or "0" destination: 0-based target position index |
| enable_filter_ruleB | Enables a firewall filter rule. |
| disable_filter_ruleB | Disables a firewall filter rule. |
| create_basic_firewall_setupC | Creates a basic firewall setup with common security rules on the MikroTik device. |
| create_nat_ruleB | Creates a NAT rule (srcnat or dstnat) on the MikroTik device. Notes: to_addresses: single IP or range e.g. "10.0.0.1" or "10.0.0.1-10.0.0.10" to_ports: single port or range e.g. "8080" or "8080-8090" place_before: rule number or ID (*N) to insert before e.g. "0" or "*3" |
| list_nat_rulesB | Lists NAT rules on the MikroTik device. |
| get_nat_ruleA | Gets detailed information about a specific NAT rule. Notes: rule_id: use the ID from list output e.g. "*1" or "0" |
| update_nat_ruleA | Updates an existing NAT rule on the MikroTik device. Notes: rule_id: use the ID from list output e.g. "*1" or "0" to_addresses: single IP or range e.g. "10.0.0.1" or "10.0.0.1-10.0.0.10" to_ports: single port or range e.g. "8080" or "8080-8090" Pass "" to clear an optional field. |
| remove_nat_ruleB | Removes a NAT rule from the MikroTik device. Notes: rule_id: use the ID from list output e.g. "*1" or "0" |
| move_nat_ruleA | Moves a NAT rule to a different position in the chain. Notes: rule_id: use the ID from list output e.g. "*1" or "0" destination: 0-based target position index |
| enable_nat_ruleC | Enables a NAT rule. |
| disable_nat_ruleA | Disables a NAT rule. |
| list_interfacesA | Lists all interfaces on the MikroTik device (ethernet, bridge, WireGuard, PPPoE, VLAN, WiFi, SFP, LTE, loopback, and any other type). Notes: type_filter: RouterOS interface type e.g. "ether", "bridge", "vlan", "wg", "pppoe-out", "wifi", "lte", "loopback" name_filter: partial name match e.g. "ether" matches ether1, ether2 … |
| get_interfaceA | Gets detailed information about a specific interface by name. Notes: name: exact interface name e.g. "ether1", "bridge", "pppoe-out1", "wg0" |
| enable_interfaceB | Enables an interface on the MikroTik device. Notes: name: exact interface name e.g. "ether1", "bridge", "pppoe-out1" |
| disable_interfaceB | Disables an interface on the MikroTik device. Notes: name: exact interface name e.g. "ether1", "bridge", "pppoe-out1" |
| list_devicesA | Lists the MikroTik devices this server manages. Use this to discover which devices are available and what their titles are.
Every other tool takes an optional Credentials are never returned. |
| add_ip_addressC | Adds an IP address to an interface on the MikroTik device. |
| list_ip_addressesB | Lists IP addresses on the MikroTik device. |
| get_ip_addressB | Gets detailed information about a specific IP address by ID or address value. |
| remove_ip_addressA | Removes an IP address from the MikroTik device by ID or address value. |
| add_ipv6_addressA | Adds an IPv6 address to an interface on the MikroTik device. Notes:
address: IPv6 address with prefix length, e.g. "2001:db8::1/64" or
"fe80::1/64". When |
| list_ipv6_addressesA | Lists IPv6 addresses on the MikroTik device. Notes: address_filter: partial match on the address, e.g. "2001:db8" or "fe80". global_only: show only global (routable) addresses. link_local_only: show only link-local (fe80::/10) addresses. |
| get_ipv6_addressA | Gets detailed information about a specific IPv6 address by ID or address value. Notes: address_id: a RouterOS internal id (e.g. "*1") or the address value (e.g. "2001:db8::1/64"). |
| remove_ipv6_addressA | Removes an IPv6 address from the MikroTik device by ID or address value. Notes: address_id: a RouterOS internal id (e.g. "*1") or the address value (e.g. "2001:db8::1/64"). |
| create_ip_poolA | Creates an IP pool with the given address ranges on the MikroTik device. Notes: ranges: hyphen-separated range(s) e.g. "192.168.1.1-192.168.1.100" Multiple ranges comma-separated: "10.0.0.1-10.0.0.50,10.0.0.100-10.0.0.120" |
| list_ip_poolsC | Lists IP pools on the MikroTik device. |
| get_ip_poolA | Gets detailed information about a specific IP pool including used address count. |
| update_ip_poolA | Updates an existing IP pool's name, ranges, or next-pool reference. Notes: ranges: hyphen-separated range(s) e.g. "192.168.1.1-192.168.1.100" Multiple ranges comma-separated: "10.0.0.1-10.0.0.50,10.0.0.100-10.0.0.120" Pass "" for next_pool to clear it. |
| remove_ip_poolA | Removes an IP pool from the MikroTik device (fails if pool is in use). |
| list_ip_pool_usedA | Lists currently used (allocated) addresses from IP pools. |
| expand_ip_poolA | Expands an existing IP pool by appending additional address ranges. Notes: additional_ranges: hyphen-separated range(s) e.g. "192.168.1.101-192.168.1.150" Multiple ranges comma-separated: "10.0.0.51-10.0.0.60,10.0.0.70-10.0.0.80" |
| get_logsB | Gets logs from the MikroTik device with optional topic, time, and message filters. |
| get_logs_by_severityB | Gets logs filtered by severity level (debug/info/warning/error/critical). |
| get_logs_by_topicA | Gets logs for a specific topic/facility (system, dhcp, interface, firewall, etc.). |
| search_logsB | Searches log messages for a specific term. |
| get_system_eventsB | Gets system-related log events (login, reboot, config-change, etc.). |
| get_security_logsB | Gets security-related log entries (login failures, blocked connections, etc.). |
| clear_logsB | Clears all logs from the MikroTik device. This action cannot be undone. |
| get_log_statisticsA | Gets log entry counts by topic and severity from the MikroTik device. |
| export_logsB | Exports logs to a file on the MikroTik device with optional topic and time filters. |
| monitor_logsA | Monitors MikroTik logs in near-real-time for a limited duration (max 60s). |
| get_poe_monitorA | Reads real-time Power-over-Ethernet (PoE) monitor data for one or more ethernet interfaces — PoE-out status, voltage, current, and power. Runs Notes: interfaces: comma-separated ethernet interface name(s), e.g. "ether1" or "ether9-ap,ether10-ap,ether11-ap,ether12-ap" |
| list_poeA | Lists the Power-over-Ethernet (PoE) configuration of PoE-capable ethernet interfaces (PoE-out mode, priority). Runs Notes: interface_filter: partial name match, e.g. "ether" matches ether1, ether2 … |
| get_poe_settingsA | Gets the detailed PoE-out settings of a specific ethernet interface (PoE-out mode, priority, voltage, low/high thresholds, …). Runs Notes: name: exact ethernet interface name, e.g. "ether1" |
| create_queue_typeB | Creates a queue type (qdisc). kind selects the discipline (cake, fq-codel, sfq, red, pcq, pfifo, bfifo); remaining params are per-discipline options. Notes: pcq_rate: bandwidth per flow e.g. "1M", "512k" pcq_classifier: comma-separated classifiers e.g. "src-address,dst-address" cake_rtt: round-trip time e.g. "50ms", "100ms" fq_codel_target / fq_codel_interval: time e.g. "5ms", "100ms" |
| list_queue_typesB | Lists queue types on the MikroTik device. |
| get_queue_typeC | Gets detailed information about a specific queue type. |
| update_queue_typeB | Updates an existing queue type's discipline-specific settings. |
| remove_queue_typeB | Removes a queue type from the MikroTik device. |
| create_queue_treeB | Creates a hierarchical queue tree entry attached to a parent interface or queue. Notes: max_limit / limit_at / burst_limit / burst_threshold: bandwidth e.g. "10M", "512k", "1G" burst_time: duration e.g. "8s" parent: interface name e.g. "ether1" or parent queue name priority: 1 (highest) – 8 (lowest) |
| list_queue_treesC | Lists queue trees on the MikroTik device. |
| get_queue_treeA | Gets detailed information about a specific queue tree. |
| update_queue_treeA | Updates an existing queue tree entry (bandwidth limits, parent, priority, etc.). Notes: max_limit / limit_at / burst_limit / burst_threshold: bandwidth e.g. "10M", "512k" burst_time: duration e.g. "8s" priority: 1 (highest) – 8 (lowest) |
| remove_queue_treeB | Removes a queue tree from the MikroTik device. |
| enable_queue_treeC | Enables a queue tree. |
| disable_queue_treeC | Disables a queue tree. |
| create_simple_queueA | Creates a simple queue to rate-limit a target address or interface. Notes: target: IP/CIDR or interface e.g. "192.168.1.0/24" or "ether1" max_limit / limit_at / burst_limit / burst_threshold: upload/download bandwidth as "UL/DL" e.g. "10M/10M", or single value e.g. "10M" burst_time: duration e.g. "8s" priority: 1 (highest) – 8 (lowest) |
| list_simple_queuesB | Lists simple queues on the MikroTik device. |
| get_simple_queueA | Gets detailed information about a specific simple queue. |
| update_simple_queueA | Updates an existing simple queue's rate limits, target, or scheduling settings. Notes: target: IP/CIDR or interface e.g. "192.168.1.0/24" or "ether1" max_limit / limit_at / burst_limit / burst_threshold: upload/download bandwidth as "UL/DL" e.g. "10M/10M", or single value e.g. "10M" burst_time: duration e.g. "8s" priority: 1 (highest) – 8 (lowest) |
| remove_simple_queueB | Removes a simple queue from the MikroTik device. |
| enable_simple_queueC | Enables a simple queue. |
| disable_simple_queueC | Disables a simple queue. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jeff-nasseri/mikrotik-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server