Skip to main content
Glama
Ai-Solutions-ru

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

@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


Related MCP server: MikroMCP

✨ 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

A
license - permissive license
-
quality - not tested
F
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

  • A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

View all MCP Connectors

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/Ai-Solutions-ru/mikrotik-mcp-server'

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