Skip to main content
Glama
stormbliss

MikroTik MCP Server

by stormbliss

MikroTik MCP Server

A robust Model Context Protocol (MCP) server for managing MikroTik routers running RouterOS 6 and 7. Provides seamless connectivity via SSH, Telnet, or API with automatic command adaptation.

Python Version License MCP

Python version is simpler and easier to deploy!

1. Install

pip install -e .

2. Configure

Copy and edit the example configuration:

cp devices.json.example devices.json
# Edit devices.json with your router details

3. Add to Claude Desktop

Add to your Claude Desktop config (%APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "mikrotik": {
      "command": "python",
      "args": ["-m", "mikrotik_mcp.server"]
    }
  }
}

4. Start Using

Restart Claude Desktop and try:

List my MikroTik devices
Connect to router-main and show system info

πŸ“– Read Full Python Documentation β†’

Related MCP server: MikroMCP

✨ Features

  • 46+ MCP Tools: Complete router management suite

  • Multi-Protocol Support: SSH (recommended), API, Telnet

  • RouterOS 6 & 7 Compatible: Automatic command adaptation

  • Advanced Features:

    • Firewall management (filter, NAT, address lists)

    • DHCP server configuration

    • VPN setup (IPsec, L2TP, WireGuard)

    • Configuration profiles

    • Backup/restore

    • Audit logging

    • Fleet management

πŸ“¦ Installation Options

# Windows
install-python.bat

# Linux/macOS
chmod +x install-python.sh
./install-python.sh

TypeScript (Advanced)

npm install
npm run build

πŸ”§ MCP Tools Available

Device Management (13 tools)

  • list_devices - List all configured routers

  • connect_device - Establish connection

  • execute_command - Run any RouterOS command

  • get_system_info - System resources

  • get_interfaces - Network interfaces

  • get_firewall_rules - Firewall configuration

  • backup_config - Export configuration

  • And more...

Firewall Management (5 tools)

  • firewall_add_filter_rule - Add filter rules

  • firewall_add_nat_rule - Configure NAT

  • firewall_add_address_list - Manage address lists

  • firewall_get_address_list - View address lists

  • firewall_remove_rule - Remove rules

DHCP Management (5 tools)

  • dhcp_create_server - Create DHCP server

  • dhcp_add_network - Configure network

  • dhcp_add_static_lease - Add static leases

  • dhcp_create_pool - Create IP pools

  • dhcp_get_servers - List DHCP servers

VPN Management (8 tools)

  • IPsec: vpn_add_ipsec_peer, vpn_get_ipsec_peers

  • L2TP: vpn_add_l2tp_user, vpn_configure_l2tp_server, vpn_get_l2tp_connections

  • WireGuard: vpn_add_wireguard_interface, vpn_add_wireguard_peer, vpn_get_wireguard_interfaces

  • Generic: vpn_get_ppp_secrets

Configuration Profiles (6 tools)

  • profile_list - List available profiles

  • profile_get - Get profile details

  • profile_preview - Preview commands

  • profile_apply - Apply profile to device

  • profile_validate - Validate profile

  • profile_save_current - Save device config as profile

Advanced Features (9 tools)

  • execute_batch_commands - Run multiple commands

  • get_fleet_status - Multi-device overview

  • execute_on_all_devices - Run command on all

  • compare_configs - Compare two devices

  • get_command_history - Audit log access

  • get_device_audit_stats - Device statistics

  • get_connection_stats - Connection metrics

  • export_config - Export without saving

  • restore_config - Restore from backup

πŸ“ Project Structure

mikrotik_mcp/
β”œβ”€β”€ server.py              # Main MCP server
β”œβ”€β”€ device_manager.py      # Device lifecycle management
β”œβ”€β”€ models.py              # Pydantic data models
β”œβ”€β”€ connections/           # SSH, Telnet, API implementations
β”œβ”€β”€ modules/               # Feature modules
β”‚   β”œβ”€β”€ firewall.py       # Firewall management
β”‚   β”œβ”€β”€ dhcp.py           # DHCP management
β”‚   β”œβ”€β”€ vpn.py            # VPN management
β”‚   └── profiles.py       # Configuration profiles
β”œβ”€β”€ audit.py              # Audit logging
β”œβ”€β”€ cache.py              # Response caching
β”œβ”€β”€ retry.py              # Connection retry logic
└── logger.py             # Structured logging

πŸ”’ Security

  • Never commit devices.json or .env (already in .gitignore)

  • Use SSH instead of Telnet (encrypted)

  • Store passwords in environment variables

  • Enable audit logging for compliance

  • Regularly update RouterOS firmware

πŸ“š Documentation

πŸ§ͺ Testing

# Run tests
pytest

# With coverage
pytest --cov=mikrotik_mcp --cov-report=html

# Specific test
pytest tests/test_device_manager.py

🀝 Contributing

Contributions welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests

  5. Submit a pull request

πŸ“ License

MIT License - See LICENSE file for details

πŸ™ Credits

Built with:

πŸ› Support

For issues:

  1. Check Troubleshooting Guide

  2. Review Documentation

  3. Check existing GitHub issues

  4. Create a new issue with details

πŸ—ΊοΈ Roadmap

  • Basic device management

  • SSH/API/Telnet support

  • RouterOS 6/7 compatibility

  • Firewall management

  • DHCP management

  • VPN management (IPsec, L2TP, WireGuard)

  • Configuration profiles

  • Audit logging

  • Wireless management

  • Queue management

  • Hotspot management

  • User management

  • Backup scheduling

  • SSH key authentication

  • Web-based dashboard


Happy routing! πŸš€

For detailed setup and usage, see the Python Documentation.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with MikroTik RouterOS devices through API and SSH connections, supporting network monitoring, configuration management, and diagnostics across multiple routers with automatic connection fallback.
    3
    MIT