mcp-server-mikrotik


Namemcp-server-mikrotik JSON
Version 0.2.0.post20 PyPI version JSON
download
home_pageNone
SummaryMCP server for MikroTik integration with Claude and other AI assistants
upload_time2025-08-28 18:49:00
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords mcp mikrotik router network ai assistant
VCS
bugtrack_url
requirements mcp paramiko pytest pytest-mock pytest-timeout testcontainers PyYAML
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![MseeP.ai Security Assessment Badge](https://mseep.net/pr/jeff-nasseri-mikrotik-mcp-badge.png)](https://mseep.ai/app/jeff-nasseri-mikrotik-mcp)

## Overview

MikroTik MCP provides a bridge between AI assistants and MikroTik RouterOS devices. It allows AI assistants to interact with MikroTik routers through natural language requests, executing commands like managing VLANs, configuring firewall rules, handling DNS settings, and more.

## Claude Desktop

https://github.com/user-attachments/assets/24fadcdc-c6a8-48ed-90ac-74baf8f94b59


## Inspector


https://github.com/user-attachments/assets/e0301ff2-8144-4503-83d0-48589d95027d


## Installation

### Prerequisites
- Python 3.8+
- MikroTik RouterOS device with API access enabled
- Python dependencies (routeros-api or similar)

### Manual Installation

```bash
# Clone the repository
git clone https://github.com/jeff-nasseri/mikrotik-mcp/tree/master
cd mcp-mikrotik

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
pip install -e .

# Run the server
mcp-server-mikrotik
```

### Running Integration Tests

This project uses **pytest** for integration testing against a temporary MikroTik RouterOS container.

1. Make sure you have **Docker** installed and running.
2. Install test dependencies:

   ```bash
   pip install -r requirements-dev.txt
   ```
3. Run the tests:

   ```bash
   pytest -v
   ```

   This will:

   * Spin up a MikroTik RouterOS container
   * Run integration tests (create, list, and delete user)
   * Tear down the container automatically

By default, tests are marked with `@pytest.mark.integration`.
You can run only integration tests with:

```bash
pytest -m integration -v
```

## Tools

Here are the available tools in the MikroTik MCP server:

### VLAN Interface Management

#### `mikrotik_create_vlan_interface`
Creates a VLAN interface on MikroTik device.
- Parameters:
  - `name` (required): VLAN interface name
  - `vlan_id` (required): VLAN ID (1-4094)
  - `interface` (required): Parent interface
  - `comment` (optional): Description
  - `disabled` (optional): Disable interface
  - `mtu` (optional): MTU size
  - `use_service_tag` (optional): Use service tag
  - `arp` (optional): ARP mode
  - `arp_timeout` (optional): ARP timeout
- Example:
  ```
  mikrotik_create_vlan_interface(name="vlan100", vlan_id=100, interface="ether1")
  ```

#### `mikrotik_list_vlan_interfaces`
Lists VLAN interfaces on MikroTik device.
- Parameters:
  - `name_filter` (optional): Filter by name
  - `vlan_id_filter` (optional): Filter by VLAN ID
  - `interface_filter` (optional): Filter by parent interface
  - `disabled_only` (optional): Show only disabled interfaces
- Example:
  ```
  mikrotik_list_vlan_interfaces(vlan_id_filter=100)
  ```

#### `mikrotik_get_vlan_interface`
Gets detailed information about a specific VLAN interface.
- Parameters:
  - `name` (required): VLAN interface name
- Example:
  ```
  mikrotik_get_vlan_interface(name="vlan100")
  ```

#### `mikrotik_update_vlan_interface`
Updates an existing VLAN interface.
- Parameters:
  - `name` (required): Current VLAN interface name
  - `new_name` (optional): New name
  - `vlan_id` (optional): New VLAN ID
  - `interface` (optional): New parent interface
  - `comment` (optional): New description
  - `disabled` (optional): Enable/disable interface
  - `mtu` (optional): New MTU size
  - `use_service_tag` (optional): Use service tag
  - `arp` (optional): ARP mode
  - `arp_timeout` (optional): ARP timeout
- Example:
  ```
  mikrotik_update_vlan_interface(name="vlan100", comment="Production VLAN")
  ```

#### `mikrotik_remove_vlan_interface`
Removes a VLAN interface from MikroTik device.
- Parameters:
  - `name` (required): VLAN interface name
- Example:
  ```
  mikrotik_remove_vlan_interface(name="vlan100")
  ```

### IP Address Management

#### `mikrotik_add_ip_address`
Adds an IP address to an interface.
- Parameters:
  - `address` (required): IP address with CIDR notation
  - `interface` (required): Interface name
  - `network` (optional): Network address
  - `broadcast` (optional): Broadcast address
  - `comment` (optional): Description
  - `disabled` (optional): Disable address
- Example:
  ```
  mikrotik_add_ip_address(address="192.168.1.1/24", interface="vlan100")
  ```

#### `mikrotik_list_ip_addresses`
Lists IP addresses on MikroTik device.
- Parameters:
  - `interface_filter` (optional): Filter by interface
  - `address_filter` (optional): Filter by address
  - `network_filter` (optional): Filter by network
  - `disabled_only` (optional): Show only disabled addresses
  - `dynamic_only` (optional): Show only dynamic addresses
- Example:
  ```
  mikrotik_list_ip_addresses(interface_filter="vlan100")
  ```

#### `mikrotik_get_ip_address`
Gets detailed information about a specific IP address.
- Parameters:
  - `address_id` (required): Address ID
- Example:
  ```
  mikrotik_get_ip_address(address_id="*1")
  ```

#### `mikrotik_remove_ip_address`
Removes an IP address from MikroTik device.
- Parameters:
  - `address_id` (required): Address ID
- Example:
  ```
  mikrotik_remove_ip_address(address_id="*1")
  ```

### DHCP Server Management

#### `mikrotik_create_dhcp_server`
Creates a DHCP server on MikroTik device.
- Parameters:
  - `name` (required): DHCP server name
  - `interface` (required): Interface to bind to
  - `lease_time` (optional): Lease time (default: "1d")
  - `address_pool` (optional): IP pool name
  - `disabled` (optional): Disable server
  - `authoritative` (optional): Authoritative mode
  - `delay_threshold` (optional): Delay threshold
  - `comment` (optional): Description
- Example:
  ```
  mikrotik_create_dhcp_server(name="dhcp-vlan100", interface="vlan100", address_pool="pool-vlan100")
  ```

#### `mikrotik_list_dhcp_servers`
Lists DHCP servers on MikroTik device.
- Parameters:
  - `name_filter` (optional): Filter by name
  - `interface_filter` (optional): Filter by interface
  - `disabled_only` (optional): Show only disabled servers
  - `invalid_only` (optional): Show only invalid servers
- Example:
  ```
  mikrotik_list_dhcp_servers()
  ```

#### `mikrotik_get_dhcp_server`
Gets detailed information about a specific DHCP server.
- Parameters:
  - `name` (required): DHCP server name
- Example:
  ```
  mikrotik_get_dhcp_server(name="dhcp-vlan100")
  ```

#### `mikrotik_create_dhcp_network`
Creates a DHCP network configuration.
- Parameters:
  - `network` (required): Network address
  - `gateway` (required): Gateway address
  - `netmask` (optional): Network mask
  - `dns_servers` (optional): DNS server list
  - `domain` (optional): Domain name
  - `wins_servers` (optional): WINS server list
  - `ntp_servers` (optional): NTP server list
  - `dhcp_option` (optional): DHCP options
  - `comment` (optional): Description
- Example:
  ```
  mikrotik_create_dhcp_network(network="192.168.1.0/24", gateway="192.168.1.1", dns_servers=["8.8.8.8", "8.8.4.4"])
  ```

#### `mikrotik_create_dhcp_pool`
Creates a DHCP address pool.
- Parameters:
  - `name` (required): Pool name
  - `ranges` (required): IP ranges
  - `next_pool` (optional): Next pool name
  - `comment` (optional): Description
- Example:
  ```
  mikrotik_create_dhcp_pool(name="pool-vlan100", ranges="192.168.1.10-192.168.1.250")
  ```

#### `mikrotik_remove_dhcp_server`
Removes a DHCP server from MikroTik device.
- Parameters:
  - `name` (required): DHCP server name
- Example:
  ```
  mikrotik_remove_dhcp_server(name="dhcp-vlan100")
  ```

### NAT Rules Management

#### `mikrotik_create_nat_rule`
Creates a NAT rule on MikroTik device.
- Parameters:
  - `chain` (required): Chain type ("srcnat" or "dstnat")
  - `action` (required): Action type
  - `src_address` (optional): Source address
  - `dst_address` (optional): Destination address
  - `src_port` (optional): Source port
  - `dst_port` (optional): Destination port
  - `protocol` (optional): Protocol
  - `in_interface` (optional): Input interface
  - `out_interface` (optional): Output interface
  - `to_addresses` (optional): Translation addresses
  - `to_ports` (optional): Translation ports
  - `comment` (optional): Description
  - `disabled` (optional): Disable rule
  - `log` (optional): Enable logging
  - `log_prefix` (optional): Log prefix
  - `place_before` (optional): Rule placement
- Example:
  ```
  mikrotik_create_nat_rule(chain="srcnat", action="masquerade", out_interface="ether1")
  ```

#### `mikrotik_list_nat_rules`
Lists NAT rules on MikroTik device.
- Parameters:
  - `chain_filter` (optional): Filter by chain
  - `action_filter` (optional): Filter by action
  - `src_address_filter` (optional): Filter by source address
  - `dst_address_filter` (optional): Filter by destination address
  - `protocol_filter` (optional): Filter by protocol
  - `interface_filter` (optional): Filter by interface
  - `disabled_only` (optional): Show only disabled rules
  - `invalid_only` (optional): Show only invalid rules
- Example:
  ```
  mikrotik_list_nat_rules(chain_filter="srcnat")
  ```

#### `mikrotik_get_nat_rule`
Gets detailed information about a specific NAT rule.
- Parameters:
  - `rule_id` (required): Rule ID
- Example:
  ```
  mikrotik_get_nat_rule(rule_id="*1")
  ```

#### `mikrotik_update_nat_rule`
Updates an existing NAT rule.
- Parameters:
  - `rule_id` (required): Rule ID
  - All parameters from `create_nat_rule` (optional)
- Example:
  ```
  mikrotik_update_nat_rule(rule_id="*1", comment="Updated NAT rule")
  ```

#### `mikrotik_remove_nat_rule`
Removes a NAT rule from MikroTik device.
- Parameters:
  - `rule_id` (required): Rule ID
- Example:
  ```
  mikrotik_remove_nat_rule(rule_id="*1")
  ```

#### `mikrotik_move_nat_rule`
Moves a NAT rule to a different position.
- Parameters:
  - `rule_id` (required): Rule ID
  - `destination` (required): New position
- Example:
  ```
  mikrotik_move_nat_rule(rule_id="*1", destination=0)
  ```

#### `mikrotik_enable_nat_rule`
Enables a NAT rule.
- Parameters:
  - `rule_id` (required): Rule ID
- Example:
  ```
  mikrotik_enable_nat_rule(rule_id="*1")
  ```

#### `mikrotik_disable_nat_rule`
Disables a NAT rule.
- Parameters:
  - `rule_id` (required): Rule ID
- Example:
  ```
  mikrotik_disable_nat_rule(rule_id="*1")
  ```

### IP Pool Management

#### `mikrotik_create_ip_pool`
Creates an IP pool on MikroTik device.
- Parameters:
  - `name` (required): Pool name
  - `ranges` (required): IP ranges
  - `next_pool` (optional): Next pool name
  - `comment` (optional): Description
- Example:
  ```
  mikrotik_create_ip_pool(name="pool1", ranges="192.168.1.100-192.168.1.200")
  ```

#### `mikrotik_list_ip_pools`
Lists IP pools on MikroTik device.
- Parameters:
  - `name_filter` (optional): Filter by name
  - `ranges_filter` (optional): Filter by ranges
  - `include_used` (optional): Include used addresses
- Example:
  ```
  mikrotik_list_ip_pools()
  ```

#### `mikrotik_get_ip_pool`
Gets detailed information about a specific IP pool.
- Parameters:
  - `name` (required): Pool name
- Example:
  ```
  mikrotik_get_ip_pool(name="pool1")
  ```

#### `mikrotik_update_ip_pool`
Updates an existing IP pool.
- Parameters:
  - `name` (required): Current pool name
  - `new_name` (optional): New name
  - `ranges` (optional): New ranges
  - `next_pool` (optional): New next pool
  - `comment` (optional): New description
- Example:
  ```
  mikrotik_update_ip_pool(name="pool1", ranges="192.168.1.100-192.168.1.250")
  ```

#### `mikrotik_remove_ip_pool`
Removes an IP pool from MikroTik device.
- Parameters:
  - `name` (required): Pool name
- Example:
  ```
  mikrotik_remove_ip_pool(name="pool1")
  ```

#### `mikrotik_list_ip_pool_used`
Lists used addresses from IP pools.
- Parameters:
  - `pool_name` (optional): Filter by pool name
  - `address_filter` (optional): Filter by address
  - `mac_filter` (optional): Filter by MAC address
  - `info_filter` (optional): Filter by info
- Example:
  ```
  mikrotik_list_ip_pool_used(pool_name="pool1")
  ```

#### `mikrotik_expand_ip_pool`
Expands an existing IP pool by adding more ranges.
- Parameters:
  - `name` (required): Pool name
  - `additional_ranges` (required): Additional IP ranges
- Example:
  ```
  mikrotik_expand_ip_pool(name="pool1", additional_ranges="192.168.1.251-192.168.1.254")
  ```

### Backup and Export Management

#### `mikrotik_create_backup`
Creates a system backup on MikroTik device.
- Parameters:
  - `name` (optional): Backup filename
  - `dont_encrypt` (optional): Don't encrypt backup
  - `include_password` (optional): Include passwords
  - `comment` (optional): Description
- Example:
  ```
  mikrotik_create_backup(name="backup-2024-01-01")
  ```

#### `mikrotik_list_backups`
Lists backup files on MikroTik device.
- Parameters:
  - `name_filter` (optional): Filter by name
  - `include_exports` (optional): Include export files
- Example:
  ```
  mikrotik_list_backups()
  ```

#### `mikrotik_create_export`
Creates a configuration export on MikroTik device.
- Parameters:
  - `name` (optional): Export filename
  - `file_format` (optional): Format ("rsc", "json", "xml")
  - `export_type` (optional): Type ("full", "compact", "verbose")
  - `hide_sensitive` (optional): Hide sensitive data
  - `verbose` (optional): Verbose output
  - `compact` (optional): Compact output
  - `comment` (optional): Description
- Example:
  ```
  mikrotik_create_export(name="config-export", file_format="rsc")
  ```

#### `mikrotik_export_section`
Exports a specific configuration section.
- Parameters:
  - `section` (required): Section to export
  - `name` (optional): Export filename
  - `hide_sensitive` (optional): Hide sensitive data
  - `compact` (optional): Compact output
- Example:
  ```
  mikrotik_export_section(section="/ip/firewall", name="firewall-config")
  ```

#### `mikrotik_download_file`
Downloads a file from MikroTik device.
- Parameters:
  - `filename` (required): Filename to download
  - `file_type` (optional): File type ("backup" or "export")
- Example:
  ```
  mikrotik_download_file(filename="backup-2024-01-01.backup")
  ```

#### `mikrotik_upload_file`
Uploads a file to MikroTik device.
- Parameters:
  - `filename` (required): Filename
  - `content_base64` (required): Base64 encoded content
- Example:
  ```
  mikrotik_upload_file(filename="config.rsc", content_base64="...")
  ```

#### `mikrotik_restore_backup`
Restores a system backup on MikroTik device.
- Parameters:
  - `filename` (required): Backup filename
  - `password` (optional): Backup password
- Example:
  ```
  mikrotik_restore_backup(filename="backup-2024-01-01.backup")
  ```

#### `mikrotik_import_configuration`
Imports a configuration script file.
- Parameters:
  - `filename` (required): Script filename
  - `run_after_reset` (optional): Run after reset
  - `verbose` (optional): Verbose output
- Example:
  ```
  mikrotik_import_configuration(filename="config.rsc")
  ```

#### `mikrotik_remove_file`
Removes a file from MikroTik device.
- Parameters:
  - `filename` (required): Filename to remove
- Example:
  ```
  mikrotik_remove_file(filename="old-backup.backup")
  ```

#### `mikrotik_backup_info`
Gets detailed information about a backup file.
- Parameters:
  - `filename` (required): Backup filename
- Example:
  ```
  mikrotik_backup_info(filename="backup-2024-01-01.backup")
  ```

### Log Management

#### `mikrotik_get_logs`
Gets logs from MikroTik device with filtering options.
- Parameters:
  - `topics` (optional): Log topics
  - `action` (optional): Log action
  - `time_filter` (optional): Time filter
  - `message_filter` (optional): Message filter
  - `prefix_filter` (optional): Prefix filter
  - `limit` (optional): Result limit
  - `follow` (optional): Follow logs
  - `print_as` (optional): Output format
- Example:
  ```
  mikrotik_get_logs(topics="firewall", limit=100)
  ```

#### `mikrotik_get_logs_by_severity`
Gets logs filtered by severity level.
- Parameters:
  - `severity` (required): Severity level ("debug", "info", "warning", "error", "critical")
  - `time_filter` (optional): Time filter
  - `limit` (optional): Result limit
- Example:
  ```
  mikrotik_get_logs_by_severity(severity="error", limit=50)
  ```

#### `mikrotik_get_logs_by_topic`
Gets logs for a specific topic/facility.
- Parameters:
  - `topic` (required): Log topic
  - `time_filter` (optional): Time filter
  - `limit` (optional): Result limit
- Example:
  ```
  mikrotik_get_logs_by_topic(topic="system")
  ```

#### `mikrotik_search_logs`
Searches logs for a specific term.
- Parameters:
  - `search_term` (required): Search term
  - `time_filter` (optional): Time filter
  - `case_sensitive` (optional): Case sensitive search
  - `limit` (optional): Result limit
- Example:
  ```
  mikrotik_search_logs(search_term="login failed")
  ```

#### `mikrotik_get_system_events`
Gets system-related log events.
- Parameters:
  - `event_type` (optional): Event type
  - `time_filter` (optional): Time filter
  - `limit` (optional): Result limit
- Example:
  ```
  mikrotik_get_system_events(event_type="reboot")
  ```

#### `mikrotik_get_security_logs`
Gets security-related log entries.
- Parameters:
  - `time_filter` (optional): Time filter
  - `limit` (optional): Result limit
- Example:
  ```
  mikrotik_get_security_logs(limit=100)
  ```

#### `mikrotik_clear_logs`
Clears all logs from MikroTik device.
- Parameters: None
- Example:
  ```
  mikrotik_clear_logs()
  ```

#### `mikrotik_get_log_statistics`
Gets statistics about log entries.
- Parameters: None
- Example:
  ```
  mikrotik_get_log_statistics()
  ```

#### `mikrotik_export_logs`
Exports logs to a file on the MikroTik device.
- Parameters:
  - `filename` (optional): Export filename
  - `topics` (optional): Log topics
  - `time_filter` (optional): Time filter
  - `format` (optional): Export format ("plain" or "csv")
- Example:
  ```
  mikrotik_export_logs(filename="security-logs.txt", topics="firewall")
  ```

#### `mikrotik_monitor_logs`
Monitors logs in real-time for a specified duration.
- Parameters:
  - `topics` (optional): Log topics
  - `action` (optional): Log action
  - `duration` (optional): Monitor duration in seconds
- Example:
  ```
  mikrotik_monitor_logs(topics="firewall", duration=30)
  ```

### Firewall Filter Rules Management

#### `mikrotik_create_filter_rule`
Creates a firewall filter rule on MikroTik device.
- Parameters:
  - `chain` (required): Chain type ("input", "forward", "output")
  - `action` (required): Action type
  - `src_address` (optional): Source address
  - `dst_address` (optional): Destination address
  - `src_port` (optional): Source port
  - `dst_port` (optional): Destination port
  - `protocol` (optional): Protocol
  - `in_interface` (optional): Input interface
  - `out_interface` (optional): Output interface
  - `connection_state` (optional): Connection state
  - `connection_nat_state` (optional): Connection NAT state
  - `src_address_list` (optional): Source address list
  - `dst_address_list` (optional): Destination address list
  - `limit` (optional): Rate limit
  - `tcp_flags` (optional): TCP flags
  - `comment` (optional): Description
  - `disabled` (optional): Disable rule
  - `log` (optional): Enable logging
  - `log_prefix` (optional): Log prefix
  - `place_before` (optional): Rule placement
- Example:
  ```
  mikrotik_create_filter_rule(chain="input", action="accept", protocol="tcp", dst_port="22", src_address="192.168.1.0/24")
  ```

#### `mikrotik_list_filter_rules`
Lists firewall filter rules on MikroTik device.
- Parameters:
  - `chain_filter` (optional): Filter by chain
  - `action_filter` (optional): Filter by action
  - `src_address_filter` (optional): Filter by source address
  - `dst_address_filter` (optional): Filter by destination address
  - `protocol_filter` (optional): Filter by protocol
  - `interface_filter` (optional): Filter by interface
  - `disabled_only` (optional): Show only disabled rules
  - `invalid_only` (optional): Show only invalid rules
  - `dynamic_only` (optional): Show only dynamic rules
- Example:
  ```
  mikrotik_list_filter_rules(chain_filter="input")
  ```

#### `mikrotik_get_filter_rule`
Gets detailed information about a specific firewall filter rule.
- Parameters:
  - `rule_id` (required): Rule ID
- Example:
  ```
  mikrotik_get_filter_rule(rule_id="*1")
  ```

#### `mikrotik_update_filter_rule`
Updates an existing firewall filter rule.
- Parameters:
  - `rule_id` (required): Rule ID
  - All parameters from `create_filter_rule` (optional)
- Example:
  ```
  mikrotik_update_filter_rule(rule_id="*1", comment="Updated rule")
  ```

#### `mikrotik_remove_filter_rule`
Removes a firewall filter rule from MikroTik device.
- Parameters:
  - `rule_id` (required): Rule ID
- Example:
  ```
  mikrotik_remove_filter_rule(rule_id="*1")
  ```

#### `mikrotik_move_filter_rule`
Moves a firewall filter rule to a different position.
- Parameters:
  - `rule_id` (required): Rule ID
  - `destination` (required): New position
- Example:
  ```
  mikrotik_move_filter_rule(rule_id="*1", destination=0)
  ```

#### `mikrotik_enable_filter_rule`
Enables a firewall filter rule.
- Parameters:
  - `rule_id` (required): Rule ID
- Example:
  ```
  mikrotik_enable_filter_rule(rule_id="*1")
  ```

#### `mikrotik_disable_filter_rule`
Disables a firewall filter rule.
- Parameters:
  - `rule_id` (required): Rule ID
- Example:
  ```
  mikrotik_disable_filter_rule(rule_id="*1")
  ```

#### `mikrotik_create_basic_firewall_setup`
Creates a basic firewall setup with common security rules.
- Parameters: None
- Example:
  ```
  mikrotik_create_basic_firewall_setup()
  ```

### Route Management

#### `mikrotik_add_route`
Adds a route to MikroTik routing table.
- Parameters:
  - `dst_address` (required): Destination address
  - `gateway` (required): Gateway address
  - `distance` (optional): Administrative distance
  - `scope` (optional): Route scope
  - `target_scope` (optional): Target scope
  - `routing_mark` (optional): Routing mark
  - `comment` (optional): Description
  - `disabled` (optional): Disable route
  - `vrf_interface` (optional): VRF interface
  - `pref_src` (optional): Preferred source
  - `check_gateway` (optional): Gateway check method
- Example:
  ```
  mikrotik_add_route(dst_address="10.0.0.0/8", gateway="192.168.1.1")
  ```

#### `mikrotik_list_routes`
Lists routes in MikroTik routing table.
- Parameters:
  - `dst_filter` (optional): Filter by destination
  - `gateway_filter` (optional): Filter by gateway
  - `routing_mark_filter` (optional): Filter by routing mark
  - `distance_filter` (optional): Filter by distance
  - `active_only` (optional): Show only active routes
  - `disabled_only` (optional): Show only disabled routes
  - `dynamic_only` (optional): Show only dynamic routes
  - `static_only` (optional): Show only static routes
- Example:
  ```
  mikrotik_list_routes(active_only=true)
  ```

#### `mikrotik_get_route`
Gets detailed information about a specific route.
- Parameters:
  - `route_id` (required): Route ID
- Example:
  ```
  mikrotik_get_route(route_id="*1")
  ```

#### `mikrotik_update_route`
Updates an existing route in MikroTik routing table.
- Parameters:
  - `route_id` (required): Route ID
  - All parameters from `add_route` (optional)
- Example:
  ```
  mikrotik_update_route(route_id="*1", comment="Updated route")
  ```

#### `mikrotik_remove_route`
Removes a route from MikroTik routing table.
- Parameters:
  - `route_id` (required): Route ID
- Example:
  ```
  mikrotik_remove_route(route_id="*1")
  ```

#### `mikrotik_enable_route`
Enables a route.
- Parameters:
  - `route_id` (required): Route ID
- Example:
  ```
  mikrotik_enable_route(route_id="*1")
  ```

#### `mikrotik_disable_route`
Disables a route.
- Parameters:
  - `route_id` (required): Route ID
- Example:
  ```
  mikrotik_disable_route(route_id="*1")
  ```

#### `mikrotik_get_routing_table`
Gets a specific routing table.
- Parameters:
  - `table_name` (optional): Table name (default: "main")
  - `protocol_filter` (optional): Filter by protocol
  - `active_only` (optional): Show only active routes
- Example:
  ```
  mikrotik_get_routing_table(table_name="main")
  ```

#### `mikrotik_check_route_path`
Checks the route path to a destination.
- Parameters:
  - `destination` (required): Destination address
  - `source` (optional): Source address
  - `routing_mark` (optional): Routing mark
- Example:
  ```
  mikrotik_check_route_path(destination="8.8.8.8")
  ```

#### `mikrotik_get_route_cache`
Gets the route cache.
- Parameters: None
- Example:
  ```
  mikrotik_get_route_cache()
  ```

#### `mikrotik_flush_route_cache`
Flushes the route cache.
- Parameters: None
- Example:
  ```
  mikrotik_flush_route_cache()
  ```

#### `mikrotik_add_default_route`
Adds a default route (0.0.0.0/0).
- Parameters:
  - `gateway` (required): Gateway address
  - `distance` (optional): Administrative distance
  - `comment` (optional): Description
  - `check_gateway` (optional): Gateway check method
- Example:
  ```
  mikrotik_add_default_route(gateway="192.168.1.1")
  ```

#### `mikrotik_add_blackhole_route`
Adds a blackhole route.
- Parameters:
  - `dst_address` (required): Destination address
  - `distance` (optional): Administrative distance
  - `comment` (optional): Description
- Example:
  ```
  mikrotik_add_blackhole_route(dst_address="10.0.0.0/8")
  ```

#### `mikrotik_get_route_statistics`
Gets routing table statistics.
- Parameters: None
- Example:
  ```
  mikrotik_get_route_statistics()
  ```

### DNS Management

#### `mikrotik_set_dns_servers`
Sets DNS server configuration on MikroTik device.
- Parameters:
  - `servers` (required): DNS server list
  - `allow_remote_requests` (optional): Allow remote requests
  - `max_udp_packet_size` (optional): Max UDP packet size
  - `max_concurrent_queries` (optional): Max concurrent queries
  - `cache_size` (optional): Cache size
  - `cache_max_ttl` (optional): Max cache TTL
  - `use_doh` (optional): Use DNS over HTTPS
  - `doh_server` (optional): DoH server URL
  - `verify_doh_cert` (optional): Verify DoH certificate
- Example:
  ```
  mikrotik_set_dns_servers(servers=["8.8.8.8", "8.8.4.4"], allow_remote_requests=true)
  ```

#### `mikrotik_get_dns_settings`
Gets current DNS configuration.
- Parameters: None
- Example:
  ```
  mikrotik_get_dns_settings()
  ```

#### `mikrotik_add_dns_static`
Adds a static DNS entry.
- Parameters:
  - `name` (required): DNS name
  - `address` (optional): IP address
  - `cname` (optional): CNAME record
  - `mx_preference` (optional): MX preference
  - `mx_exchange` (optional): MX exchange
  - `text` (optional): TXT record
  - `srv_priority` (optional): SRV priority
  - `srv_weight` (optional): SRV weight
  - `srv_port` (optional): SRV port
  - `srv_target` (optional): SRV target
  - `ttl` (optional): Time to live
  - `comment` (optional): Description
  - `disabled` (optional): Disable entry
  - `regexp` (optional): Regular expression
- Example:
  ```
  mikrotik_add_dns_static(name="router.local", address="192.168.1.1")
  ```

#### `mikrotik_list_dns_static`
Lists static DNS entries.
- Parameters:
  - `name_filter` (optional): Filter by name
  - `address_filter` (optional): Filter by address
  - `type_filter` (optional): Filter by type
  - `disabled_only` (optional): Show only disabled entries
  - `regexp_only` (optional): Show only regexp entries
- Example:
  ```
  mikrotik_list_dns_static()
  ```

#### `mikrotik_get_dns_static`
Gets details of a specific static DNS entry.
- Parameters:
  - `entry_id` (required): Entry ID
- Example:
  ```
  mikrotik_get_dns_static(entry_id="*1")
  ```

#### `mikrotik_update_dns_static`
Updates an existing static DNS entry.
- Parameters:
  - `entry_id` (required): Entry ID
  - All parameters from `add_dns_static` (optional)
- Example:
  ```
  mikrotik_update_dns_static(entry_id="*1", address="192.168.1.2")
  ```

#### `mikrotik_remove_dns_static`
Removes a static DNS entry.
- Parameters:
  - `entry_id` (required): Entry ID
- Example:
  ```
  mikrotik_remove_dns_static(entry_id="*1")
  ```

#### `mikrotik_enable_dns_static`
Enables a static DNS entry.
- Parameters:
  - `entry_id` (required): Entry ID
- Example:
  ```
  mikrotik_enable_dns_static(entry_id="*1")
  ```

#### `mikrotik_disable_dns_static`
Disables a static DNS entry.
- Parameters:
  - `entry_id` (required): Entry ID
- Example:
  ```
  mikrotik_disable_dns_static(entry_id="*1")
  ```

#### `mikrotik_get_dns_cache`
Gets the current DNS cache.
- Parameters: None
- Example:
  ```
  mikrotik_get_dns_cache()
  ```

#### `mikrotik_flush_dns_cache`
Flushes the DNS cache.
- Parameters: None
- Example:
  ```
  mikrotik_flush_dns_cache()
  ```

#### `mikrotik_get_dns_cache_statistics`
Gets DNS cache statistics.
- Parameters: None
- Example:
  ```
  mikrotik_get_dns_cache_statistics()
  ```

#### `mikrotik_add_dns_regexp`
Adds a DNS regexp entry for pattern matching.
- Parameters:
  - `regexp` (required): Regular expression
  - `address` (required): IP address
  - `ttl` (optional): Time to live
  - `comment` (optional): Description
  - `disabled` (optional): Disable entry
- Example:
  ```
  mikrotik_add_dns_regexp(regexp="^ad[0-9]*\\.doubleclick\\.net$", address="127.0.0.1")
  ```

#### `mikrotik_test_dns_query`
Tests a DNS query.
- Parameters:
  - `name` (required): DNS name to query
  - `server` (optional): DNS server to use
  - `type` (optional): Query type
- Example:
  ```
  mikrotik_test_dns_query(name="google.com")
  ```

#### `mikrotik_export_dns_config`
Exports DNS configuration to a file.
- Parameters:
  - `filename` (optional): Export filename
- Example:
  ```
  mikrotik_export_dns_config(filename="dns-config.rsc")
  ```

### User Management

#### `mikrotik_add_user`
Adds a new user to MikroTik device.
- Parameters:
  - `name` (required): Username
  - `password` (required): Password
  - `group` (optional): User group
  - `address` (optional): Allowed address
  - `comment` (optional): Description
  - `disabled` (optional): Disable user
- Example:
  ```
  mikrotik_add_user(name="john", password="secure123", group="full")
  ```

#### `mikrotik_list_users`
Lists users on MikroTik device.
- Parameters:
  - `name_filter` (optional): Filter by name
  - `group_filter` (optional): Filter by group
  - `disabled_only` (optional): Show only disabled users
  - `active_only` (optional): Show only active users
- Example:
  ```
  mikrotik_list_users(group_filter="full")
  ```

#### `mikrotik_get_user`
Gets detailed information about a specific user.
- Parameters:
  - `name` (required): Username
- Example:
  ```
  mikrotik_get_user(name="john")
  ```

#### `mikrotik_update_user`
Updates an existing user on MikroTik device.
- Parameters:
  - `name` (required): Current username
  - `new_name` (optional): New username
  - `password` (optional): New password
  - `group` (optional): New group
  - `address` (optional): New allowed address
  - `comment` (optional): New description
  - `disabled` (optional): Enable/disable user
- Example:
  ```
  mikrotik_update_user(name="john", group="read")
  ```

#### `mikrotik_remove_user`
Removes a user from MikroTik device.
- Parameters:
  - `name` (required): Username
- Example:
  ```
  mikrotik_remove_user(name="john")
  ```

#### `mikrotik_disable_user`
Disables a user account.
- Parameters:
  - `name` (required): Username
- Example:
  ```
  mikrotik_disable_user(name="john")
  ```

#### `mikrotik_enable_user`
Enables a user account.
- Parameters:
  - `name` (required): Username
- Example:
  ```
  mikrotik_enable_user(name="john")
  ```

#### `mikrotik_add_user_group`
Adds a new user group to MikroTik device.
- Parameters:
  - `name` (required): Group name
  - `policy` (required): Policy list
  - `skin` (optional): UI skin
  - `comment` (optional): Description
- Example:
  ```
  mikrotik_add_user_group(name="operators", policy=["read", "write", "reboot"])
  ```

#### `mikrotik_list_user_groups`
Lists user groups on MikroTik device.
- Parameters:
  - `name_filter` (optional): Filter by name
  - `policy_filter` (optional): Filter by policy
- Example:
  ```
  mikrotik_list_user_groups()
  ```

#### `mikrotik_get_user_group`
Gets detailed information about a specific user group.
- Parameters:
  - `name` (required): Group name
- Example:
  ```
  mikrotik_get_user_group(name="operators")
  ```

#### `mikrotik_update_user_group`
Updates an existing user group on MikroTik device.
- Parameters:
  - `name` (required): Current group name
  - `new_name` (optional): New name
  - `policy` (optional): New policy list
  - `skin` (optional): New UI skin
  - `comment` (optional): New description
- Example:
  ```
  mikrotik_update_user_group(name="operators", policy=["read", "write"])
  ```

#### `mikrotik_remove_user_group`
Removes a user group from MikroTik device.
- Parameters:
  - `name` (required): Group name
- Example:
  ```
  mikrotik_remove_user_group(name="operators")
  ```

#### `mikrotik_get_active_users`
Gets currently active/logged-in users.
- Parameters: None
- Example:
  ```
  mikrotik_get_active_users()
  ```

#### `mikrotik_disconnect_user`
Disconnects an active user session.
- Parameters:
  - `user_id` (required): User session ID
- Example:
  ```
  mikrotik_disconnect_user(user_id="*1")
  ```

#### `mikrotik_export_user_config`
Exports user configuration to a file.
- Parameters:
  - `filename` (optional): Export filename
- Example:
  ```
  mikrotik_export_user_config(filename="users.rsc")
  ```

#### `mikrotik_set_user_ssh_keys`
Sets SSH public keys for a user.
- Parameters:
  - `username` (required): Username
  - `key_file` (required): SSH key filename
- Example:
  ```
  mikrotik_set_user_ssh_keys(username="john", key_file="id_rsa.pub")
  ```

#### `mikrotik_list_user_ssh_keys`
Lists SSH keys for a specific user.
- Parameters:
  - `username` (required): Username
- Example:
  ```
  mikrotik_list_user_ssh_keys(username="john")
  ```

#### `mikrotik_remove_user_ssh_key`
Removes an SSH key.
- Parameters:
  - `key_id` (required): SSH key ID
- Example:
  ```
  mikrotik_remove_user_ssh_key(key_id="*1")
  ```

## Configuration

### Usage with Claude Desktop

Add this to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "mikrotik": {
      "command": "uvx",
      "args": ["mcp-server-mikrotik", "--host", "<HOST>", "--username", "<USERNAME>", "--password", "<PASSWORD>", "--port", "22"]
    }
  }
}
```

## Inspector

```shell
# Run the inspector against the mcp-server-mikrotik
npx @modelcontextprotocol/inspector uvx mcp-server-mikrotik --host <HOST> --username <USERNAME> --password <PASSWORD> --port 22

# Run the inspector against the mcp-config.json
npm install -g @modelcontextprotocol/inspector
cp mcp-config.json.example mcp-config.json
nano mcp-config.json # Edit the values
mcp-inspector --config mcp-config.json --server mikrotik-mcp-server
```

## UV
Here's the new markdown content that you should add **after the Inspector section and before the License section**:

## Usage Examples with mcp-cli

### VLAN Interface Operations
```bash
# Create a VLAN interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_vlan_interface --tool-args '{"name": "vlan100", "vlan_id": 100, "interface": "ether1", "comment": "Production VLAN"}'

# List all VLANs
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_vlan_interfaces --tool-args '{}'

# Get specific VLAN details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_vlan_interface --tool-args '{"name": "vlan100"}'

# Update VLAN interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_update_vlan_interface --tool-args '{"name": "vlan100", "comment": "Updated Production VLAN"}'

# Remove VLAN interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_vlan_interface --tool-args '{"name": "vlan100"}'
```

### IP Address Management
```bash
# Add IP address to interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_ip_address --tool-args '{"address": "192.168.100.1/24", "interface": "vlan100", "comment": "Gateway address"}'

# List IP addresses
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_ip_addresses --tool-args '{"interface_filter": "vlan100"}'

# Get specific IP address
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_ip_address --tool-args '{"address_id": "*1"}'

# Remove IP address
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_ip_address --tool-args '{"address_id": "*1"}'
```

### DHCP Server Configuration
```bash
# Create DHCP pool
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_pool --tool-args '{"name": "pool-vlan100", "ranges": "192.168.100.10-192.168.100.200"}'

# Create DHCP network
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_network --tool-args '{"network": "192.168.100.0/24", "gateway": "192.168.100.1", "dns_servers": ["8.8.8.8", "8.8.4.4"]}'

# Create DHCP server
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_server --tool-args '{"name": "dhcp-vlan100", "interface": "vlan100", "address_pool": "pool-vlan100"}'

# List DHCP servers
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_dhcp_servers --tool-args '{}'

# Get DHCP server details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_dhcp_server --tool-args '{"name": "dhcp-vlan100"}'

# Remove DHCP server
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_dhcp_server --tool-args '{"name": "dhcp-vlan100"}'
```

### NAT Rule Management
```bash
# Create masquerade rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{"chain": "srcnat", "action": "masquerade", "out_interface": "ether1", "comment": "Internet access"}'

# Create port forwarding rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{"chain": "dstnat", "action": "dst-nat", "dst_port": "80", "protocol": "tcp", "to_addresses": "192.168.100.10", "to_ports": "80", "comment": "Web server"}'

# List NAT rules
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_nat_rules --tool-args '{"chain_filter": "srcnat"}'

# Get NAT rule details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_nat_rule --tool-args '{"rule_id": "*1"}'

# Move NAT rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_move_nat_rule --tool-args '{"rule_id": "*1", "destination": 0}'

# Enable/Disable NAT rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_nat_rule --tool-args '{"rule_id": "*1"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_nat_rule --tool-args '{"rule_id": "*1"}'

# Remove NAT rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_nat_rule --tool-args '{"rule_id": "*1"}'
```

### IP Pool Management
```bash
# Create IP pool
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_ip_pool --tool-args '{"name": "main-pool", "ranges": "192.168.1.100-192.168.1.200"}'

# List IP pools
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_ip_pools --tool-args '{"include_used": true}'

# Get IP pool details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_ip_pool --tool-args '{"name": "main-pool"}'

# List used addresses in pool
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_ip_pool_used --tool-args '{"pool_name": "main-pool"}'

# Expand IP pool
uv run mcp-cli cmd --server mikrotik --tool mikrotik_expand_ip_pool --tool-args '{"name": "main-pool", "additional_ranges": "192.168.1.201-192.168.1.250"}'

# Remove IP pool
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_ip_pool --tool-args '{"name": "main-pool"}'
```

### Backup and Export
```bash
# Create system backup
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_backup --tool-args '{"name": "full_backup", "include_password": true}'

# Create configuration export
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_export --tool-args '{"name": "config_export", "file_format": "rsc", "export_type": "full"}'

# Export specific section
uv run mcp-cli cmd --server mikrotik --tool mikrotik_export_section --tool-args '{"section": "/ip/firewall", "name": "firewall_export"}'

# List backups
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_backups --tool-args '{"include_exports": true}'

# Download file
uv run mcp-cli cmd --server mikrotik --tool mikrotik_download_file --tool-args '{"filename": "full_backup.backup"}'

# Upload file
uv run mcp-cli cmd --server mikrotik --tool mikrotik_upload_file --tool-args '{"filename": "config.rsc", "content_base64": "base64_encoded_content"}'

# Restore backup
uv run mcp-cli cmd --server mikrotik --tool mikrotik_restore_backup --tool-args '{"filename": "full_backup.backup"}'

# Import configuration
uv run mcp-cli cmd --server mikrotik --tool mikrotik_import_configuration --tool-args '{"filename": "config.rsc"}'

# Remove file
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_file --tool-args '{"filename": "old_backup.backup"}'
```

### Log Management
```bash
# Get logs
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_logs --tool-args '{"topics": "firewall", "limit": 100}'

# Get logs by severity
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_logs_by_severity --tool-args '{"severity": "error", "limit": 50}'

# Search logs
uv run mcp-cli cmd --server mikrotik --tool mikrotik_search_logs --tool-args '{"search_term": "login failed", "case_sensitive": false}'

# Get security logs
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_security_logs --tool-args '{"limit": 100}'

# Get log statistics
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_log_statistics --tool-args '{}'

# Export logs
uv run mcp-cli cmd --server mikrotik --tool mikrotik_export_logs --tool-args '{"filename": "firewall_logs", "topics": "firewall", "format": "csv"}'

# Monitor logs
uv run mcp-cli cmd --server mikrotik --tool mikrotik_monitor_logs --tool-args '{"topics": "firewall", "duration": 30}'

# Clear logs
uv run mcp-cli cmd --server mikrotik --tool mikrotik_clear_logs --tool-args '{}'
```

### Firewall Filter Rules
```bash
# Create basic firewall rules
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_filter_rule --tool-args '{"chain": "input", "action": "accept", "connection_state": "established,related", "comment": "Accept established"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_filter_rule --tool-args '{"chain": "input", "action": "drop", "connection_state": "invalid", "comment": "Drop invalid"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_filter_rule --tool-args '{"chain": "input", "action": "accept", "protocol": "icmp", "comment": "Accept ICMP"}'

# List firewall rules
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_filter_rules --tool-args '{"chain_filter": "input"}'

# Get firewall rule details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_filter_rule --tool-args '{"rule_id": "*1"}'

# Move firewall rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_move_filter_rule --tool-args '{"rule_id": "*1", "destination": 0}'

# Enable/Disable firewall rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_filter_rule --tool-args '{"rule_id": "*1"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_filter_rule --tool-args '{"rule_id": "*1"}'

# Create basic firewall setup
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_basic_firewall_setup --tool-args '{}'

# Remove firewall rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_filter_rule --tool-args '{"rule_id": "*1"}'
```

### Route Management
```bash
# Add route
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_route --tool-args '{"dst_address": "10.0.0.0/8", "gateway": "192.168.1.1", "comment": "Corporate network"}'

# Add default route
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_default_route --tool-args '{"gateway": "192.168.1.1", "distance": 1}'

# Add blackhole route
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_blackhole_route --tool-args '{"dst_address": "192.168.99.0/24", "comment": "Block subnet"}'

# List routes
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_routes --tool-args '{"active_only": true}'

# Get route details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_route --tool-args '{"route_id": "*1"}'

# Check route path
uv run mcp-cli cmd --server mikrotik --tool mikrotik_check_route_path --tool-args '{"destination": "8.8.8.8"}'

# Get routing table
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_routing_table --tool-args '{"table_name": "main"}'

# Get route statistics
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_route_statistics --tool-args '{}'

# Enable/Disable route
uv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_route --tool-args '{"route_id": "*1"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_route --tool-args '{"route_id": "*1"}'

# Remove route
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_route --tool-args '{"route_id": "*1"}'
```

### DNS Configuration
```bash
# Set DNS servers
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_dns_servers --tool-args '{"servers": ["8.8.8.8", "8.8.4.4"], "allow_remote_requests": true}'

# Get DNS settings
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_dns_settings --tool-args '{}'

# Add static DNS entry
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_dns_static --tool-args '{"name": "router.local", "address": "192.168.1.1", "comment": "Local router"}'

# Add CNAME record
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_dns_static --tool-args '{"name": "www.example.com", "cname": "example.com"}'

# List static DNS entries
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_dns_static --tool-args '{"name_filter": "local"}'

# Update DNS entry
uv run mcp-cli cmd --server mikrotik --tool mikrotik_update_dns_static --tool-args '{"entry_id": "*1", "address": "192.168.1.2"}'

# Add DNS regexp
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_dns_regexp --tool-args '{"regexp": ".*\\.ads\\..*", "address": "0.0.0.0", "comment": "Block ads"}'

# Test DNS query
uv run mcp-cli cmd --server mikrotik --tool mikrotik_test_dns_query --tool-args '{"name": "google.com"}'

# Get DNS cache
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_dns_cache --tool-args '{}'

# Flush DNS cache
uv run mcp-cli cmd --server mikrotik --tool mikrotik_flush_dns_cache --tool-args '{}'

# Export DNS config
uv run mcp-cli cmd --server mikrotik --tool mikrotik_export_dns_config --tool-args '{"filename": "dns_config"}'

# Remove DNS entry
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_dns_static --tool-args '{"entry_id": "*1"}'
```

### User Management
```bash
# Add user
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_user --tool-args '{"name": "newuser", "password": "SecurePass123", "group": "write", "comment": "New operator"}'

# List users
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_users --tool-args '{"group_filter": "write"}'

# Get user details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_user --tool-args '{"name": "newuser"}'

# Update user
uv run mcp-cli cmd --server mikrotik --tool mikrotik_update_user --tool-args '{"name": "newuser", "password": "NewSecurePass456"}'

# Enable/Disable user
uv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_user --tool-args '{"name": "newuser"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_user --tool-args '{"name": "newuser"}'

# Add user group
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_user_group --tool-args '{"name": "operators", "policy": ["read", "write", "test"], "comment": "Operator group"}'

# List user groups
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_user_groups --tool-args '{}'

# Get active users
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_active_users --tool-args '{}'

# Export user config
uv run mcp-cli cmd --server mikrotik --tool mikrotik_export_user_config --tool-args '{"filename": "user_config"}'

# Remove user
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_user --tool-args '{"name": "newuser"}'
```

#### Setting Up a New Network Segment
```bash
# Create VLAN
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_vlan_interface --tool-args '{"name": "vlan200", "vlan_id": 200, "interface": "ether1", "comment": "Guest Network"}'

# Add IP address
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_ip_address --tool-args '{"address": "192.168.200.1/24", "interface": "vlan200"}'

# Create DHCP pool
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_pool --tool-args '{"name": "pool-200", "ranges": "192.168.200.10-192.168.200.100"}'

# Create DHCP network
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_network --tool-args '{"network": "192.168.200.0/24", "gateway": "192.168.200.1", "dns_servers": ["8.8.8.8", "8.8.4.4"]}'

# Create DHCP server
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_server --tool-args '{"name": "dhcp-200", "interface": "vlan200", "address_pool": "pool-200"}'

# Create NAT rule
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{"chain": "srcnat", "action": "masquerade", "out_interface": "ether1", "comment": "Internet access for VLAN 200"}'
```

#### Port Forwarding Setup
```bash
# Forward HTTP traffic
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{"chain": "dstnat", "action": "dst-nat", "dst_address": "203.0.113.1", "dst_port": "80", "protocol": "tcp", "to_addresses": "192.168.100.10", "to_ports": "80", "comment": "Web server"}'

# Forward HTTPS traffic
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{"chain": "dstnat", "action": "dst-nat", "dst_address": "203.0.113.1", "dst_port": "443", "protocol": "tcp", "to_addresses": "192.168.100.10", "to_ports": "443", "comment": "HTTPS server"}'

# Forward custom SSH port
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{"chain": "dstnat", "action": "dst-nat", "dst_address": "203.0.113.1", "dst_port": "2222", "protocol": "tcp", "to_addresses": "192.168.100.10", "to_ports": "22", "comment": "SSH server"}'
```

#### Backup and Restore Process
```bash
# Create backup user
uv run mcp-cli cmd --server mikrotik --tool mikrotik_add_user --tool-args '{"name": "backup_user", "password": "BackupPass123", "group": "read", "comment": "Backup account"}'

# Create full backup
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_backup --tool-args '{"name": "daily_backup", "include_password": true}'

# Export configuration
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_export --tool-args '{"name": "config_export", "file_format": "rsc", "export_type": "full"}'

# Export firewall rules
uv run mcp-cli cmd --server mikrotik --tool mikrotik_export_section --tool-args '{"section": "/ip/firewall/filter", "name": "firewall_backup"}'

# Export NAT rules
uv run mcp-cli cmd --server mikrotik --tool mikrotik_export_section --tool-args '{"section": "/ip/firewall/nat", "name": "nat_backup"}'
```

### Create Wireless Interface
```bash
# Create basic AP interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "wlan1", "radio_name": "wlan1", "mode": "ap-bridge", "ssid": "MyNetwork", "comment": "Main WiFi Network"}'

# Create station interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "wlan-sta", "radio_name": "wlan2", "mode": "station", "ssid": "UpstreamWiFi"}'

# Create with specific frequency and band
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "wlan-5g", "radio_name": "wlan1", "mode": "ap-bridge", "ssid": "MyNetwork-5G", "frequency": "5180", "band": "5ghz-a/n/ac", "channel_width": "80mhz"}'
```

### List and Manage Wireless Interfaces
```bash
# List all wireless interfaces
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_interfaces --tool-args '{}'

# List only AP interfaces
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_interfaces --tool-args '{"mode_filter": "ap-bridge"}'

# List only running interfaces
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_interfaces --tool-args '{"running_only": true}'

# Get specific interface details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_interface --tool-args '{"name": "wlan1"}'

# Update wireless interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_update_wireless_interface --tool-args '{"name": "wlan1", "ssid": "UpdatedNetworkName", "comment": "Updated main network"}'

# Enable/Disable wireless interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_wireless_interface --tool-args '{"name": "wlan1"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{"name": "wlan1"}'

# Remove wireless interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_wireless_interface --tool-args '{"name": "wlan-guest"}'
```

## Wireless Security Profile Management

### Create Security Profiles
```bash
# Create WPA2-PSK security profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "wpa2-security", "mode": "dynamic-keys", "authentication_types": ["wpa2-psk"], "unicast_ciphers": ["aes-ccm"], "group_ciphers": ["aes-ccm"], "wpa2_pre_shared_key": "SecurePassword123"}'

# Create mixed WPA/WPA2 profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "mixed-security", "mode": "dynamic-keys", "authentication_types": ["wpa-psk", "wpa2-psk"], "unicast_ciphers": ["tkip", "aes-ccm"], "group_ciphers": ["tkip"], "wpa_pre_shared_key": "Password123", "wpa2_pre_shared_key": "Password123"}'

# Create WPA2-Enterprise profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "enterprise-security", "mode": "dynamic-keys", "authentication_types": ["wpa2-eap"], "unicast_ciphers": ["aes-ccm"], "group_ciphers": ["aes-ccm"], "eap_methods": "peap,tls"}'

# Create open network profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "open-network", "mode": "none", "comment": "Guest network - no security"}'
```

### Manage Security Profiles
```bash
# List all security profiles
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_security_profiles --tool-args '{}'

# List WPA2 profiles only
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_security_profiles --tool-args '{"mode_filter": "dynamic-keys"}'

# Get specific profile details
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_security_profile --tool-args '{"name": "wpa2-security"}'

# Apply security profile to interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{"interface_name": "wlan1", "security_profile": "wpa2-security"}'

# Remove security profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_wireless_security_profile --tool-args '{"name": "old-profile"}'
```

## Wireless Network Operations

### Network Scanning and Monitoring
```bash
# Scan for available networks
uv run mcp-cli cmd --server mikrotik --tool mikrotik_scan_wireless_networks --tool-args '{"interface": "wlan1", "duration": 10}'

# Quick scan (5 seconds)
uv run mcp-cli cmd --server mikrotik --tool mikrotik_scan_wireless_networks --tool-args '{"interface": "wlan2"}'

# Get connected clients (all interfaces)
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_registration_table --tool-args '{}'

# Get clients for specific interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_registration_table --tool-args '{"interface": "wlan1"}'
```

## Wireless Access List Management

### Create Access List Entries
```bash
# Allow specific MAC address
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{"interface": "wlan1", "mac_address": "AA:BB:CC:DD:EE:FF", "action": "accept", "comment": "Trusted device"}'

# Block specific MAC address
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{"interface": "wlan1", "mac_address": "11:22:33:44:55:66", "action": "reject", "comment": "Blocked device"}'

# Allow with signal strength requirement
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{"interface": "wlan1", "mac_address": "AA:BB:CC:DD:EE:FF", "action": "accept", "signal_range": "-80..-50", "comment": "Strong signal only"}'

# Time-based access control
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{"interface": "wlan1", "mac_address": "AA:BB:CC:DD:EE:FF", "action": "accept", "time": "8h-18h,mon,tue,wed,thu,fri", "comment": "Work hours only"}'
```

### Manage Access Lists
```bash
# List all access list entries
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_access_list --tool-args '{}'

# List entries for specific interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_access_list --tool-args '{"interface_filter": "wlan1"}'

# List only blocked entries
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_access_list --tool-args '{"action_filter": "reject"}'

# Remove access list entry
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_wireless_access_list_entry --tool-args '{"entry_id": "*1"}'
```

## Complete WiFi Network Setup Examples

### Basic Home Network Setup
```bash
# 1. Create security profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "home-security", "mode": "dynamic-keys", "authentication_types": ["wpa2-psk"], "unicast_ciphers": ["aes-ccm"], "group_ciphers": ["aes-ccm"], "wpa2_pre_shared_key": "MyHomePassword123"}'

# 2. Create wireless interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "home-wifi", "radio_name": "wlan1", "mode": "ap-bridge", "ssid": "HomeNetwork", "band": "2ghz-b/g/n", "comment": "Main home network"}'

# 3. Apply security profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{"interface_name": "home-wifi", "security_profile": "home-security"}'

# 4. Enable the interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{"name": "home-wifi"}'
```

### Guest Network Setup
```bash
# 1. Create open security profile for guests
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "guest-open", "mode": "none", "comment": "Open guest network"}'

# 2. Create guest wireless interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "guest-wifi", "radio_name": "wlan1", "mode": "ap-bridge", "ssid": "GuestNetwork", "comment": "Guest access network"}'

# 3. Apply open security profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{"interface_name": "guest-wifi", "security_profile": "guest-open"}'

# 4. Enable guest network
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{"name": "guest-wifi"}'
```

### Enterprise Network Setup
```bash
# 1. Create WPA2-Enterprise security profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "corp-security", "mode": "dynamic-keys", "authentication_types": ["wpa2-eap"], "unicast_ciphers": ["aes-ccm"], "group_ciphers": ["aes-ccm"], "eap_methods": "peap", "comment": "Corporate WPA2-Enterprise"}'

# 2. Create corporate wireless interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "corp-wifi", "radio_name": "wlan1", "mode": "ap-bridge", "ssid": "CorpNetwork", "band": "5ghz-a/n/ac", "channel_width": "80mhz", "comment": "Corporate network"}'

# 3. Apply enterprise security
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{"interface_name": "corp-wifi", "security_profile": "corp-security"}'

# 4. Create access control for specific devices
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{"interface": "corp-wifi", "mac_address": "00:11:22:33:44:55", "action": "accept", "comment": "Corporate laptop"}'
```

### Dual-Band Setup (2.4GHz + 5GHz)
```bash
# 1. Create security profile
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "dual-band-security", "mode": "dynamic-keys", "authentication_types": ["wpa2-psk"], "unicast_ciphers": ["aes-ccm"], "group_ciphers": ["aes-ccm"], "wpa2_pre_shared_key": "DualBandPassword123"}'

# 2. Create 2.4GHz interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "wifi-2g", "radio_name": "wlan1", "mode": "ap-bridge", "ssid": "MyNetwork", "band": "2ghz-b/g/n", "channel_width": "20mhz", "comment": "2.4GHz network"}'

# 3. Create 5GHz interface  
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "wifi-5g", "radio_name": "wlan2", "mode": "ap-bridge", "ssid": "MyNetwork-5G", "band": "5ghz-a/n/ac", "channel_width": "80mhz", "comment": "5GHz network"}'

# 4. Apply security to both interfaces
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{"interface_name": "wifi-2g", "security_profile": "dual-band-security"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{"interface_name": "wifi-5g", "security_profile": "dual-band-security"}'

# 5. Enable both interfaces
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{"name": "wifi-2g"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{"name": "wifi-5g"}'
```

### Point-to-Point Wireless Link
```bash
# On first device (Station)
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "p2p-station", "radio_name": "wlan1", "mode": "station", "ssid": "P2P-Link", "frequency": "5180", "band": "5ghz-a/n"}'

# On second device (AP)  
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{"name": "p2p-ap", "radio_name": "wlan1", "mode": "ap-bridge", "ssid": "P2P-Link", "frequency": "5180", "band": "5ghz-a/n"}'

# Create security for P2P link
uv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{"name": "p2p-security", "mode": "dynamic-keys", "authentication_types": ["wpa2-psk"], "unicast_ciphers": ["aes-ccm"], "group_ciphers": ["aes-ccm"], "wpa2_pre_shared_key": "P2PLinkPassword123"}'

# Apply security to both ends
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{"interface_name": "p2p-station", "security_profile": "p2p-security"}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{"interface_name": "p2p-ap", "security_profile": "p2p-security"}'
```

## Monitoring and Troubleshooting

### Network Analysis
```bash
# Scan for interference and available channels
uv run mcp-cli cmd --server mikrotik --tool mikrotik_scan_wireless_networks --tool-args '{"interface": "wlan1", "duration": 30}'

# Monitor connected clients
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_registration_table --tool-args '{"interface": "wlan1"}'

# Check interface status
uv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_interface --tool-args '{"name": "wlan1"}'

# List all wireless configurations
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_interfaces --tool-args '{}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_security_profiles --tool-args '{}'
uv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_access_list --tool-args '{}'
```

### Maintenance Operations
```bash
# Disable interface for maintenance
uv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_wireless_interface --tool-args '{"name": "wlan1"}'

# Update configuration
uv run mcp-cli cmd --server mikrotik --tool mikrotik_update_wireless_interface --tool-args '{"name": "wlan1", "channel_width": "40mhz", "comment": "Updated for better performance"}'

# Re-enable interface
uv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{"name": "wlan1"}'

# Clean up unused profiles
uv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_wireless_security_profile --tool-args '{"name": "old-profile"}'
```

# Using MCPO with MikroTik MCP Server

This guide shows how to expose your MikroTik MCP server as a RESTful API using MCPO (MCP-to-OpenAPI proxy).

## Prerequisites

- Python 3.8+
- MikroTik MCP server already set up
- `uv` package manager (recommended) or `pip`

## Installation

Install MCPO using one of these methods:

```bash
# Option 1: Using uvx (recommended - no installation needed)
uvx mcpo --help

# Option 2: Using pip
pip install mcpo
```

## Configuration

Create a `mcp-config.json` file in your project directory:

```json
{
  "mcpServers": {
    "mikrotik-mcp-server": {
      "command": "python",
      "args": [
        "src/mcp_mikrotik/server.py",
        "--password", "admin",
        "--host", "192.168.1.1",
        "--port", "22",
        "--username", "admin"
      ],
      "env": {}
    }
  }
}
```

**Note:** Adjust the MikroTik connection parameters (`host`, `username`, `password`, `port`) according to your setup.

## Starting the MCPO Server

```bash
# Start MCPO with API key authentication
uvx mcpo --port 8000 --api-key "your-secret-key" --config ./mcp-config.json

# Or without authentication (not recommended for production)
uvx mcpo --port 8000 --config ./mcp-config.json
```

The server will start and display:
- Server running on `http://0.0.0.0:8000`
- Interactive API docs available at `http://localhost:8000/docs`

### cURL Examples

**List IP Addresses:**
```bash
curl -X POST http://localhost:8000/mikrotik-mcp-server/mikrotik_list_ip_addresses \
  -H "Authorization: Bearer your-secret-key" \
  -H "Content-Type: application/json" \
  -d '{}'
```

## License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mcp-server-mikrotik",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "mcp, mikrotik, router, network, ai, assistant",
    "author": null,
    "author_email": "Jeff Nasseri <sir.jeff.nasseri@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/1b/1f/c72cc44d04a108ed3d7e79a7c9a09bc254c9c15801fbd0f1b1842c77424d/mcp_server_mikrotik-0.2.0.post20.tar.gz",
    "platform": null,
    "description": "[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/jeff-nasseri-mikrotik-mcp-badge.png)](https://mseep.ai/app/jeff-nasseri-mikrotik-mcp)\n\n## Overview\n\nMikroTik MCP provides a bridge between AI assistants and MikroTik RouterOS devices. It allows AI assistants to interact with MikroTik routers through natural language requests, executing commands like managing VLANs, configuring firewall rules, handling DNS settings, and more.\n\n## Claude Desktop\n\nhttps://github.com/user-attachments/assets/24fadcdc-c6a8-48ed-90ac-74baf8f94b59\n\n\n## Inspector\n\n\nhttps://github.com/user-attachments/assets/e0301ff2-8144-4503-83d0-48589d95027d\n\n\n## Installation\n\n### Prerequisites\n- Python 3.8+\n- MikroTik RouterOS device with API access enabled\n- Python dependencies (routeros-api or similar)\n\n### Manual Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/jeff-nasseri/mikrotik-mcp/tree/master\ncd mcp-mikrotik\n\n# Create virtual environment\npython -m venv .venv\nsource .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\n\n# Install dependencies\npip install -e .\n\n# Run the server\nmcp-server-mikrotik\n```\n\n### Running Integration Tests\n\nThis project uses **pytest** for integration testing against a temporary MikroTik RouterOS container.\n\n1. Make sure you have **Docker** installed and running.\n2. Install test dependencies:\n\n   ```bash\n   pip install -r requirements-dev.txt\n   ```\n3. Run the tests:\n\n   ```bash\n   pytest -v\n   ```\n\n   This will:\n\n   * Spin up a MikroTik RouterOS container\n   * Run integration tests (create, list, and delete user)\n   * Tear down the container automatically\n\nBy default, tests are marked with `@pytest.mark.integration`.\nYou can run only integration tests with:\n\n```bash\npytest -m integration -v\n```\n\n## Tools\n\nHere are the available tools in the MikroTik MCP server:\n\n### VLAN Interface Management\n\n#### `mikrotik_create_vlan_interface`\nCreates a VLAN interface on MikroTik device.\n- Parameters:\n  - `name` (required): VLAN interface name\n  - `vlan_id` (required): VLAN ID (1-4094)\n  - `interface` (required): Parent interface\n  - `comment` (optional): Description\n  - `disabled` (optional): Disable interface\n  - `mtu` (optional): MTU size\n  - `use_service_tag` (optional): Use service tag\n  - `arp` (optional): ARP mode\n  - `arp_timeout` (optional): ARP timeout\n- Example:\n  ```\n  mikrotik_create_vlan_interface(name=\"vlan100\", vlan_id=100, interface=\"ether1\")\n  ```\n\n#### `mikrotik_list_vlan_interfaces`\nLists VLAN interfaces on MikroTik device.\n- Parameters:\n  - `name_filter` (optional): Filter by name\n  - `vlan_id_filter` (optional): Filter by VLAN ID\n  - `interface_filter` (optional): Filter by parent interface\n  - `disabled_only` (optional): Show only disabled interfaces\n- Example:\n  ```\n  mikrotik_list_vlan_interfaces(vlan_id_filter=100)\n  ```\n\n#### `mikrotik_get_vlan_interface`\nGets detailed information about a specific VLAN interface.\n- Parameters:\n  - `name` (required): VLAN interface name\n- Example:\n  ```\n  mikrotik_get_vlan_interface(name=\"vlan100\")\n  ```\n\n#### `mikrotik_update_vlan_interface`\nUpdates an existing VLAN interface.\n- Parameters:\n  - `name` (required): Current VLAN interface name\n  - `new_name` (optional): New name\n  - `vlan_id` (optional): New VLAN ID\n  - `interface` (optional): New parent interface\n  - `comment` (optional): New description\n  - `disabled` (optional): Enable/disable interface\n  - `mtu` (optional): New MTU size\n  - `use_service_tag` (optional): Use service tag\n  - `arp` (optional): ARP mode\n  - `arp_timeout` (optional): ARP timeout\n- Example:\n  ```\n  mikrotik_update_vlan_interface(name=\"vlan100\", comment=\"Production VLAN\")\n  ```\n\n#### `mikrotik_remove_vlan_interface`\nRemoves a VLAN interface from MikroTik device.\n- Parameters:\n  - `name` (required): VLAN interface name\n- Example:\n  ```\n  mikrotik_remove_vlan_interface(name=\"vlan100\")\n  ```\n\n### IP Address Management\n\n#### `mikrotik_add_ip_address`\nAdds an IP address to an interface.\n- Parameters:\n  - `address` (required): IP address with CIDR notation\n  - `interface` (required): Interface name\n  - `network` (optional): Network address\n  - `broadcast` (optional): Broadcast address\n  - `comment` (optional): Description\n  - `disabled` (optional): Disable address\n- Example:\n  ```\n  mikrotik_add_ip_address(address=\"192.168.1.1/24\", interface=\"vlan100\")\n  ```\n\n#### `mikrotik_list_ip_addresses`\nLists IP addresses on MikroTik device.\n- Parameters:\n  - `interface_filter` (optional): Filter by interface\n  - `address_filter` (optional): Filter by address\n  - `network_filter` (optional): Filter by network\n  - `disabled_only` (optional): Show only disabled addresses\n  - `dynamic_only` (optional): Show only dynamic addresses\n- Example:\n  ```\n  mikrotik_list_ip_addresses(interface_filter=\"vlan100\")\n  ```\n\n#### `mikrotik_get_ip_address`\nGets detailed information about a specific IP address.\n- Parameters:\n  - `address_id` (required): Address ID\n- Example:\n  ```\n  mikrotik_get_ip_address(address_id=\"*1\")\n  ```\n\n#### `mikrotik_remove_ip_address`\nRemoves an IP address from MikroTik device.\n- Parameters:\n  - `address_id` (required): Address ID\n- Example:\n  ```\n  mikrotik_remove_ip_address(address_id=\"*1\")\n  ```\n\n### DHCP Server Management\n\n#### `mikrotik_create_dhcp_server`\nCreates a DHCP server on MikroTik device.\n- Parameters:\n  - `name` (required): DHCP server name\n  - `interface` (required): Interface to bind to\n  - `lease_time` (optional): Lease time (default: \"1d\")\n  - `address_pool` (optional): IP pool name\n  - `disabled` (optional): Disable server\n  - `authoritative` (optional): Authoritative mode\n  - `delay_threshold` (optional): Delay threshold\n  - `comment` (optional): Description\n- Example:\n  ```\n  mikrotik_create_dhcp_server(name=\"dhcp-vlan100\", interface=\"vlan100\", address_pool=\"pool-vlan100\")\n  ```\n\n#### `mikrotik_list_dhcp_servers`\nLists DHCP servers on MikroTik device.\n- Parameters:\n  - `name_filter` (optional): Filter by name\n  - `interface_filter` (optional): Filter by interface\n  - `disabled_only` (optional): Show only disabled servers\n  - `invalid_only` (optional): Show only invalid servers\n- Example:\n  ```\n  mikrotik_list_dhcp_servers()\n  ```\n\n#### `mikrotik_get_dhcp_server`\nGets detailed information about a specific DHCP server.\n- Parameters:\n  - `name` (required): DHCP server name\n- Example:\n  ```\n  mikrotik_get_dhcp_server(name=\"dhcp-vlan100\")\n  ```\n\n#### `mikrotik_create_dhcp_network`\nCreates a DHCP network configuration.\n- Parameters:\n  - `network` (required): Network address\n  - `gateway` (required): Gateway address\n  - `netmask` (optional): Network mask\n  - `dns_servers` (optional): DNS server list\n  - `domain` (optional): Domain name\n  - `wins_servers` (optional): WINS server list\n  - `ntp_servers` (optional): NTP server list\n  - `dhcp_option` (optional): DHCP options\n  - `comment` (optional): Description\n- Example:\n  ```\n  mikrotik_create_dhcp_network(network=\"192.168.1.0/24\", gateway=\"192.168.1.1\", dns_servers=[\"8.8.8.8\", \"8.8.4.4\"])\n  ```\n\n#### `mikrotik_create_dhcp_pool`\nCreates a DHCP address pool.\n- Parameters:\n  - `name` (required): Pool name\n  - `ranges` (required): IP ranges\n  - `next_pool` (optional): Next pool name\n  - `comment` (optional): Description\n- Example:\n  ```\n  mikrotik_create_dhcp_pool(name=\"pool-vlan100\", ranges=\"192.168.1.10-192.168.1.250\")\n  ```\n\n#### `mikrotik_remove_dhcp_server`\nRemoves a DHCP server from MikroTik device.\n- Parameters:\n  - `name` (required): DHCP server name\n- Example:\n  ```\n  mikrotik_remove_dhcp_server(name=\"dhcp-vlan100\")\n  ```\n\n### NAT Rules Management\n\n#### `mikrotik_create_nat_rule`\nCreates a NAT rule on MikroTik device.\n- Parameters:\n  - `chain` (required): Chain type (\"srcnat\" or \"dstnat\")\n  - `action` (required): Action type\n  - `src_address` (optional): Source address\n  - `dst_address` (optional): Destination address\n  - `src_port` (optional): Source port\n  - `dst_port` (optional): Destination port\n  - `protocol` (optional): Protocol\n  - `in_interface` (optional): Input interface\n  - `out_interface` (optional): Output interface\n  - `to_addresses` (optional): Translation addresses\n  - `to_ports` (optional): Translation ports\n  - `comment` (optional): Description\n  - `disabled` (optional): Disable rule\n  - `log` (optional): Enable logging\n  - `log_prefix` (optional): Log prefix\n  - `place_before` (optional): Rule placement\n- Example:\n  ```\n  mikrotik_create_nat_rule(chain=\"srcnat\", action=\"masquerade\", out_interface=\"ether1\")\n  ```\n\n#### `mikrotik_list_nat_rules`\nLists NAT rules on MikroTik device.\n- Parameters:\n  - `chain_filter` (optional): Filter by chain\n  - `action_filter` (optional): Filter by action\n  - `src_address_filter` (optional): Filter by source address\n  - `dst_address_filter` (optional): Filter by destination address\n  - `protocol_filter` (optional): Filter by protocol\n  - `interface_filter` (optional): Filter by interface\n  - `disabled_only` (optional): Show only disabled rules\n  - `invalid_only` (optional): Show only invalid rules\n- Example:\n  ```\n  mikrotik_list_nat_rules(chain_filter=\"srcnat\")\n  ```\n\n#### `mikrotik_get_nat_rule`\nGets detailed information about a specific NAT rule.\n- Parameters:\n  - `rule_id` (required): Rule ID\n- Example:\n  ```\n  mikrotik_get_nat_rule(rule_id=\"*1\")\n  ```\n\n#### `mikrotik_update_nat_rule`\nUpdates an existing NAT rule.\n- Parameters:\n  - `rule_id` (required): Rule ID\n  - All parameters from `create_nat_rule` (optional)\n- Example:\n  ```\n  mikrotik_update_nat_rule(rule_id=\"*1\", comment=\"Updated NAT rule\")\n  ```\n\n#### `mikrotik_remove_nat_rule`\nRemoves a NAT rule from MikroTik device.\n- Parameters:\n  - `rule_id` (required): Rule ID\n- Example:\n  ```\n  mikrotik_remove_nat_rule(rule_id=\"*1\")\n  ```\n\n#### `mikrotik_move_nat_rule`\nMoves a NAT rule to a different position.\n- Parameters:\n  - `rule_id` (required): Rule ID\n  - `destination` (required): New position\n- Example:\n  ```\n  mikrotik_move_nat_rule(rule_id=\"*1\", destination=0)\n  ```\n\n#### `mikrotik_enable_nat_rule`\nEnables a NAT rule.\n- Parameters:\n  - `rule_id` (required): Rule ID\n- Example:\n  ```\n  mikrotik_enable_nat_rule(rule_id=\"*1\")\n  ```\n\n#### `mikrotik_disable_nat_rule`\nDisables a NAT rule.\n- Parameters:\n  - `rule_id` (required): Rule ID\n- Example:\n  ```\n  mikrotik_disable_nat_rule(rule_id=\"*1\")\n  ```\n\n### IP Pool Management\n\n#### `mikrotik_create_ip_pool`\nCreates an IP pool on MikroTik device.\n- Parameters:\n  - `name` (required): Pool name\n  - `ranges` (required): IP ranges\n  - `next_pool` (optional): Next pool name\n  - `comment` (optional): Description\n- Example:\n  ```\n  mikrotik_create_ip_pool(name=\"pool1\", ranges=\"192.168.1.100-192.168.1.200\")\n  ```\n\n#### `mikrotik_list_ip_pools`\nLists IP pools on MikroTik device.\n- Parameters:\n  - `name_filter` (optional): Filter by name\n  - `ranges_filter` (optional): Filter by ranges\n  - `include_used` (optional): Include used addresses\n- Example:\n  ```\n  mikrotik_list_ip_pools()\n  ```\n\n#### `mikrotik_get_ip_pool`\nGets detailed information about a specific IP pool.\n- Parameters:\n  - `name` (required): Pool name\n- Example:\n  ```\n  mikrotik_get_ip_pool(name=\"pool1\")\n  ```\n\n#### `mikrotik_update_ip_pool`\nUpdates an existing IP pool.\n- Parameters:\n  - `name` (required): Current pool name\n  - `new_name` (optional): New name\n  - `ranges` (optional): New ranges\n  - `next_pool` (optional): New next pool\n  - `comment` (optional): New description\n- Example:\n  ```\n  mikrotik_update_ip_pool(name=\"pool1\", ranges=\"192.168.1.100-192.168.1.250\")\n  ```\n\n#### `mikrotik_remove_ip_pool`\nRemoves an IP pool from MikroTik device.\n- Parameters:\n  - `name` (required): Pool name\n- Example:\n  ```\n  mikrotik_remove_ip_pool(name=\"pool1\")\n  ```\n\n#### `mikrotik_list_ip_pool_used`\nLists used addresses from IP pools.\n- Parameters:\n  - `pool_name` (optional): Filter by pool name\n  - `address_filter` (optional): Filter by address\n  - `mac_filter` (optional): Filter by MAC address\n  - `info_filter` (optional): Filter by info\n- Example:\n  ```\n  mikrotik_list_ip_pool_used(pool_name=\"pool1\")\n  ```\n\n#### `mikrotik_expand_ip_pool`\nExpands an existing IP pool by adding more ranges.\n- Parameters:\n  - `name` (required): Pool name\n  - `additional_ranges` (required): Additional IP ranges\n- Example:\n  ```\n  mikrotik_expand_ip_pool(name=\"pool1\", additional_ranges=\"192.168.1.251-192.168.1.254\")\n  ```\n\n### Backup and Export Management\n\n#### `mikrotik_create_backup`\nCreates a system backup on MikroTik device.\n- Parameters:\n  - `name` (optional): Backup filename\n  - `dont_encrypt` (optional): Don't encrypt backup\n  - `include_password` (optional): Include passwords\n  - `comment` (optional): Description\n- Example:\n  ```\n  mikrotik_create_backup(name=\"backup-2024-01-01\")\n  ```\n\n#### `mikrotik_list_backups`\nLists backup files on MikroTik device.\n- Parameters:\n  - `name_filter` (optional): Filter by name\n  - `include_exports` (optional): Include export files\n- Example:\n  ```\n  mikrotik_list_backups()\n  ```\n\n#### `mikrotik_create_export`\nCreates a configuration export on MikroTik device.\n- Parameters:\n  - `name` (optional): Export filename\n  - `file_format` (optional): Format (\"rsc\", \"json\", \"xml\")\n  - `export_type` (optional): Type (\"full\", \"compact\", \"verbose\")\n  - `hide_sensitive` (optional): Hide sensitive data\n  - `verbose` (optional): Verbose output\n  - `compact` (optional): Compact output\n  - `comment` (optional): Description\n- Example:\n  ```\n  mikrotik_create_export(name=\"config-export\", file_format=\"rsc\")\n  ```\n\n#### `mikrotik_export_section`\nExports a specific configuration section.\n- Parameters:\n  - `section` (required): Section to export\n  - `name` (optional): Export filename\n  - `hide_sensitive` (optional): Hide sensitive data\n  - `compact` (optional): Compact output\n- Example:\n  ```\n  mikrotik_export_section(section=\"/ip/firewall\", name=\"firewall-config\")\n  ```\n\n#### `mikrotik_download_file`\nDownloads a file from MikroTik device.\n- Parameters:\n  - `filename` (required): Filename to download\n  - `file_type` (optional): File type (\"backup\" or \"export\")\n- Example:\n  ```\n  mikrotik_download_file(filename=\"backup-2024-01-01.backup\")\n  ```\n\n#### `mikrotik_upload_file`\nUploads a file to MikroTik device.\n- Parameters:\n  - `filename` (required): Filename\n  - `content_base64` (required): Base64 encoded content\n- Example:\n  ```\n  mikrotik_upload_file(filename=\"config.rsc\", content_base64=\"...\")\n  ```\n\n#### `mikrotik_restore_backup`\nRestores a system backup on MikroTik device.\n- Parameters:\n  - `filename` (required): Backup filename\n  - `password` (optional): Backup password\n- Example:\n  ```\n  mikrotik_restore_backup(filename=\"backup-2024-01-01.backup\")\n  ```\n\n#### `mikrotik_import_configuration`\nImports a configuration script file.\n- Parameters:\n  - `filename` (required): Script filename\n  - `run_after_reset` (optional): Run after reset\n  - `verbose` (optional): Verbose output\n- Example:\n  ```\n  mikrotik_import_configuration(filename=\"config.rsc\")\n  ```\n\n#### `mikrotik_remove_file`\nRemoves a file from MikroTik device.\n- Parameters:\n  - `filename` (required): Filename to remove\n- Example:\n  ```\n  mikrotik_remove_file(filename=\"old-backup.backup\")\n  ```\n\n#### `mikrotik_backup_info`\nGets detailed information about a backup file.\n- Parameters:\n  - `filename` (required): Backup filename\n- Example:\n  ```\n  mikrotik_backup_info(filename=\"backup-2024-01-01.backup\")\n  ```\n\n### Log Management\n\n#### `mikrotik_get_logs`\nGets logs from MikroTik device with filtering options.\n- Parameters:\n  - `topics` (optional): Log topics\n  - `action` (optional): Log action\n  - `time_filter` (optional): Time filter\n  - `message_filter` (optional): Message filter\n  - `prefix_filter` (optional): Prefix filter\n  - `limit` (optional): Result limit\n  - `follow` (optional): Follow logs\n  - `print_as` (optional): Output format\n- Example:\n  ```\n  mikrotik_get_logs(topics=\"firewall\", limit=100)\n  ```\n\n#### `mikrotik_get_logs_by_severity`\nGets logs filtered by severity level.\n- Parameters:\n  - `severity` (required): Severity level (\"debug\", \"info\", \"warning\", \"error\", \"critical\")\n  - `time_filter` (optional): Time filter\n  - `limit` (optional): Result limit\n- Example:\n  ```\n  mikrotik_get_logs_by_severity(severity=\"error\", limit=50)\n  ```\n\n#### `mikrotik_get_logs_by_topic`\nGets logs for a specific topic/facility.\n- Parameters:\n  - `topic` (required): Log topic\n  - `time_filter` (optional): Time filter\n  - `limit` (optional): Result limit\n- Example:\n  ```\n  mikrotik_get_logs_by_topic(topic=\"system\")\n  ```\n\n#### `mikrotik_search_logs`\nSearches logs for a specific term.\n- Parameters:\n  - `search_term` (required): Search term\n  - `time_filter` (optional): Time filter\n  - `case_sensitive` (optional): Case sensitive search\n  - `limit` (optional): Result limit\n- Example:\n  ```\n  mikrotik_search_logs(search_term=\"login failed\")\n  ```\n\n#### `mikrotik_get_system_events`\nGets system-related log events.\n- Parameters:\n  - `event_type` (optional): Event type\n  - `time_filter` (optional): Time filter\n  - `limit` (optional): Result limit\n- Example:\n  ```\n  mikrotik_get_system_events(event_type=\"reboot\")\n  ```\n\n#### `mikrotik_get_security_logs`\nGets security-related log entries.\n- Parameters:\n  - `time_filter` (optional): Time filter\n  - `limit` (optional): Result limit\n- Example:\n  ```\n  mikrotik_get_security_logs(limit=100)\n  ```\n\n#### `mikrotik_clear_logs`\nClears all logs from MikroTik device.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_clear_logs()\n  ```\n\n#### `mikrotik_get_log_statistics`\nGets statistics about log entries.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_get_log_statistics()\n  ```\n\n#### `mikrotik_export_logs`\nExports logs to a file on the MikroTik device.\n- Parameters:\n  - `filename` (optional): Export filename\n  - `topics` (optional): Log topics\n  - `time_filter` (optional): Time filter\n  - `format` (optional): Export format (\"plain\" or \"csv\")\n- Example:\n  ```\n  mikrotik_export_logs(filename=\"security-logs.txt\", topics=\"firewall\")\n  ```\n\n#### `mikrotik_monitor_logs`\nMonitors logs in real-time for a specified duration.\n- Parameters:\n  - `topics` (optional): Log topics\n  - `action` (optional): Log action\n  - `duration` (optional): Monitor duration in seconds\n- Example:\n  ```\n  mikrotik_monitor_logs(topics=\"firewall\", duration=30)\n  ```\n\n### Firewall Filter Rules Management\n\n#### `mikrotik_create_filter_rule`\nCreates a firewall filter rule on MikroTik device.\n- Parameters:\n  - `chain` (required): Chain type (\"input\", \"forward\", \"output\")\n  - `action` (required): Action type\n  - `src_address` (optional): Source address\n  - `dst_address` (optional): Destination address\n  - `src_port` (optional): Source port\n  - `dst_port` (optional): Destination port\n  - `protocol` (optional): Protocol\n  - `in_interface` (optional): Input interface\n  - `out_interface` (optional): Output interface\n  - `connection_state` (optional): Connection state\n  - `connection_nat_state` (optional): Connection NAT state\n  - `src_address_list` (optional): Source address list\n  - `dst_address_list` (optional): Destination address list\n  - `limit` (optional): Rate limit\n  - `tcp_flags` (optional): TCP flags\n  - `comment` (optional): Description\n  - `disabled` (optional): Disable rule\n  - `log` (optional): Enable logging\n  - `log_prefix` (optional): Log prefix\n  - `place_before` (optional): Rule placement\n- Example:\n  ```\n  mikrotik_create_filter_rule(chain=\"input\", action=\"accept\", protocol=\"tcp\", dst_port=\"22\", src_address=\"192.168.1.0/24\")\n  ```\n\n#### `mikrotik_list_filter_rules`\nLists firewall filter rules on MikroTik device.\n- Parameters:\n  - `chain_filter` (optional): Filter by chain\n  - `action_filter` (optional): Filter by action\n  - `src_address_filter` (optional): Filter by source address\n  - `dst_address_filter` (optional): Filter by destination address\n  - `protocol_filter` (optional): Filter by protocol\n  - `interface_filter` (optional): Filter by interface\n  - `disabled_only` (optional): Show only disabled rules\n  - `invalid_only` (optional): Show only invalid rules\n  - `dynamic_only` (optional): Show only dynamic rules\n- Example:\n  ```\n  mikrotik_list_filter_rules(chain_filter=\"input\")\n  ```\n\n#### `mikrotik_get_filter_rule`\nGets detailed information about a specific firewall filter rule.\n- Parameters:\n  - `rule_id` (required): Rule ID\n- Example:\n  ```\n  mikrotik_get_filter_rule(rule_id=\"*1\")\n  ```\n\n#### `mikrotik_update_filter_rule`\nUpdates an existing firewall filter rule.\n- Parameters:\n  - `rule_id` (required): Rule ID\n  - All parameters from `create_filter_rule` (optional)\n- Example:\n  ```\n  mikrotik_update_filter_rule(rule_id=\"*1\", comment=\"Updated rule\")\n  ```\n\n#### `mikrotik_remove_filter_rule`\nRemoves a firewall filter rule from MikroTik device.\n- Parameters:\n  - `rule_id` (required): Rule ID\n- Example:\n  ```\n  mikrotik_remove_filter_rule(rule_id=\"*1\")\n  ```\n\n#### `mikrotik_move_filter_rule`\nMoves a firewall filter rule to a different position.\n- Parameters:\n  - `rule_id` (required): Rule ID\n  - `destination` (required): New position\n- Example:\n  ```\n  mikrotik_move_filter_rule(rule_id=\"*1\", destination=0)\n  ```\n\n#### `mikrotik_enable_filter_rule`\nEnables a firewall filter rule.\n- Parameters:\n  - `rule_id` (required): Rule ID\n- Example:\n  ```\n  mikrotik_enable_filter_rule(rule_id=\"*1\")\n  ```\n\n#### `mikrotik_disable_filter_rule`\nDisables a firewall filter rule.\n- Parameters:\n  - `rule_id` (required): Rule ID\n- Example:\n  ```\n  mikrotik_disable_filter_rule(rule_id=\"*1\")\n  ```\n\n#### `mikrotik_create_basic_firewall_setup`\nCreates a basic firewall setup with common security rules.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_create_basic_firewall_setup()\n  ```\n\n### Route Management\n\n#### `mikrotik_add_route`\nAdds a route to MikroTik routing table.\n- Parameters:\n  - `dst_address` (required): Destination address\n  - `gateway` (required): Gateway address\n  - `distance` (optional): Administrative distance\n  - `scope` (optional): Route scope\n  - `target_scope` (optional): Target scope\n  - `routing_mark` (optional): Routing mark\n  - `comment` (optional): Description\n  - `disabled` (optional): Disable route\n  - `vrf_interface` (optional): VRF interface\n  - `pref_src` (optional): Preferred source\n  - `check_gateway` (optional): Gateway check method\n- Example:\n  ```\n  mikrotik_add_route(dst_address=\"10.0.0.0/8\", gateway=\"192.168.1.1\")\n  ```\n\n#### `mikrotik_list_routes`\nLists routes in MikroTik routing table.\n- Parameters:\n  - `dst_filter` (optional): Filter by destination\n  - `gateway_filter` (optional): Filter by gateway\n  - `routing_mark_filter` (optional): Filter by routing mark\n  - `distance_filter` (optional): Filter by distance\n  - `active_only` (optional): Show only active routes\n  - `disabled_only` (optional): Show only disabled routes\n  - `dynamic_only` (optional): Show only dynamic routes\n  - `static_only` (optional): Show only static routes\n- Example:\n  ```\n  mikrotik_list_routes(active_only=true)\n  ```\n\n#### `mikrotik_get_route`\nGets detailed information about a specific route.\n- Parameters:\n  - `route_id` (required): Route ID\n- Example:\n  ```\n  mikrotik_get_route(route_id=\"*1\")\n  ```\n\n#### `mikrotik_update_route`\nUpdates an existing route in MikroTik routing table.\n- Parameters:\n  - `route_id` (required): Route ID\n  - All parameters from `add_route` (optional)\n- Example:\n  ```\n  mikrotik_update_route(route_id=\"*1\", comment=\"Updated route\")\n  ```\n\n#### `mikrotik_remove_route`\nRemoves a route from MikroTik routing table.\n- Parameters:\n  - `route_id` (required): Route ID\n- Example:\n  ```\n  mikrotik_remove_route(route_id=\"*1\")\n  ```\n\n#### `mikrotik_enable_route`\nEnables a route.\n- Parameters:\n  - `route_id` (required): Route ID\n- Example:\n  ```\n  mikrotik_enable_route(route_id=\"*1\")\n  ```\n\n#### `mikrotik_disable_route`\nDisables a route.\n- Parameters:\n  - `route_id` (required): Route ID\n- Example:\n  ```\n  mikrotik_disable_route(route_id=\"*1\")\n  ```\n\n#### `mikrotik_get_routing_table`\nGets a specific routing table.\n- Parameters:\n  - `table_name` (optional): Table name (default: \"main\")\n  - `protocol_filter` (optional): Filter by protocol\n  - `active_only` (optional): Show only active routes\n- Example:\n  ```\n  mikrotik_get_routing_table(table_name=\"main\")\n  ```\n\n#### `mikrotik_check_route_path`\nChecks the route path to a destination.\n- Parameters:\n  - `destination` (required): Destination address\n  - `source` (optional): Source address\n  - `routing_mark` (optional): Routing mark\n- Example:\n  ```\n  mikrotik_check_route_path(destination=\"8.8.8.8\")\n  ```\n\n#### `mikrotik_get_route_cache`\nGets the route cache.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_get_route_cache()\n  ```\n\n#### `mikrotik_flush_route_cache`\nFlushes the route cache.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_flush_route_cache()\n  ```\n\n#### `mikrotik_add_default_route`\nAdds a default route (0.0.0.0/0).\n- Parameters:\n  - `gateway` (required): Gateway address\n  - `distance` (optional): Administrative distance\n  - `comment` (optional): Description\n  - `check_gateway` (optional): Gateway check method\n- Example:\n  ```\n  mikrotik_add_default_route(gateway=\"192.168.1.1\")\n  ```\n\n#### `mikrotik_add_blackhole_route`\nAdds a blackhole route.\n- Parameters:\n  - `dst_address` (required): Destination address\n  - `distance` (optional): Administrative distance\n  - `comment` (optional): Description\n- Example:\n  ```\n  mikrotik_add_blackhole_route(dst_address=\"10.0.0.0/8\")\n  ```\n\n#### `mikrotik_get_route_statistics`\nGets routing table statistics.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_get_route_statistics()\n  ```\n\n### DNS Management\n\n#### `mikrotik_set_dns_servers`\nSets DNS server configuration on MikroTik device.\n- Parameters:\n  - `servers` (required): DNS server list\n  - `allow_remote_requests` (optional): Allow remote requests\n  - `max_udp_packet_size` (optional): Max UDP packet size\n  - `max_concurrent_queries` (optional): Max concurrent queries\n  - `cache_size` (optional): Cache size\n  - `cache_max_ttl` (optional): Max cache TTL\n  - `use_doh` (optional): Use DNS over HTTPS\n  - `doh_server` (optional): DoH server URL\n  - `verify_doh_cert` (optional): Verify DoH certificate\n- Example:\n  ```\n  mikrotik_set_dns_servers(servers=[\"8.8.8.8\", \"8.8.4.4\"], allow_remote_requests=true)\n  ```\n\n#### `mikrotik_get_dns_settings`\nGets current DNS configuration.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_get_dns_settings()\n  ```\n\n#### `mikrotik_add_dns_static`\nAdds a static DNS entry.\n- Parameters:\n  - `name` (required): DNS name\n  - `address` (optional): IP address\n  - `cname` (optional): CNAME record\n  - `mx_preference` (optional): MX preference\n  - `mx_exchange` (optional): MX exchange\n  - `text` (optional): TXT record\n  - `srv_priority` (optional): SRV priority\n  - `srv_weight` (optional): SRV weight\n  - `srv_port` (optional): SRV port\n  - `srv_target` (optional): SRV target\n  - `ttl` (optional): Time to live\n  - `comment` (optional): Description\n  - `disabled` (optional): Disable entry\n  - `regexp` (optional): Regular expression\n- Example:\n  ```\n  mikrotik_add_dns_static(name=\"router.local\", address=\"192.168.1.1\")\n  ```\n\n#### `mikrotik_list_dns_static`\nLists static DNS entries.\n- Parameters:\n  - `name_filter` (optional): Filter by name\n  - `address_filter` (optional): Filter by address\n  - `type_filter` (optional): Filter by type\n  - `disabled_only` (optional): Show only disabled entries\n  - `regexp_only` (optional): Show only regexp entries\n- Example:\n  ```\n  mikrotik_list_dns_static()\n  ```\n\n#### `mikrotik_get_dns_static`\nGets details of a specific static DNS entry.\n- Parameters:\n  - `entry_id` (required): Entry ID\n- Example:\n  ```\n  mikrotik_get_dns_static(entry_id=\"*1\")\n  ```\n\n#### `mikrotik_update_dns_static`\nUpdates an existing static DNS entry.\n- Parameters:\n  - `entry_id` (required): Entry ID\n  - All parameters from `add_dns_static` (optional)\n- Example:\n  ```\n  mikrotik_update_dns_static(entry_id=\"*1\", address=\"192.168.1.2\")\n  ```\n\n#### `mikrotik_remove_dns_static`\nRemoves a static DNS entry.\n- Parameters:\n  - `entry_id` (required): Entry ID\n- Example:\n  ```\n  mikrotik_remove_dns_static(entry_id=\"*1\")\n  ```\n\n#### `mikrotik_enable_dns_static`\nEnables a static DNS entry.\n- Parameters:\n  - `entry_id` (required): Entry ID\n- Example:\n  ```\n  mikrotik_enable_dns_static(entry_id=\"*1\")\n  ```\n\n#### `mikrotik_disable_dns_static`\nDisables a static DNS entry.\n- Parameters:\n  - `entry_id` (required): Entry ID\n- Example:\n  ```\n  mikrotik_disable_dns_static(entry_id=\"*1\")\n  ```\n\n#### `mikrotik_get_dns_cache`\nGets the current DNS cache.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_get_dns_cache()\n  ```\n\n#### `mikrotik_flush_dns_cache`\nFlushes the DNS cache.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_flush_dns_cache()\n  ```\n\n#### `mikrotik_get_dns_cache_statistics`\nGets DNS cache statistics.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_get_dns_cache_statistics()\n  ```\n\n#### `mikrotik_add_dns_regexp`\nAdds a DNS regexp entry for pattern matching.\n- Parameters:\n  - `regexp` (required): Regular expression\n  - `address` (required): IP address\n  - `ttl` (optional): Time to live\n  - `comment` (optional): Description\n  - `disabled` (optional): Disable entry\n- Example:\n  ```\n  mikrotik_add_dns_regexp(regexp=\"^ad[0-9]*\\\\.doubleclick\\\\.net$\", address=\"127.0.0.1\")\n  ```\n\n#### `mikrotik_test_dns_query`\nTests a DNS query.\n- Parameters:\n  - `name` (required): DNS name to query\n  - `server` (optional): DNS server to use\n  - `type` (optional): Query type\n- Example:\n  ```\n  mikrotik_test_dns_query(name=\"google.com\")\n  ```\n\n#### `mikrotik_export_dns_config`\nExports DNS configuration to a file.\n- Parameters:\n  - `filename` (optional): Export filename\n- Example:\n  ```\n  mikrotik_export_dns_config(filename=\"dns-config.rsc\")\n  ```\n\n### User Management\n\n#### `mikrotik_add_user`\nAdds a new user to MikroTik device.\n- Parameters:\n  - `name` (required): Username\n  - `password` (required): Password\n  - `group` (optional): User group\n  - `address` (optional): Allowed address\n  - `comment` (optional): Description\n  - `disabled` (optional): Disable user\n- Example:\n  ```\n  mikrotik_add_user(name=\"john\", password=\"secure123\", group=\"full\")\n  ```\n\n#### `mikrotik_list_users`\nLists users on MikroTik device.\n- Parameters:\n  - `name_filter` (optional): Filter by name\n  - `group_filter` (optional): Filter by group\n  - `disabled_only` (optional): Show only disabled users\n  - `active_only` (optional): Show only active users\n- Example:\n  ```\n  mikrotik_list_users(group_filter=\"full\")\n  ```\n\n#### `mikrotik_get_user`\nGets detailed information about a specific user.\n- Parameters:\n  - `name` (required): Username\n- Example:\n  ```\n  mikrotik_get_user(name=\"john\")\n  ```\n\n#### `mikrotik_update_user`\nUpdates an existing user on MikroTik device.\n- Parameters:\n  - `name` (required): Current username\n  - `new_name` (optional): New username\n  - `password` (optional): New password\n  - `group` (optional): New group\n  - `address` (optional): New allowed address\n  - `comment` (optional): New description\n  - `disabled` (optional): Enable/disable user\n- Example:\n  ```\n  mikrotik_update_user(name=\"john\", group=\"read\")\n  ```\n\n#### `mikrotik_remove_user`\nRemoves a user from MikroTik device.\n- Parameters:\n  - `name` (required): Username\n- Example:\n  ```\n  mikrotik_remove_user(name=\"john\")\n  ```\n\n#### `mikrotik_disable_user`\nDisables a user account.\n- Parameters:\n  - `name` (required): Username\n- Example:\n  ```\n  mikrotik_disable_user(name=\"john\")\n  ```\n\n#### `mikrotik_enable_user`\nEnables a user account.\n- Parameters:\n  - `name` (required): Username\n- Example:\n  ```\n  mikrotik_enable_user(name=\"john\")\n  ```\n\n#### `mikrotik_add_user_group`\nAdds a new user group to MikroTik device.\n- Parameters:\n  - `name` (required): Group name\n  - `policy` (required): Policy list\n  - `skin` (optional): UI skin\n  - `comment` (optional): Description\n- Example:\n  ```\n  mikrotik_add_user_group(name=\"operators\", policy=[\"read\", \"write\", \"reboot\"])\n  ```\n\n#### `mikrotik_list_user_groups`\nLists user groups on MikroTik device.\n- Parameters:\n  - `name_filter` (optional): Filter by name\n  - `policy_filter` (optional): Filter by policy\n- Example:\n  ```\n  mikrotik_list_user_groups()\n  ```\n\n#### `mikrotik_get_user_group`\nGets detailed information about a specific user group.\n- Parameters:\n  - `name` (required): Group name\n- Example:\n  ```\n  mikrotik_get_user_group(name=\"operators\")\n  ```\n\n#### `mikrotik_update_user_group`\nUpdates an existing user group on MikroTik device.\n- Parameters:\n  - `name` (required): Current group name\n  - `new_name` (optional): New name\n  - `policy` (optional): New policy list\n  - `skin` (optional): New UI skin\n  - `comment` (optional): New description\n- Example:\n  ```\n  mikrotik_update_user_group(name=\"operators\", policy=[\"read\", \"write\"])\n  ```\n\n#### `mikrotik_remove_user_group`\nRemoves a user group from MikroTik device.\n- Parameters:\n  - `name` (required): Group name\n- Example:\n  ```\n  mikrotik_remove_user_group(name=\"operators\")\n  ```\n\n#### `mikrotik_get_active_users`\nGets currently active/logged-in users.\n- Parameters: None\n- Example:\n  ```\n  mikrotik_get_active_users()\n  ```\n\n#### `mikrotik_disconnect_user`\nDisconnects an active user session.\n- Parameters:\n  - `user_id` (required): User session ID\n- Example:\n  ```\n  mikrotik_disconnect_user(user_id=\"*1\")\n  ```\n\n#### `mikrotik_export_user_config`\nExports user configuration to a file.\n- Parameters:\n  - `filename` (optional): Export filename\n- Example:\n  ```\n  mikrotik_export_user_config(filename=\"users.rsc\")\n  ```\n\n#### `mikrotik_set_user_ssh_keys`\nSets SSH public keys for a user.\n- Parameters:\n  - `username` (required): Username\n  - `key_file` (required): SSH key filename\n- Example:\n  ```\n  mikrotik_set_user_ssh_keys(username=\"john\", key_file=\"id_rsa.pub\")\n  ```\n\n#### `mikrotik_list_user_ssh_keys`\nLists SSH keys for a specific user.\n- Parameters:\n  - `username` (required): Username\n- Example:\n  ```\n  mikrotik_list_user_ssh_keys(username=\"john\")\n  ```\n\n#### `mikrotik_remove_user_ssh_key`\nRemoves an SSH key.\n- Parameters:\n  - `key_id` (required): SSH key ID\n- Example:\n  ```\n  mikrotik_remove_user_ssh_key(key_id=\"*1\")\n  ```\n\n## Configuration\n\n### Usage with Claude Desktop\n\nAdd this to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"mikrotik\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-server-mikrotik\", \"--host\", \"<HOST>\", \"--username\", \"<USERNAME>\", \"--password\", \"<PASSWORD>\", \"--port\", \"22\"]\n    }\n  }\n}\n```\n\n## Inspector\n\n```shell\n# Run the inspector against the mcp-server-mikrotik\nnpx @modelcontextprotocol/inspector uvx mcp-server-mikrotik --host <HOST> --username <USERNAME> --password <PASSWORD> --port 22\n\n# Run the inspector against the mcp-config.json\nnpm install -g @modelcontextprotocol/inspector\ncp mcp-config.json.example mcp-config.json\nnano mcp-config.json # Edit the values\nmcp-inspector --config mcp-config.json --server mikrotik-mcp-server\n```\n\n## UV\nHere's the new markdown content that you should add **after the Inspector section and before the License section**:\n\n## Usage Examples with mcp-cli\n\n### VLAN Interface Operations\n```bash\n# Create a VLAN interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_vlan_interface --tool-args '{\"name\": \"vlan100\", \"vlan_id\": 100, \"interface\": \"ether1\", \"comment\": \"Production VLAN\"}'\n\n# List all VLANs\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_vlan_interfaces --tool-args '{}'\n\n# Get specific VLAN details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_vlan_interface --tool-args '{\"name\": \"vlan100\"}'\n\n# Update VLAN interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_update_vlan_interface --tool-args '{\"name\": \"vlan100\", \"comment\": \"Updated Production VLAN\"}'\n\n# Remove VLAN interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_vlan_interface --tool-args '{\"name\": \"vlan100\"}'\n```\n\n### IP Address Management\n```bash\n# Add IP address to interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_ip_address --tool-args '{\"address\": \"192.168.100.1/24\", \"interface\": \"vlan100\", \"comment\": \"Gateway address\"}'\n\n# List IP addresses\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_ip_addresses --tool-args '{\"interface_filter\": \"vlan100\"}'\n\n# Get specific IP address\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_ip_address --tool-args '{\"address_id\": \"*1\"}'\n\n# Remove IP address\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_ip_address --tool-args '{\"address_id\": \"*1\"}'\n```\n\n### DHCP Server Configuration\n```bash\n# Create DHCP pool\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_pool --tool-args '{\"name\": \"pool-vlan100\", \"ranges\": \"192.168.100.10-192.168.100.200\"}'\n\n# Create DHCP network\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_network --tool-args '{\"network\": \"192.168.100.0/24\", \"gateway\": \"192.168.100.1\", \"dns_servers\": [\"8.8.8.8\", \"8.8.4.4\"]}'\n\n# Create DHCP server\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_server --tool-args '{\"name\": \"dhcp-vlan100\", \"interface\": \"vlan100\", \"address_pool\": \"pool-vlan100\"}'\n\n# List DHCP servers\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_dhcp_servers --tool-args '{}'\n\n# Get DHCP server details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_dhcp_server --tool-args '{\"name\": \"dhcp-vlan100\"}'\n\n# Remove DHCP server\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_dhcp_server --tool-args '{\"name\": \"dhcp-vlan100\"}'\n```\n\n### NAT Rule Management\n```bash\n# Create masquerade rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{\"chain\": \"srcnat\", \"action\": \"masquerade\", \"out_interface\": \"ether1\", \"comment\": \"Internet access\"}'\n\n# Create port forwarding rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{\"chain\": \"dstnat\", \"action\": \"dst-nat\", \"dst_port\": \"80\", \"protocol\": \"tcp\", \"to_addresses\": \"192.168.100.10\", \"to_ports\": \"80\", \"comment\": \"Web server\"}'\n\n# List NAT rules\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_nat_rules --tool-args '{\"chain_filter\": \"srcnat\"}'\n\n# Get NAT rule details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_nat_rule --tool-args '{\"rule_id\": \"*1\"}'\n\n# Move NAT rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_move_nat_rule --tool-args '{\"rule_id\": \"*1\", \"destination\": 0}'\n\n# Enable/Disable NAT rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_nat_rule --tool-args '{\"rule_id\": \"*1\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_nat_rule --tool-args '{\"rule_id\": \"*1\"}'\n\n# Remove NAT rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_nat_rule --tool-args '{\"rule_id\": \"*1\"}'\n```\n\n### IP Pool Management\n```bash\n# Create IP pool\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_ip_pool --tool-args '{\"name\": \"main-pool\", \"ranges\": \"192.168.1.100-192.168.1.200\"}'\n\n# List IP pools\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_ip_pools --tool-args '{\"include_used\": true}'\n\n# Get IP pool details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_ip_pool --tool-args '{\"name\": \"main-pool\"}'\n\n# List used addresses in pool\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_ip_pool_used --tool-args '{\"pool_name\": \"main-pool\"}'\n\n# Expand IP pool\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_expand_ip_pool --tool-args '{\"name\": \"main-pool\", \"additional_ranges\": \"192.168.1.201-192.168.1.250\"}'\n\n# Remove IP pool\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_ip_pool --tool-args '{\"name\": \"main-pool\"}'\n```\n\n### Backup and Export\n```bash\n# Create system backup\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_backup --tool-args '{\"name\": \"full_backup\", \"include_password\": true}'\n\n# Create configuration export\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_export --tool-args '{\"name\": \"config_export\", \"file_format\": \"rsc\", \"export_type\": \"full\"}'\n\n# Export specific section\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_export_section --tool-args '{\"section\": \"/ip/firewall\", \"name\": \"firewall_export\"}'\n\n# List backups\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_backups --tool-args '{\"include_exports\": true}'\n\n# Download file\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_download_file --tool-args '{\"filename\": \"full_backup.backup\"}'\n\n# Upload file\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_upload_file --tool-args '{\"filename\": \"config.rsc\", \"content_base64\": \"base64_encoded_content\"}'\n\n# Restore backup\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_restore_backup --tool-args '{\"filename\": \"full_backup.backup\"}'\n\n# Import configuration\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_import_configuration --tool-args '{\"filename\": \"config.rsc\"}'\n\n# Remove file\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_file --tool-args '{\"filename\": \"old_backup.backup\"}'\n```\n\n### Log Management\n```bash\n# Get logs\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_logs --tool-args '{\"topics\": \"firewall\", \"limit\": 100}'\n\n# Get logs by severity\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_logs_by_severity --tool-args '{\"severity\": \"error\", \"limit\": 50}'\n\n# Search logs\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_search_logs --tool-args '{\"search_term\": \"login failed\", \"case_sensitive\": false}'\n\n# Get security logs\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_security_logs --tool-args '{\"limit\": 100}'\n\n# Get log statistics\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_log_statistics --tool-args '{}'\n\n# Export logs\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_export_logs --tool-args '{\"filename\": \"firewall_logs\", \"topics\": \"firewall\", \"format\": \"csv\"}'\n\n# Monitor logs\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_monitor_logs --tool-args '{\"topics\": \"firewall\", \"duration\": 30}'\n\n# Clear logs\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_clear_logs --tool-args '{}'\n```\n\n### Firewall Filter Rules\n```bash\n# Create basic firewall rules\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_filter_rule --tool-args '{\"chain\": \"input\", \"action\": \"accept\", \"connection_state\": \"established,related\", \"comment\": \"Accept established\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_filter_rule --tool-args '{\"chain\": \"input\", \"action\": \"drop\", \"connection_state\": \"invalid\", \"comment\": \"Drop invalid\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_filter_rule --tool-args '{\"chain\": \"input\", \"action\": \"accept\", \"protocol\": \"icmp\", \"comment\": \"Accept ICMP\"}'\n\n# List firewall rules\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_filter_rules --tool-args '{\"chain_filter\": \"input\"}'\n\n# Get firewall rule details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_filter_rule --tool-args '{\"rule_id\": \"*1\"}'\n\n# Move firewall rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_move_filter_rule --tool-args '{\"rule_id\": \"*1\", \"destination\": 0}'\n\n# Enable/Disable firewall rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_filter_rule --tool-args '{\"rule_id\": \"*1\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_filter_rule --tool-args '{\"rule_id\": \"*1\"}'\n\n# Create basic firewall setup\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_basic_firewall_setup --tool-args '{}'\n\n# Remove firewall rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_filter_rule --tool-args '{\"rule_id\": \"*1\"}'\n```\n\n### Route Management\n```bash\n# Add route\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_route --tool-args '{\"dst_address\": \"10.0.0.0/8\", \"gateway\": \"192.168.1.1\", \"comment\": \"Corporate network\"}'\n\n# Add default route\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_default_route --tool-args '{\"gateway\": \"192.168.1.1\", \"distance\": 1}'\n\n# Add blackhole route\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_blackhole_route --tool-args '{\"dst_address\": \"192.168.99.0/24\", \"comment\": \"Block subnet\"}'\n\n# List routes\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_routes --tool-args '{\"active_only\": true}'\n\n# Get route details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_route --tool-args '{\"route_id\": \"*1\"}'\n\n# Check route path\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_check_route_path --tool-args '{\"destination\": \"8.8.8.8\"}'\n\n# Get routing table\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_routing_table --tool-args '{\"table_name\": \"main\"}'\n\n# Get route statistics\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_route_statistics --tool-args '{}'\n\n# Enable/Disable route\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_route --tool-args '{\"route_id\": \"*1\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_route --tool-args '{\"route_id\": \"*1\"}'\n\n# Remove route\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_route --tool-args '{\"route_id\": \"*1\"}'\n```\n\n### DNS Configuration\n```bash\n# Set DNS servers\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_dns_servers --tool-args '{\"servers\": [\"8.8.8.8\", \"8.8.4.4\"], \"allow_remote_requests\": true}'\n\n# Get DNS settings\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_dns_settings --tool-args '{}'\n\n# Add static DNS entry\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_dns_static --tool-args '{\"name\": \"router.local\", \"address\": \"192.168.1.1\", \"comment\": \"Local router\"}'\n\n# Add CNAME record\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_dns_static --tool-args '{\"name\": \"www.example.com\", \"cname\": \"example.com\"}'\n\n# List static DNS entries\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_dns_static --tool-args '{\"name_filter\": \"local\"}'\n\n# Update DNS entry\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_update_dns_static --tool-args '{\"entry_id\": \"*1\", \"address\": \"192.168.1.2\"}'\n\n# Add DNS regexp\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_dns_regexp --tool-args '{\"regexp\": \".*\\\\.ads\\\\..*\", \"address\": \"0.0.0.0\", \"comment\": \"Block ads\"}'\n\n# Test DNS query\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_test_dns_query --tool-args '{\"name\": \"google.com\"}'\n\n# Get DNS cache\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_dns_cache --tool-args '{}'\n\n# Flush DNS cache\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_flush_dns_cache --tool-args '{}'\n\n# Export DNS config\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_export_dns_config --tool-args '{\"filename\": \"dns_config\"}'\n\n# Remove DNS entry\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_dns_static --tool-args '{\"entry_id\": \"*1\"}'\n```\n\n### User Management\n```bash\n# Add user\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_user --tool-args '{\"name\": \"newuser\", \"password\": \"SecurePass123\", \"group\": \"write\", \"comment\": \"New operator\"}'\n\n# List users\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_users --tool-args '{\"group_filter\": \"write\"}'\n\n# Get user details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_user --tool-args '{\"name\": \"newuser\"}'\n\n# Update user\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_update_user --tool-args '{\"name\": \"newuser\", \"password\": \"NewSecurePass456\"}'\n\n# Enable/Disable user\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_user --tool-args '{\"name\": \"newuser\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_user --tool-args '{\"name\": \"newuser\"}'\n\n# Add user group\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_user_group --tool-args '{\"name\": \"operators\", \"policy\": [\"read\", \"write\", \"test\"], \"comment\": \"Operator group\"}'\n\n# List user groups\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_user_groups --tool-args '{}'\n\n# Get active users\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_active_users --tool-args '{}'\n\n# Export user config\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_export_user_config --tool-args '{\"filename\": \"user_config\"}'\n\n# Remove user\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_user --tool-args '{\"name\": \"newuser\"}'\n```\n\n#### Setting Up a New Network Segment\n```bash\n# Create VLAN\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_vlan_interface --tool-args '{\"name\": \"vlan200\", \"vlan_id\": 200, \"interface\": \"ether1\", \"comment\": \"Guest Network\"}'\n\n# Add IP address\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_ip_address --tool-args '{\"address\": \"192.168.200.1/24\", \"interface\": \"vlan200\"}'\n\n# Create DHCP pool\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_pool --tool-args '{\"name\": \"pool-200\", \"ranges\": \"192.168.200.10-192.168.200.100\"}'\n\n# Create DHCP network\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_network --tool-args '{\"network\": \"192.168.200.0/24\", \"gateway\": \"192.168.200.1\", \"dns_servers\": [\"8.8.8.8\", \"8.8.4.4\"]}'\n\n# Create DHCP server\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_dhcp_server --tool-args '{\"name\": \"dhcp-200\", \"interface\": \"vlan200\", \"address_pool\": \"pool-200\"}'\n\n# Create NAT rule\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{\"chain\": \"srcnat\", \"action\": \"masquerade\", \"out_interface\": \"ether1\", \"comment\": \"Internet access for VLAN 200\"}'\n```\n\n#### Port Forwarding Setup\n```bash\n# Forward HTTP traffic\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{\"chain\": \"dstnat\", \"action\": \"dst-nat\", \"dst_address\": \"203.0.113.1\", \"dst_port\": \"80\", \"protocol\": \"tcp\", \"to_addresses\": \"192.168.100.10\", \"to_ports\": \"80\", \"comment\": \"Web server\"}'\n\n# Forward HTTPS traffic\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{\"chain\": \"dstnat\", \"action\": \"dst-nat\", \"dst_address\": \"203.0.113.1\", \"dst_port\": \"443\", \"protocol\": \"tcp\", \"to_addresses\": \"192.168.100.10\", \"to_ports\": \"443\", \"comment\": \"HTTPS server\"}'\n\n# Forward custom SSH port\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_nat_rule --tool-args '{\"chain\": \"dstnat\", \"action\": \"dst-nat\", \"dst_address\": \"203.0.113.1\", \"dst_port\": \"2222\", \"protocol\": \"tcp\", \"to_addresses\": \"192.168.100.10\", \"to_ports\": \"22\", \"comment\": \"SSH server\"}'\n```\n\n#### Backup and Restore Process\n```bash\n# Create backup user\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_add_user --tool-args '{\"name\": \"backup_user\", \"password\": \"BackupPass123\", \"group\": \"read\", \"comment\": \"Backup account\"}'\n\n# Create full backup\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_backup --tool-args '{\"name\": \"daily_backup\", \"include_password\": true}'\n\n# Export configuration\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_export --tool-args '{\"name\": \"config_export\", \"file_format\": \"rsc\", \"export_type\": \"full\"}'\n\n# Export firewall rules\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_export_section --tool-args '{\"section\": \"/ip/firewall/filter\", \"name\": \"firewall_backup\"}'\n\n# Export NAT rules\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_export_section --tool-args '{\"section\": \"/ip/firewall/nat\", \"name\": \"nat_backup\"}'\n```\n\n### Create Wireless Interface\n```bash\n# Create basic AP interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"wlan1\", \"radio_name\": \"wlan1\", \"mode\": \"ap-bridge\", \"ssid\": \"MyNetwork\", \"comment\": \"Main WiFi Network\"}'\n\n# Create station interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"wlan-sta\", \"radio_name\": \"wlan2\", \"mode\": \"station\", \"ssid\": \"UpstreamWiFi\"}'\n\n# Create with specific frequency and band\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"wlan-5g\", \"radio_name\": \"wlan1\", \"mode\": \"ap-bridge\", \"ssid\": \"MyNetwork-5G\", \"frequency\": \"5180\", \"band\": \"5ghz-a/n/ac\", \"channel_width\": \"80mhz\"}'\n```\n\n### List and Manage Wireless Interfaces\n```bash\n# List all wireless interfaces\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_interfaces --tool-args '{}'\n\n# List only AP interfaces\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_interfaces --tool-args '{\"mode_filter\": \"ap-bridge\"}'\n\n# List only running interfaces\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_interfaces --tool-args '{\"running_only\": true}'\n\n# Get specific interface details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_interface --tool-args '{\"name\": \"wlan1\"}'\n\n# Update wireless interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_update_wireless_interface --tool-args '{\"name\": \"wlan1\", \"ssid\": \"UpdatedNetworkName\", \"comment\": \"Updated main network\"}'\n\n# Enable/Disable wireless interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_wireless_interface --tool-args '{\"name\": \"wlan1\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{\"name\": \"wlan1\"}'\n\n# Remove wireless interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_wireless_interface --tool-args '{\"name\": \"wlan-guest\"}'\n```\n\n## Wireless Security Profile Management\n\n### Create Security Profiles\n```bash\n# Create WPA2-PSK security profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"wpa2-security\", \"mode\": \"dynamic-keys\", \"authentication_types\": [\"wpa2-psk\"], \"unicast_ciphers\": [\"aes-ccm\"], \"group_ciphers\": [\"aes-ccm\"], \"wpa2_pre_shared_key\": \"SecurePassword123\"}'\n\n# Create mixed WPA/WPA2 profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"mixed-security\", \"mode\": \"dynamic-keys\", \"authentication_types\": [\"wpa-psk\", \"wpa2-psk\"], \"unicast_ciphers\": [\"tkip\", \"aes-ccm\"], \"group_ciphers\": [\"tkip\"], \"wpa_pre_shared_key\": \"Password123\", \"wpa2_pre_shared_key\": \"Password123\"}'\n\n# Create WPA2-Enterprise profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"enterprise-security\", \"mode\": \"dynamic-keys\", \"authentication_types\": [\"wpa2-eap\"], \"unicast_ciphers\": [\"aes-ccm\"], \"group_ciphers\": [\"aes-ccm\"], \"eap_methods\": \"peap,tls\"}'\n\n# Create open network profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"open-network\", \"mode\": \"none\", \"comment\": \"Guest network - no security\"}'\n```\n\n### Manage Security Profiles\n```bash\n# List all security profiles\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_security_profiles --tool-args '{}'\n\n# List WPA2 profiles only\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_security_profiles --tool-args '{\"mode_filter\": \"dynamic-keys\"}'\n\n# Get specific profile details\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_security_profile --tool-args '{\"name\": \"wpa2-security\"}'\n\n# Apply security profile to interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{\"interface_name\": \"wlan1\", \"security_profile\": \"wpa2-security\"}'\n\n# Remove security profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_wireless_security_profile --tool-args '{\"name\": \"old-profile\"}'\n```\n\n## Wireless Network Operations\n\n### Network Scanning and Monitoring\n```bash\n# Scan for available networks\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_scan_wireless_networks --tool-args '{\"interface\": \"wlan1\", \"duration\": 10}'\n\n# Quick scan (5 seconds)\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_scan_wireless_networks --tool-args '{\"interface\": \"wlan2\"}'\n\n# Get connected clients (all interfaces)\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_registration_table --tool-args '{}'\n\n# Get clients for specific interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_registration_table --tool-args '{\"interface\": \"wlan1\"}'\n```\n\n## Wireless Access List Management\n\n### Create Access List Entries\n```bash\n# Allow specific MAC address\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{\"interface\": \"wlan1\", \"mac_address\": \"AA:BB:CC:DD:EE:FF\", \"action\": \"accept\", \"comment\": \"Trusted device\"}'\n\n# Block specific MAC address\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{\"interface\": \"wlan1\", \"mac_address\": \"11:22:33:44:55:66\", \"action\": \"reject\", \"comment\": \"Blocked device\"}'\n\n# Allow with signal strength requirement\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{\"interface\": \"wlan1\", \"mac_address\": \"AA:BB:CC:DD:EE:FF\", \"action\": \"accept\", \"signal_range\": \"-80..-50\", \"comment\": \"Strong signal only\"}'\n\n# Time-based access control\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{\"interface\": \"wlan1\", \"mac_address\": \"AA:BB:CC:DD:EE:FF\", \"action\": \"accept\", \"time\": \"8h-18h,mon,tue,wed,thu,fri\", \"comment\": \"Work hours only\"}'\n```\n\n### Manage Access Lists\n```bash\n# List all access list entries\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_access_list --tool-args '{}'\n\n# List entries for specific interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_access_list --tool-args '{\"interface_filter\": \"wlan1\"}'\n\n# List only blocked entries\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_access_list --tool-args '{\"action_filter\": \"reject\"}'\n\n# Remove access list entry\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_wireless_access_list_entry --tool-args '{\"entry_id\": \"*1\"}'\n```\n\n## Complete WiFi Network Setup Examples\n\n### Basic Home Network Setup\n```bash\n# 1. Create security profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"home-security\", \"mode\": \"dynamic-keys\", \"authentication_types\": [\"wpa2-psk\"], \"unicast_ciphers\": [\"aes-ccm\"], \"group_ciphers\": [\"aes-ccm\"], \"wpa2_pre_shared_key\": \"MyHomePassword123\"}'\n\n# 2. Create wireless interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"home-wifi\", \"radio_name\": \"wlan1\", \"mode\": \"ap-bridge\", \"ssid\": \"HomeNetwork\", \"band\": \"2ghz-b/g/n\", \"comment\": \"Main home network\"}'\n\n# 3. Apply security profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{\"interface_name\": \"home-wifi\", \"security_profile\": \"home-security\"}'\n\n# 4. Enable the interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{\"name\": \"home-wifi\"}'\n```\n\n### Guest Network Setup\n```bash\n# 1. Create open security profile for guests\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"guest-open\", \"mode\": \"none\", \"comment\": \"Open guest network\"}'\n\n# 2. Create guest wireless interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"guest-wifi\", \"radio_name\": \"wlan1\", \"mode\": \"ap-bridge\", \"ssid\": \"GuestNetwork\", \"comment\": \"Guest access network\"}'\n\n# 3. Apply open security profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{\"interface_name\": \"guest-wifi\", \"security_profile\": \"guest-open\"}'\n\n# 4. Enable guest network\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{\"name\": \"guest-wifi\"}'\n```\n\n### Enterprise Network Setup\n```bash\n# 1. Create WPA2-Enterprise security profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"corp-security\", \"mode\": \"dynamic-keys\", \"authentication_types\": [\"wpa2-eap\"], \"unicast_ciphers\": [\"aes-ccm\"], \"group_ciphers\": [\"aes-ccm\"], \"eap_methods\": \"peap\", \"comment\": \"Corporate WPA2-Enterprise\"}'\n\n# 2. Create corporate wireless interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"corp-wifi\", \"radio_name\": \"wlan1\", \"mode\": \"ap-bridge\", \"ssid\": \"CorpNetwork\", \"band\": \"5ghz-a/n/ac\", \"channel_width\": \"80mhz\", \"comment\": \"Corporate network\"}'\n\n# 3. Apply enterprise security\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{\"interface_name\": \"corp-wifi\", \"security_profile\": \"corp-security\"}'\n\n# 4. Create access control for specific devices\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_access_list --tool-args '{\"interface\": \"corp-wifi\", \"mac_address\": \"00:11:22:33:44:55\", \"action\": \"accept\", \"comment\": \"Corporate laptop\"}'\n```\n\n### Dual-Band Setup (2.4GHz + 5GHz)\n```bash\n# 1. Create security profile\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"dual-band-security\", \"mode\": \"dynamic-keys\", \"authentication_types\": [\"wpa2-psk\"], \"unicast_ciphers\": [\"aes-ccm\"], \"group_ciphers\": [\"aes-ccm\"], \"wpa2_pre_shared_key\": \"DualBandPassword123\"}'\n\n# 2. Create 2.4GHz interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"wifi-2g\", \"radio_name\": \"wlan1\", \"mode\": \"ap-bridge\", \"ssid\": \"MyNetwork\", \"band\": \"2ghz-b/g/n\", \"channel_width\": \"20mhz\", \"comment\": \"2.4GHz network\"}'\n\n# 3. Create 5GHz interface  \nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"wifi-5g\", \"radio_name\": \"wlan2\", \"mode\": \"ap-bridge\", \"ssid\": \"MyNetwork-5G\", \"band\": \"5ghz-a/n/ac\", \"channel_width\": \"80mhz\", \"comment\": \"5GHz network\"}'\n\n# 4. Apply security to both interfaces\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{\"interface_name\": \"wifi-2g\", \"security_profile\": \"dual-band-security\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{\"interface_name\": \"wifi-5g\", \"security_profile\": \"dual-band-security\"}'\n\n# 5. Enable both interfaces\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{\"name\": \"wifi-2g\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{\"name\": \"wifi-5g\"}'\n```\n\n### Point-to-Point Wireless Link\n```bash\n# On first device (Station)\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"p2p-station\", \"radio_name\": \"wlan1\", \"mode\": \"station\", \"ssid\": \"P2P-Link\", \"frequency\": \"5180\", \"band\": \"5ghz-a/n\"}'\n\n# On second device (AP)  \nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_interface --tool-args '{\"name\": \"p2p-ap\", \"radio_name\": \"wlan1\", \"mode\": \"ap-bridge\", \"ssid\": \"P2P-Link\", \"frequency\": \"5180\", \"band\": \"5ghz-a/n\"}'\n\n# Create security for P2P link\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_create_wireless_security_profile --tool-args '{\"name\": \"p2p-security\", \"mode\": \"dynamic-keys\", \"authentication_types\": [\"wpa2-psk\"], \"unicast_ciphers\": [\"aes-ccm\"], \"group_ciphers\": [\"aes-ccm\"], \"wpa2_pre_shared_key\": \"P2PLinkPassword123\"}'\n\n# Apply security to both ends\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{\"interface_name\": \"p2p-station\", \"security_profile\": \"p2p-security\"}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_set_wireless_security_profile --tool-args '{\"interface_name\": \"p2p-ap\", \"security_profile\": \"p2p-security\"}'\n```\n\n## Monitoring and Troubleshooting\n\n### Network Analysis\n```bash\n# Scan for interference and available channels\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_scan_wireless_networks --tool-args '{\"interface\": \"wlan1\", \"duration\": 30}'\n\n# Monitor connected clients\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_registration_table --tool-args '{\"interface\": \"wlan1\"}'\n\n# Check interface status\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_get_wireless_interface --tool-args '{\"name\": \"wlan1\"}'\n\n# List all wireless configurations\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_interfaces --tool-args '{}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_security_profiles --tool-args '{}'\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_list_wireless_access_list --tool-args '{}'\n```\n\n### Maintenance Operations\n```bash\n# Disable interface for maintenance\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_disable_wireless_interface --tool-args '{\"name\": \"wlan1\"}'\n\n# Update configuration\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_update_wireless_interface --tool-args '{\"name\": \"wlan1\", \"channel_width\": \"40mhz\", \"comment\": \"Updated for better performance\"}'\n\n# Re-enable interface\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_enable_wireless_interface --tool-args '{\"name\": \"wlan1\"}'\n\n# Clean up unused profiles\nuv run mcp-cli cmd --server mikrotik --tool mikrotik_remove_wireless_security_profile --tool-args '{\"name\": \"old-profile\"}'\n```\n\n# Using MCPO with MikroTik MCP Server\n\nThis guide shows how to expose your MikroTik MCP server as a RESTful API using MCPO (MCP-to-OpenAPI proxy).\n\n## Prerequisites\n\n- Python 3.8+\n- MikroTik MCP server already set up\n- `uv` package manager (recommended) or `pip`\n\n## Installation\n\nInstall MCPO using one of these methods:\n\n```bash\n# Option 1: Using uvx (recommended - no installation needed)\nuvx mcpo --help\n\n# Option 2: Using pip\npip install mcpo\n```\n\n## Configuration\n\nCreate a `mcp-config.json` file in your project directory:\n\n```json\n{\n  \"mcpServers\": {\n    \"mikrotik-mcp-server\": {\n      \"command\": \"python\",\n      \"args\": [\n        \"src/mcp_mikrotik/server.py\",\n        \"--password\", \"admin\",\n        \"--host\", \"192.168.1.1\",\n        \"--port\", \"22\",\n        \"--username\", \"admin\"\n      ],\n      \"env\": {}\n    }\n  }\n}\n```\n\n**Note:** Adjust the MikroTik connection parameters (`host`, `username`, `password`, `port`) according to your setup.\n\n## Starting the MCPO Server\n\n```bash\n# Start MCPO with API key authentication\nuvx mcpo --port 8000 --api-key \"your-secret-key\" --config ./mcp-config.json\n\n# Or without authentication (not recommended for production)\nuvx mcpo --port 8000 --config ./mcp-config.json\n```\n\nThe server will start and display:\n- Server running on `http://0.0.0.0:8000`\n- Interactive API docs available at `http://localhost:8000/docs`\n\n### cURL Examples\n\n**List IP Addresses:**\n```bash\ncurl -X POST http://localhost:8000/mikrotik-mcp-server/mikrotik_list_ip_addresses \\\n  -H \"Authorization: Bearer your-secret-key\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{}'\n```\n\n## License\n\nThis MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "MCP server for MikroTik integration with Claude and other AI assistants",
    "version": "0.2.0.post20",
    "project_urls": {
        "Homepage": "https://github.com/jeff-nasseri/mikrotik-mcp",
        "Issues": "https://github.com/jeff-nasseri/mikrotik-mcp/issues",
        "Repository": "https://github.com/jeff-nasseri/mikrotik-mcp"
    },
    "split_keywords": [
        "mcp",
        " mikrotik",
        " router",
        " network",
        " ai",
        " assistant"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2ec77ff235562b9c4c636b18c24f3157fc422c1182be7e61aa046ff0d2f8df0a",
                "md5": "36e504b901d7cfe11ec04cc6488825d4",
                "sha256": "41de8b19965f0b52ff5228b5741d355575a4cc578707f60dd4b873f9f52d7532"
            },
            "downloads": -1,
            "filename": "mcp_server_mikrotik-0.2.0.post20-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "36e504b901d7cfe11ec04cc6488825d4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 64711,
            "upload_time": "2025-08-28T18:48:58",
            "upload_time_iso_8601": "2025-08-28T18:48:58.662414Z",
            "url": "https://files.pythonhosted.org/packages/2e/c7/7ff235562b9c4c636b18c24f3157fc422c1182be7e61aa046ff0d2f8df0a/mcp_server_mikrotik-0.2.0.post20-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1b1fc72cc44d04a108ed3d7e79a7c9a09bc254c9c15801fbd0f1b1842c77424d",
                "md5": "f00caa9c86e4260547c77b04b8d523b4",
                "sha256": "0cd2c7fe301a0aea1dc08ef8ba0e89506302c44a4e82ccb8f94f8cbdb7c5a866"
            },
            "downloads": -1,
            "filename": "mcp_server_mikrotik-0.2.0.post20.tar.gz",
            "has_sig": false,
            "md5_digest": "f00caa9c86e4260547c77b04b8d523b4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 69553,
            "upload_time": "2025-08-28T18:49:00",
            "upload_time_iso_8601": "2025-08-28T18:49:00.083665Z",
            "url": "https://files.pythonhosted.org/packages/1b/1f/c72cc44d04a108ed3d7e79a7c9a09bc254c9c15801fbd0f1b1842c77424d/mcp_server_mikrotik-0.2.0.post20.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-28 18:49:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jeff-nasseri",
    "github_project": "mikrotik-mcp",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "mcp",
            "specs": [
                [
                    ">=",
                    "0.1.0"
                ]
            ]
        },
        {
            "name": "paramiko",
            "specs": [
                [
                    ">=",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    ">=",
                    "7.0.0"
                ]
            ]
        },
        {
            "name": "pytest-mock",
            "specs": [
                [
                    ">=",
                    "3.10.0"
                ]
            ]
        },
        {
            "name": "pytest-timeout",
            "specs": [
                [
                    ">=",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "testcontainers",
            "specs": [
                [
                    ">=",
                    "3.7.0"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    ">=",
                    "6.0"
                ]
            ]
        }
    ],
    "lcname": "mcp-server-mikrotik"
}
        
Elapsed time: 0.54283s