Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MIKROMCP_PORTNoHTTP transport port3000
MIKROMCP_CMD_DENYNoGlobal denylist patterns for run_command
MIKROMCP_DATA_DIRNoSnapshots and write-journal directory~/.mikromcp/data
MIKROMCP_BIND_HOSTNoHTTP bind address127.0.0.1
MIKROMCP_CMD_ALLOWNoGlobal allowlist patterns for run_command
MIKROMCP_TRANSPORTNoTransport mode: stdio or httpstdio
MIKROMCP_CONFIG_PATHNoPath to router registry YAML~/.mikromcp/routers.yaml
MIKROMCP_AUDIT_LOG_PATHNoOptional NDJSON audit log file path
MIKROMCP_STDIO_IDENTITYNoNamed identity for stdio modebuilt-in superadmin
MIKROMCP_IDENTITIES_PATHNoPath to identities and bearer-token registry~/.mikromcp/identities.yaml
MIKROMCP_CONFIRMATION_SECRETNoHMAC secret for destructive-action confirmation tokens
MIKROMCP_HTTP_MAX_BODY_BYTESNoHTTP request body cap (bytes)1048576
MIKROMCP_HTTP_RATE_LIMIT_RPMNoRequests per minute per IP; 0 disables60
MIKROMCP_SSH_MAX_OUTPUT_BYTESNoSSH output cap in bytes524288
MIKROMCP_SSH_COMMAND_TIMEOUT_MSNoSSH command timeout in milliseconds30000

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_system_statusA

Retrieve system status information from a MikroTik router including resource usage, identity, license, routerboard details, health sensors, and clock.

list_interfacesA

List network interfaces on a MikroTik router with optional filtering by type and status. Supports pagination and optional traffic counters.

create_vlanA

Create a new VLAN interface on a MikroTik router. Performs idempotency checks: if a VLAN with the same name already exists with matching configuration, returns success without changes. Supports dry-run mode.

manage_ip_addressA

Add, update, or remove an IP address on a MikroTik router interface. Performs idempotency checks for add operations and supports dry-run mode for all actions.

list_dhcp_leasesA

List DHCP leases on a MikroTik router with optional filtering by server, status, and MAC address. Supports pagination.

list_routesA

List static routes on a MikroTik router with optional filtering by active status and dynamic status. Supports pagination.

manage_routeA

Add or remove a static route on a MikroTik router. Performs idempotency checks for add operations and supports dry-run mode for all actions.

list_firewall_rulesA

List firewall rules from the filter or nat table on a MikroTik router. Supports filtering by chain and disabled state, with pagination.

manage_firewall_ruleA

Add, remove, disable, or enable a firewall rule on a MikroTik router. Uses comment as idempotency key for deduplication and identification. Supports dry-run mode.

pingA

Send ICMP echo requests from the router to a target address. Returns per-packet RTT and summary statistics. 100% packet loss is a valid result, not an error.

tracerouteA

Trace the network path from the router to a target address. Returns an ordered hop list with RTT per hop. Timeouts and partial results are valid responses.

torchA

Capture a real-time traffic snapshot on a router interface. The tool call blocks for the duration (seconds) and returns top flows by bytes. readOnlyHint true — auto-retry enabled.

get_logA

Read and filter the system log from a MikroTik router. Supports filtering by topic, message prefix, and a time window (last N minutes). Entries with unparseable timestamps are included conservatively.

get_system_clockA

Read the current date, time, and timezone from a MikroTik router. Focused single-purpose alternative to the clock section in get_system_status.

set_system_clockA

Set the system date, time, and/or timezone on a MikroTik router. Idempotent: returns already_set if the values already match. Supports dry-run.

rebootA

Trigger a controlled router reboot with an optional delay. Supports dry-run. Use this tool instead of run_command for reboots — run_command's deny list blocks /system reboot*.

run_commandA

Execute an arbitrary RouterOS console command via SSH. Protected by a configurable allow/deny policy — built-in deny list blocks destructive commands; optionally restrict further with an explicit allow list (cmdAllow in routers.yaml or MIKROMCP_CMD_ALLOW). Use dedicated tools (reboot, etc.) for controlled operations. Output capped at 4000 characters.

list_bridgesA

List bridge interfaces and their port members on a MikroTik router.

manage_bridgeA

Create or remove a bridge interface on a MikroTik router. Idempotent: create returns already_exists if bridge with same name exists.

manage_bridge_portA

Add or remove an interface from a bridge on a MikroTik router. Idempotent: add returns already_exists if the port assignment already exists.

list_wifi_interfacesA

List WiFi/wireless interfaces on a MikroTik router. Uses /interface/wifi on ROS 7.x, /interface/wireless on older versions.

list_wifi_clientsA

List currently connected WiFi clients (stations) with signal strength and transfer rates.

manage_wifi_interfaceA

Enable, disable, or update SSID settings on a WiFi interface. At least one of disabled or ssid must be provided.

list_wireguard_interfacesA

List WireGuard interfaces and their status on a MikroTik router.

list_wireguard_peersA

List WireGuard peers with last handshake time and transfer statistics.

manage_wireguard_peerA

Add or remove a WireGuard peer. Idempotent by public key: add returns already_exists if a peer with the same public key already exists on the interface.

list_dns_entriesB

List static DNS entries on a MikroTik router with optional filtering by name and type.

manage_dns_entryA

Add or remove a static DNS entry. Idempotent by name+type: add returns already_exists if the same record already exists.

get_dns_settingsA

Read DNS resolver configuration: upstream servers, cache size, cache TTL, and whether remote DNS requests are allowed.

list_mangle_rulesA

List firewall mangle rules on a MikroTik router in evaluation order. Supports filtering by chain, action, and disabled state.

manage_mangle_ruleA

Add, remove, enable, or disable a firewall mangle rule. Uses comment as idempotency key. Supports dry-run mode.

list_address_list_entriesA

List firewall address list entries on a MikroTik router. Supports filtering by list name and address.

manage_address_list_entryA

Add or remove a firewall address list entry. Idempotent by list name + address. Supports dry-run mode.

list_routing_rulesA

List policy routing rules on a MikroTik router in evaluation order. Supports filtering by table and disabled state.

manage_routing_ruleA

Add, remove, enable, or disable a policy routing rule. Idempotent by srcAddress+dstAddress+interface+table composite key. Supports dry-run mode.

list_routing_tablesB

List custom routing tables on a MikroTik router.

manage_routing_tableA

Create or remove a custom routing table. Idempotent by table name. Supports dry-run mode.

list_bgp_peersA

List BGP sessions on a MikroTik router (RouterOS 7+). Returns state, remote AS, prefix counts, and uptime.

list_ospf_neighborsA

List OSPF neighbors on a MikroTik router (RouterOS 7+). Returns neighbor state, interface, DR/BDR, and uptime.

list_scriptsA

List RouterOS scripts on a MikroTik router. Supports optional name filter.

manage_scriptA

Add, update, or remove a RouterOS script. Idempotent by name. add throws CONFLICT if the name already exists; update throws NOT_FOUND if it does not. Supports dry-run.

run_scriptA

Execute a named RouterOS script. Fire-and-forget — the script runs asynchronously and its output is written to the router system log. Use get_log after calling this tool to see results.

list_scheduled_jobsA

List RouterOS scheduler entries on a MikroTik router with next-run time, interval, and disabled state.

manage_scheduled_jobA

Add, update, remove, enable, or disable a RouterOS scheduler entry. Idempotent by name. add throws CONFLICT if name exists; update throws NOT_FOUND if it does not. Supports dry-run.

list_packagesA

List installed RouterOS packages with version and enabled status.

manage_packageA

Enable or disable a RouterOS package. Changes take effect only after a router reboot — use the reboot tool to apply. Idempotent: no-op if already in the target state.

list_filesA

List files on a MikroTik router filesystem. Supports filtering by name and type.

get_file_contentA

Read a text file's contents from a MikroTik router. Only suitable for text files — binary files will return garbled content.

upload_fileA

Upload a text file to a MikroTik router via FTP using the router's credentials. Overwrites any existing file with the same name. Requires FTP permission on the router user — see config/routers.example.yaml for setup instructions. Supports dry-run (tests FTP connectivity only).

list_containersA

List RouterOS container instances with status, image, and network information.

manage_containerA

Create, start, stop, or remove a RouterOS container. create requires a pre-configured veth interface. start/stop are no-ops if the container is already in the target state. remove throws NOT_FOUND if the container does not exist. Supports dry-run.

list_ipsec_peersA

List IPSec peers on a MikroTik router.

list_ipsec_policiesA

List IPSec policies on a MikroTik router.

manage_ipsec_peerA

Add, remove, enable, or disable an IPSec peer. Idempotent by name: add returns already_exists if a peer with the same name and address already exists.

list_certificatesA

List certificates on a MikroTik router.

manage_certificateB

Remove, trust, or untrust a certificate. Idempotent: trust/untrust return early if already in the target state.

list_usersA

List local users on a MikroTik router. Passwords are never returned.

manage_userA

Add, remove, enable, disable, or set the password for a local RouterOS user. Idempotent by name: add returns already_exists if a user with the same name and group already exists.

list_dhcp_serversB

List DHCP servers on a MikroTik router.

manage_dhcp_serverA

Add, remove, enable, or disable a DHCP server. Idempotent by name: add returns already_exists if a server with the same name, interface, and address pool already exists.

list_dhcp_poolsA

List IP pools on a MikroTik router.

manage_dhcp_poolA

Add or remove an IP pool. Idempotent by name: add returns already_exists if a pool with the same name and ranges already exists.

list_queuesA

List simple queues on a MikroTik router.

manage_queueA

Add, remove, enable, or disable a simple queue. Idempotent by name: add returns already_exists if a queue with the same name and target already exists.

list_vrrp_instancesA

List VRRP instances on a MikroTik router.

manage_vrrp_instanceA

Add, remove, enable, or disable a VRRP instance. Idempotent by name: add returns already_exists if an instance with the same name, interface, and VRID already exists.

get_snmp_settingsB

Retrieve SNMP settings from a MikroTik router.

get_ntp_settingsA

Retrieve NTP client settings from a MikroTik router.

list_netwatch_entriesB

List Netwatch monitoring entries on a MikroTik router.

manage_netwatch_entryA

Add, remove, enable, or disable a Netwatch monitoring entry. Idempotent by host+port: add returns already_exists if an entry with the same host and port already exists.

list_neighborsB

List discovered neighbors (CDP/LLDP/MNDP) on a MikroTik router.

list_arp_entriesB

List ARP table entries on a MikroTik router.

plan_changesA

Preview a sequence of write operations without applying them. Each step is run with dryRun=true against the live router state. Returns the current state of affected RouterOS paths plus the predicted action for each step. Use apply_plan to execute the same steps for real.

apply_planA

Execute a sequence of write operations in order. Stops on the first failure. Each step is snapshotted and journaled individually. Requires a confirmationToken for non-admin identities (same two-step flow as other destructive tools). Use rollback_change with any resulting journal IDs to undo individual steps.

rollback_changeA

Restore the RouterOS state to what it was before a write, identified by its journal ID. Reads the before-snapshot from disk, computes the diff against live state, and applies the reverse diff. Use dryRun=true to preview the restore plan without applying. Requires MIKROMCP_DATA_DIR (or defaults to data/) to be configured.

check_router_healthA

Probe a router by fetching system/resource. Returns health status, ROS version, uptime, CPU load, and memory info. Unlike other tools, this never throws — unreachable routers are reported as healthy=false.

bulk_executeA

Fan out a single-router tool to multiple routers in parallel (up to concurrency at a time). Target routers via explicit routerIds or by tag. Destructive tools are not allowed. Returns per-router results with succeeded/failed counts.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/AliKarami/MikroMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server