Back to Registry View Author Profile
Official Verified
mikrotik-api
Manages MikroTik routers via the RouterOS API (port 8728/8729). Use when the user wants to configure, monitor, or troubleshoot a MikroTik router — including interfaces, firewall, DHCP, DNS, routing, queues, VPN, and system management.
skill-install — Terminal
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/bluemeda/mikrotik-apiOr
MikroTik API Management
Communicate with MikroTik RouterOS devices using the Python routeros-api library over the API port (8728 plain, 8729 SSL).
Prerequisites
Install the library if not present:
pip3 install --break-system-packages routeros-api
Connection
It is highly recommended to use environment variables for credentials to avoid hardcoding.
Environment Variables
Set these in your environment or .env file:
MIKROTIK_HOST: Router IP or hostnameMIKROTIK_USERNAME: Router usernameMIKROTIK_PASSWORD: Router password
Python Connection Pattern
import routeros_api
import os
# Get credentials from environment variables
host = os.getenv('MIKROTIK_HOST')
username = os.getenv('MIKROTIK_USERNAME')
password = os.getenv('MIKROTIK_PASSWORD')
# Fallback to manual input if env vars are missing
if not all([host, username, password]):
print("Environment variables MIKROTIK_HOST, MIKROTIK_USERNAME, or MIKROTIK_PASSWORD are not set.")
# host = input("Enter Host: ") ...
conn = routeros_api.RouterOsApiPool(
host=host,
username=username,
password=password,
plaintext_login=True, # Required for RouterOS 6.43+
port=8728 # Use 8729 for SSL
)
api = conn.get_api()
# ... do work ...
conn.disconnect()
Connection Rules
- Prefer Environment Variables: Instruct the user to set
MIKROTIK_HOST,MIKROTIK_USERNAME, andMIKROTIK_PASSWORD. - Ask the user for these details only if not found in the environment.
- Default API port is 8728 (plain) or 8729 (SSL).
- Always call
conn.disconnect()when done. - Use
plaintext_login=Truefor RouterOS v6.43+ and v7.x.
SSL Connection
conn = routeros_api.RouterOsApiPool(
host=host,
username=username,
password=password,
plaintext_login=True,
use_ssl=True,
ssl_verify=False, # Set True with proper certs
ssl_verify_hostname=False,
port=8729
)
Core API Operations
Reading resources (GET / print)
resource = api.get_resource('/ip/address')
items = resource.get() # Get all
items = resource.get(interface='ether1') # Filter by param
items = resource.get(disabled='false') # Filter by status
Adding entries (ADD)
resource = api.get_resource('/ip/address')
resource.add(address='192.168.1.1/24', interface='ether1')
# With comment
resource.add(address='192.168.1.1/24', interface='ether1', comment='Management')
Updating entries (SET)
resource = api.get_resource('/ip/address')
resource.set(id='*1', address='192.168.2.1/24')
resource.set(id='*1', comment='Updated via API')
resource.set(id='*1', disabled='yes') # Disable entry
resource.set(id='*1', disabled='no') # Enable entry
Removing entries (REMOVE)
resource.remove(id='*1')
Metadata
AI Skill Finder
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skill Add to Configuration
Paste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-bluemeda-mikrotik-api": {
"enabled": true,
"auto_update": true
}
}
}Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.