mikrotik-mcp
Allows managing fleets of MikroTik RouterOS devices, providing tools for system administration, interfaces, bridging, IP, firewall, DHCP/DNS, PPP, monitoring, and diagnostics via the RouterOS REST API, with optional SSH command execution.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mikrotik-mcpWhat's the RouterOS version across the whole fleet?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mikrotik-mcp
An MCP (Model Context Protocol) server for managing fleets of MikroTik RouterOS devices from AI assistants such as Claude.
It exposes 65 tools covering system administration, interfaces, bridging, IP, firewall, DHCP/DNS, PPP, monitoring, and diagnostics — all executed over the RouterOS REST API, with SSH reserved for free-form ros-command execution. Device credentials are never passed through the model: they are resolved from a KeePass vault at runtime.
Highlights
Fleet-aware by design — every tool accepts a
targetof a single device ID, a comma-separated list (R1,R2,R3), orall. Commands fan out in parallel and return per-device results; one unreachable device never fails the batch.REST-first transport — structured JSON from the RouterOS REST API (RouterOS v7.1+), no brittle terminal scraping. SSH is used only for the
ros-commandescape hatch.KeePass-backed credentials — devices are enumerated from a
.kdbxvault group. The LLM only ever sees device IDs, never passwords.Safe by default —
ros-commanddefaults to dry-run mode, and aREAD_ONLY=trueswitch withholds all 14 write/execution and active-diagnostic tools, exposing only the 51 state-query tools. Ideal for monitoring-only agent access.Two MCP transports —
stdiofor local clients (Claude Desktop, Claude Code) and Streamable HTTP (with legacy SSE fallback) for a shared team server.
Related MCP server: MikroTik MCP Server
Tool overview
Area | Examples |
System | identity, clock, health, hardware, packages, license, history, note, certificates, log, files |
Interfaces & bridging | interface list/stats, enable/disable, interface lists, bridges, ports, VLANs, MAC table, neighbors |
IP | addresses, ARP, routes, pools, IP settings, IP services |
Firewall | filter, NAT, mangle, address lists, connection tracking, RADIUS |
DHCP & DNS | DHCP client/server, leases, networks, DNS settings, static entries |
PPP & users | profiles, secrets, active sessions, AAA, system users, scheduler, scripts, logging rules |
Services | NTP, SNMP, reboot/shutdown |
Diagnostics | ping, traceroute, bandwidth test, torch, packet sniffer, profile, netwatch, fetch, speed test, WoL, MAC/IP scan, traffic generator |
Fleet & escape hatch |
|
Quick start
1. Prepare the credential vault
Create a KeePass vault (e.g. config/vault.kdbx) with one entry per device inside a group (default: mikrotik):
Title → device ID (how you'll refer to the device in prompts)
Username / Password → RouterOS credentials
URL → device hostname or IP
2. Run with Docker (shared HTTP server)
Using the prebuilt image:
docker run -d -p 8000:8000 \
-v ./config:/config:ro \
-e KEEPASS_PASSWORD='…' \
ghcr.io/vesact/mikrotik-mcp:latest # serves MCP on http://localhost:8000/mcpOr build from source:
cp .env.example .env # set KEEPASS_PASSWORD at minimum
docker compose up -d3. Or run locally over stdio (Claude Desktop / Claude Code)
npm ci && npm run build{
"mcpServers": {
"mikrotik": {
"command": "node",
"args": ["/path/to/mikrotik-mcp/dist/index.js"],
"env": {
"KEEPASS_PATH": "/path/to/vault.kdbx",
"KEEPASS_PASSWORD": "…"
}
}
}
}Then ask things like:
"What's the RouterOS version across the whole fleet?" "Show DHCP leases on router-01." "Add a firewall filter on R1,R2 — dry-run first."
Configuration
All configuration is via environment variables (see .env.example):
Variable | Default | Purpose |
| — (required) | Master password of the KeePass vault |
|
| Path to the |
|
| Vault group to enumerate devices from |
|
| REST API port on target devices |
|
|
|
|
| REST request timeout |
|
| Per-command SSH timeout ( |
|
| Target |
|
| MCP transport |
|
| HTTP listen port |
|
| HTTP bind address |
|
| Expose only read-only state-query tools |
Read-only mode
With READ_ONLY=true (also accepts 1/yes/on), the server exposes only the 51 read-only tools. ros-command, setup-new-device, and all active diagnostics (ping, traceroute, torch, bandwidth test, scans, …) are withheld — they mutate state or generate network traffic. The allow-list is explicit, so tools added in the future are withheld until deliberately classified.
Requirements
Node.js ≥ 22 (or Docker)
RouterOS v7.1+ with the REST API enabled (
www-sslorwwwservice) on managed devicesSSH enabled on devices only if you use
ros-commandorsetup-new-device
Development
npm ci
npm run build # TypeScript → dist/
npm test # unit tests (Vitest, no hardware needed)
npm run lint # ESLint
npm run format # Prettier
npm run test:integration # integration tests against real hardware (see .env.test.example)Unit tests run against fixtures, including a committed test vault (tests/fixtures/test-vault.kdbx, password test-password-123 — fake credentials only). Integration tests require a reachable RouterOS device and are configured via .env.test.
Architecture
MCP client (Claude, …)
│ stdio / Streamable HTTP
▼
mikrotik-mcp server ──► KeePass vault (device inventory + credentials)
│
│ fan-out: target = "R1" | "R1,R2" | "all" (parallel, per-device results)
▼
RouterOS REST API (all tools) / SSH (ros-command only)The full architecture document lives in docs/architecture.md, and the original product requirements in docs/prd.md.
Contributing
See CONTRIBUTING.md. Security issues: see SECURITY.md.
License
Licensed under the Apache License 2.0.
Copyright 2026 Actemium Schweiz AG — a VINCI Energies company.
MikroTik and RouterOS are trademarks of Mikrotīkls SIA. This project is not affiliated with or endorsed by MikroTik.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceProduction-grade MCP server for MikroTik RouterOS with secure AI-native network automation.Last updated10022744MIT
- Alicense-qualityDmaintenanceEnables management of MikroTik routers running RouterOS 6 and 7 via SSH, Telnet, or API with automatic command adaptation. Provides over 46 MCP tools for device management, firewall, DHCP, VPN, configuration profiles, and more.Last updated3MIT
- AlicenseBqualityAmaintenanceMCP server that enables Claude Code to access, monitor, and manage MikroTik RouterOS devices via its REST API, with 92 tools for read-only and optional write operations.Last updated92Apache 2.0
- AlicenseBqualityBmaintenanceMCP server for managing MikroTik RouterOS devices, enabling reading device state and performing guarded write operations such as setting identity via natural language.Last updated10Apache 2.0
Related MCP Connectors
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
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/vesact/mikrotik-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server