@ai-solutions.ru/mikrotik-mcp-server

@ai-solutions.ru/mikrotik-mcp-server

High-performance TypeScript MCP server for MikroTik RouterOS management, enabling Claude, GPT-4, or any MCP-compatible AI to manage routers through natural language with dynamic API discovery, VPN management, and configuration backup.

Category
Visit Server

README

@ai-solutions.ru/mikrotik-mcp-server

npm version License: MIT Node.js >=18 MCP SDK 1.16+

High-performance TypeScript MCP (Model Context Protocol) server for MikroTik RouterOS management. Connect Claude, GPT-4, or any MCP-compatible AI to your MikroTik router and manage it through natural language.

npx @ai-solutions.ru/mikrotik-mcp-server

šŸš€ Why This Server?

Feature This server jeff-nasseri/mikrotik-mcp kevinpez (nested fork)
Language TypeScript / Node.js Python Python
Dynamic API Discovery āœ… Browse full RouterOS API tree āŒ āŒ
Structured JSON output (structuredContent) āœ… Every tool āŒ āŒ
Zod output schemas āœ… Typed & validated āŒ āŒ
MCP safety annotations āœ… readOnly/destructive/idempotent āŒ āŒ
WireGuard VPN management āœ… list + add peers āŒ āŒ
IPsec peer management āœ… āŒ āŒ
Configuration backup & export āœ… binary + script export āŒ āŒ
Raw command execution (escape hatch) āœ… execute_command āŒ āŒ
Pagination on all list tools āœ… limit/offset partial partial
Smart output truncation āœ… auto-hint for large results āŒ āŒ
In-memory caching āœ… discovery cache āŒ āŒ
MCP SDK version 1.16+ (latest) old old
Install via npx āœ… zero config āŒ pip install āŒ pip install

✨ Unique Features

1. Dynamic API Discovery (unique in ecosystem)

Browse the entire RouterOS API tree without needing to know command paths in advance. The AI can explore unknown router configurations autonomously.

→ mikrotik_discover_endpoints(path: "/ip")
  Returns: address, arp, dhcp-client, dhcp-server, dns, firewall, hotspot, ipsec, ...

→ mikrotik_get_endpoint_schema(path: "/ip/firewall/filter")
  Returns: available commands (print, add, remove, set, enable, disable) and parameters

This means Claude can discover and interact with any RouterOS subsystem — including packages you've installed, containers, advanced routing, hardware-specific features — without the server needing hardcoded knowledge of them.

2. Structured Content + Zod Output Schemas

Every tool returns both human-readable Markdown and machine-readable JSON via structuredContent. The JSON is validated against Zod schemas, giving you typed, predictable data structures that work with MCP clients that support structured output.

// Example: mikrotik_list_ip_addresses returns
{
  content: [{ type: "text", text: "# IP Addresses\n..." }],   // ← Markdown for AI
  structuredContent: {                                          // ← Typed JSON for clients
    total: 5,
    addresses: [{ id: "*1", address: "192.168.1.1/24", interface: "bridge", ... }]
  }
}

3. MCP Safety Annotations

Tools are annotated with MCP 2025 safety hints so AI clients can present appropriate warnings:

  • readOnlyHint: true — safe to call without side effects (list/print operations)
  • destructiveHint: true — modifies router state (add/remove/reboot)
  • idempotentHint: true — safe to retry
  • openWorldHint: true — queries live state from router

The reboot tool additionally requires confirm: true parameter as an extra safety gate.

4. VPN Management (WireGuard + IPsec)

First MikroTik MCP server with WireGuard peer management:

  • List all WireGuard peers with traffic stats
  • Add new WireGuard peers with endpoint and allowed addresses
  • List IPsec peers with profiles
  • Graceful handling when WireGuard package isn't installed

5. Raw Command Execution

mikrotik_execute_command provides a full escape hatch to the RouterOS API — execute any RouterOS command with any parameters. This enables AI to handle edge cases, new RouterOS features, or complex operations not covered by specialized tools.

6. Configuration Backup & Export

  • mikrotik_create_backup — binary RouterOS backup (survives factory reset)
  • mikrotik_export_config — human-readable script export with statistics (line count, command count, size)

šŸ“‹ Full Tool Reference

šŸ–„ System (2 tools)

Tool Description Annotations
mikrotik_system_info CPU, RAM, storage, uptime, version, board info readOnly
mikrotik_system_reboot Reboot device (requires confirm: true) destructive

šŸ”Œ Interfaces (3 tools)

Tool Description
mikrotik_list_interfaces List all interfaces with type filter + pagination
mikrotik_get_interface Get detailed info for specific interface
mikrotik_configure_interface Enable/disable, set MTU, comment

🌐 IP Addresses (3 tools)

Tool Description
mikrotik_list_ip_addresses List all IP addresses with interface filter + pagination
mikrotik_add_ip_address Add IP address to interface
mikrotik_remove_ip_address Remove IP address by ID

šŸ”„ Firewall (3 tools)

Tool Description
mikrotik_list_firewall_rules List filter rules with chain filter + pagination
mikrotik_add_firewall_rule Add filter rule with full parameter support
mikrotik_remove_firewall_rule Remove rule by ID

šŸ“” DHCP (3 tools)

Tool Description
mikrotik_list_dhcp_leases List leases with status filter + pagination
mikrotik_add_static_lease Assign static IP to MAC address
mikrotik_list_dhcp_servers List configured DHCP servers

šŸ” DNS (2 tools)

Tool Description
mikrotik_list_dns_static List static DNS records with pagination
mikrotik_add_dns_record Add A/AAAA/CNAME static DNS record

šŸ—ŗ Routing (3 tools)

Tool Description
mikrotik_list_routes List all routes with pagination
mikrotik_add_route Add static route with distance and routing table
mikrotik_list_nat_rules List NAT rules with chain filter + pagination

šŸ” VPN (3 tools)

Tool Description
mikrotik_list_wireguard_peers List WireGuard peers with traffic stats
mikrotik_add_wireguard_peer Add WireGuard peer with endpoint
mikrotik_list_ipsec_peers List IPsec peers with profiles

šŸ’¾ Backup (2 tools)

Tool Description
mikrotik_create_backup Create binary system backup
mikrotik_export_config Export config as text script with statistics

⚔ Execute (1 tool)

Tool Description
mikrotik_execute_command Execute any RouterOS API command (destructive)

šŸ”­ Discovery (2 tools)

Tool Description
mikrotik_discover_endpoints Browse RouterOS API tree at any path
mikrotik_get_endpoint_schema Get available commands & params for endpoint

Total: 27 tools + 4 MCP resources


šŸ“¦ MCP Resources

Resource URI Description
routeros://system/info Live system info snapshot
routeros://interfaces All interface states
routeros://firewall/rules Full firewall ruleset
routeros://routing/routes All routing table entries

šŸ”§ Installation & Setup

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "mikrotik": {
      "command": "npx",
      "args": ["-y", "@ai-solutions.ru/mikrotik-mcp-server"],
      "env": {
        "MIKROTIK_HOST": "192.168.88.1",
        "MIKROTIK_USER": "admin",
        "MIKROTIK_PASSWORD": "yourpassword",
        "MIKROTIK_PORT": "8728",
        "MIKROTIK_SECURE": "false"
      }
    }
  }
}

Environment Variables

Variable Default Description
MIKROTIK_HOST 192.168.88.1 Router IP or hostname
MIKROTIK_USER admin API username
MIKROTIK_PASSWORD (required) API password
MIKROTIK_PORT 8728 RouterOS API port (8729 for TLS)
MIKROTIK_SECURE false Use TLS (requires port 8729)
MIKROTIK_TIMEOUT 10000 Connection timeout in ms
DISCOVERY_CACHE_TTL 300 Discovery cache TTL in seconds

Enable RouterOS API

In RouterOS WebFig or terminal:

/ip service enable api

For TLS: /ip service enable api-ssl


šŸ’¬ Example Conversations

"What's the current state of my router?"

Calls mikrotik_system_info → Returns device name, RouterOS version, CPU load, RAM usage, uptime

"Show me all firewall rules that drop traffic"

Calls mikrotik_list_firewall_rules(chain="forward") → Filters by action=drop

"Add a static DNS record for myserver.local pointing to 10.0.0.50"

Calls mikrotik_add_dns_record(name="myserver.local", address="10.0.0.50")

"List all WireGuard peers and their traffic stats"

Calls mikrotik_list_wireguard_peers() → Returns peers with RX/TX bytes

"What API endpoints are available under /container?"

Calls mikrotik_discover_endpoints(path="/container") → Browses RouterOS container API

"Export the full router config as a backup script"

Calls mikrotik_export_config() → Returns full RouterOS export with stats


šŸ— Architecture

src/
ā”œā”€ā”€ index.ts              # Entry point, env config
ā”œā”€ā”€ server.ts             # MCP server + tool/resource registration
ā”œā”€ā”€ constants.ts          # Configuration constants
ā”œā”€ā”€ routeros/
│   └── client.ts         # RouterOS API client (node-routeros)
ā”œā”€ā”€ cache/
│   └── memory.ts         # LRU in-memory cache
ā”œā”€ā”€ discovery/
│   └── service.ts        # Dynamic API discovery service
ā”œā”€ā”€ tools/
│   ā”œā”€ā”€ system.ts         # System info & reboot
│   ā”œā”€ā”€ interfaces.ts     # Interface management
│   ā”œā”€ā”€ ip-address.ts     # IP address CRUD
│   ā”œā”€ā”€ firewall.ts       # Firewall rules
│   ā”œā”€ā”€ dhcp.ts           # DHCP leases & servers
│   ā”œā”€ā”€ dns.ts            # Static DNS records
│   ā”œā”€ā”€ routing.ts        # Routes & NAT
│   ā”œā”€ā”€ vpn.ts            # WireGuard & IPsec
│   ā”œā”€ā”€ backup.ts         # Backup & export
│   ā”œā”€ā”€ execute.ts        # Raw command execution
│   └── discovery.ts      # API discovery tools
ā”œā”€ā”€ resources/
│   ā”œā”€ā”€ system-info.ts    # System resource
│   ā”œā”€ā”€ interfaces.ts     # Interfaces resource
│   ā”œā”€ā”€ firewall.ts       # Firewall resource
│   └── routing.ts        # Routing resource
└── utils/
    ā”œā”€ā”€ format.ts         # Formatting, truncation, pagination
    ā”œā”€ā”€ errors.ts         # RouterOS error handling
    └── logger.ts         # Structured logging

šŸ”’ Security Notes

  • All write operations carry destructiveHint: true annotation
  • Reboot requires explicit confirm: true parameter
  • Credentials are passed via environment variables (never in code)
  • TLS support via MIKROTIK_SECURE=true + port 8729
  • Consider using a read-only RouterOS API user for monitoring-only setups

šŸ“œ License

MIT Ā© AI Solutions

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured