1. Conduid
  2. Science
  3. Mikrotik Routeros MCP
MCP server · Science

Mikrotik Routeros MCP

MCP server for MikroTik RouterOS with 24 tools for multi-device management, transport fallback, and guarded write access.

Unclaimed Apache-2.0 mcpmikrotiknetworkpythonrouteros
34Low

Scored a month ago · breakdown

About Mikrotik Routeros MCP

Mikrotik Routeros MCP is an MCP server published by drohi-r in the Science category: mCP server for MikroTik RouterOS with 24 tools for multi-device management, transport fallback, and guarded write access.

The repository has 1 stars and 0 forks, with the last commit 2 months ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/drohi-r/mikrotik-routeros-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (3)

describe_deviceReturn detailed info for a named device

Parameters not published.

get_server_configReturn current MCP server configuration and safety settings

Parameters not published.

list_devicesList all configured RouterOS devices

Parameters not published.

Ask AI

✦

Ask AI about Mikrotik Routeros MCP

Powered by Claude · Grounded in docs

I know everything about Mikrotik Routeros MCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 4 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.

1 check has not been run yet.

Releases

v0.2.0v0.2.0 — Safe-Mode Write Engine · 19 Aug 2026Every write is now lockout-proof. `apply_script_change` runs a pipeline no other RouterOS MCP has: 1. Snapshot — full config export saved locally before anything is sent 2. Safe Mode — the change applies inside a real RouterOS Safe Mode…

README

MikroTik RouterOS MCP

An MCP server for MikroTik RouterOS with a lightweight web dashboard for multi-router management. Exposes 26 MCP tools covering transport fallback (API → API-SSL → SSH), read-heavy network inspection, and guarded write access, while the bundled dashboard provides a simple REST-backed UI for viewing routers and common network state.

Quick start

git clone https://github.com/drohi-r/mikrotik-routeros-mcp && cd mikrotik-routeros-mcp
uv sync

# Configure devices
cp devices.yaml.example devices.yaml   # then edit with your router details

# Run the MCP server
uv run python -m mikrotik_routeros_mcp.server

# Or run the web dashboard
uv run python -m mikrotik_routeros_mcp.dashboard --host 0.0.0.0 --port 8080

The server looks for config in this order: MIKROTIK_ROUTEROS_CONFIG env var → ./devices.yaml → ./devices.yml → ./devices.json.

Architecture

graph TD
    A["MikroTik RouterOS MCP Server<br/><code>mikrotik_routeros_mcp</code><br/>26 tools · safe-mode writes"] --> B
    B["Transport Layer<br/>Fallback: API → API-SSL → SSH"] --> C
    C["RouterOS Devices<br/>Named targets from devices.yaml"]

    D["Multi-Device Config<br/>Named routers · tags · per-device write control"] -.-> A
    E["Safe-Mode Write Engine<br/>snapshot → apply → health check → commit/revert"] -.-> A
    F["SSH Fallback<br/>Config export · limited-API environments"] -.-> B

    style A fill:#1a1a2e,stroke:#2196F3,color:#fff
    style B fill:#1a1a2e,stroke:#2196F3,color:#fff
    style C fill:#1a1a2e,stroke:#0f3460,color:#fff
    style D fill:#0f3460,stroke:#0f3460,color:#fff
    style E fill:#0f3460,stroke:#0f3460,color:#fff
    style F fill:#0f3460,stroke:#0f3460,color:#fff

Configuration

Device config example:

devices:
  - name: home
    host: 192.168.88.1
    username: admin
    password: change-me
    transport_order:
      - api
      - api-ssl
      - ssh
    allow_writes: false
    tags:
      - home
      - lab

  - name: office
    host: office-router.example.com
    username: admin
    password: change-me
    fallback_ip: 203.0.113.10
    transport_order:
      - api-ssl
      - ssh
    allow_writes: false
    tags:
      - office
      - production

Tools

Server and discovery

Tool What it does
get_server_config Return current MCP server configuration and safety settings
list_devices List all configured RouterOS devices
describe_device Return detailed info for a named device

System and network reads

Tool What it does
system_info Return system identity, version, uptime, and hardware info
interfaces List all network interfaces with status
ip_addresses List IP addresses assigned to interfaces
routes List the routing table
firewall_filters List firewall filter rules
nat_rules List NAT rules
dns_settings Return DNS configuration
dhcp_servers List DHCP server instances
dhcp_leases List DHCP leases
address_lists List firewall address list entries
bridges List bridge interfaces
bridge_ports List bridge port memberships
neighbors List discovered network neighbors
wireguard_interfaces List WireGuard interfaces
wireguard_peers List WireGuard peers
logs Retrieve system log entries
ping Ping a target from a device
export_config Export device configuration
run_api_print Read-only API print for any RouterOS path

Guarded writes

Tool What it does
plan_script_change Preview a RouterOS script change with risk assessment
apply_script_change Apply a planned change inside a Safe Mode session with snapshot and auto-rollback
list_snapshots List config snapshots taken before writes, newest first
diff_snapshots Unified diff between two config snapshots of a device

Write access is blocked unless the target device has allow_writes: true. The intended workflow is: plan_script_change → inspect risk level and approval code → apply_script_change only if the plan is acceptable.

Safe Mode writes

Every apply_script_change runs a lockout-proof pipeline — there is no unprotected write path:

  1. Snapshot — the full config is exported to ~/.mikrotik-mcp/snapshots/<device>/<timestamp>.rsc before anything is sent.
  2. Safe Mode — the change is applied inside a RouterOS Safe Mode console session over a persistent SSH PTY. Safe Mode is console-only (neither the binary API nor REST expose it), which is why this engine drives a real terminal.
  3. Health check — after applying, the router must still answer over a separate SSH connection.
  4. Commit or revert — healthy: Safe Mode is released and the change is kept. Unhealthy, timed out, or the session drops (including because the change itself cut our connectivity): the router reverts the change itself. That is RouterOS's own rollback mechanism, not a best-effort undo script.

Devices without ssh in transport_order fail closed — writes are refused rather than applied unprotected. The health check is deliberately minimal (management path answers); it catches lockouts, not subtle misconfiguration — review diff_snapshots output after any change that matters.

Claude Desktop

{
  "mcpServers": {
    "mikrotik-routeros": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mikrotik-routeros-mcp", "python", "-m", "mikrotik_routeros_mcp.server"],
      "env": {
        "MIKROTIK_ROUTEROS_CONFIG": "/path/to/devices.yaml"
      }
    }
  }
}

VS Code / Cursor

{
  "servers": {
    "mikrotik-routeros": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mikrotik-routeros-mcp", "python", "-m", "mikrotik_routeros_mcp.server"],
      "env": {
        "MIKROTIK_ROUTEROS_CONFIG": "/path/to/devices.yaml"
      }
    }
  }
}

Codex

Create a codex.json MCP config file:

{
  "mcpServers": {
    "mikrotik-routeros": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mikrotik-routeros-mcp", "python", "-m", "mikrotik_routeros_mcp.server"],
      "env": {
        "MIKROTIK_ROUTEROS_CONFIG": "/path/to/devices.yaml"
      }
    }
  }
}

Then run Codex with:

codex --mcp-config codex.json

Production safety

  • Device-scoped targeting — the model must choose a named target router explicitly. No ambient "default device" behavior.
  • Write gating — write access is blocked per-device unless allow_writes: true is set in config. Read tools are always available.
  • Guarded write flow — plan_script_change returns a risk assessment and approval code. apply_script_change requires that approval code to proceed.
  • Transport fallback — attempts api, then api-ssl, then ssh in order, so the server connects via the best available transport without manual switching.
  • Read-only API guard — run_api_print blocks mutating RouterOS API paths by design.
  • Input validation — all tools validate parameters before any API call is made. Invalid inputs return structured JSON errors, never raw exceptions.

Development

uv sync
uv run python -m pytest -v

License

Apache 2.0

README fetched from the repository 4 days ago. The original is authoritative.

Questions

About Mikrotik Routeros MCP

How do I install Mikrotik Routeros MCP?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Mikrotik Routeros MCP safe to use with an AI agent?

Its trust score is 34 out of 100 (low). It passes 5 of the 5 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Mikrotik Routeros MCP still maintained?

Yes — the latest release is v0.2.0 (19 Aug 2026), and the last commit was 2 months ago. The repository has 1 stars.