使用说明
MikroTik MCP
叉子 杰夫·纳斯里/mikrotik 具有扩展功能。
用于通过AI助手(Claude Desktop、Claude Code等)管理MikroTik RouterOS设备的MCP服务器
发生了什么变化(与上游相比)
新模块
devices.py+scope/devices.py--多设备支持:服务器不再绑定到单个路由器。保留设备注册表,并在运行时在它们之间切换——请参阅 多设备支持scope/routing.py--完整的BGP管理(会话、连接、模板、实例、广告、路由过滤器、路由表)scope/mangle.py--防火墙修改规则(列出、添加、删除、启用/禁用,并支持完整参数)
新工具
| 工具 | 模块 | 说明 |
|---|---|---|
list_devices |
devices |
列出所有已配置的设备;活动的标记为 * |
use_device |
devices |
切换活动设备——所有后续工具都以它为目标 |
add_device |
devices |
在运行时注册设备(可选地持久化到设备文件) |
remove_device |
devices |
从注册表中删除设备 |
test_device_connection |
devices |
测试SSH连接,显示身份/版本(不切换) |
run_command |
system |
执行 任何 RouterOS CLI命令(无需专用工具) |
list_bgp_sessions |
routing |
列出BGP会话及其状态 |
list_bgp_connections |
routing |
列出BGP连接配置 |
list_bgp_templates |
routing |
列出BGP模板 |
list_bgp_instances |
routing |
列出BGP实例 |
get_bgp_advertisements |
routing |
列出BGP广告(前缀) |
add_bgp_connection |
routing |
创建BGP对等端(AS、路由表、多跳、保持时间等) |
remove_bgp_connection |
routing |
按名称删除BGP连接 |
enable_bgp_connection |
routing |
启用BGP连接 |
disable_bgp_connection |
routing |
禁用BGP连接 |
add_bgp_template |
routing |
创建BGP模板(AS、过滤器、计时器) |
remove_bgp_template |
routing |
删除BGP模板 |
list_routing_filters |
routing |
列出路由过滤规则(按链) |
add_routing_filter |
routing |
添加路由筛选规则 |
remove_routing_filters |
routing |
删除筛选器链中的所有规则 |
list_routing_tables |
routing |
列出路由表 |
add_routing_table |
routing |
创建路由表 |
list_mangle_rules |
mangle |
列出损坏规则(按链/操作筛选) |
list_mangle_rules_detail |
mangle |
列出混乱的规则及其全部细节 |
add_mangle_rule |
mangle |
创建损坏规则(标记路由、标记连接等) |
remove_mangle_rule |
mangle |
按ID删除损坏规则 |
enable_mangle_rule |
mangle |
启用损坏规则 |
disable_mangle_rule |
mangle |
禁用损坏规则 |
架构更改
devices.py--具有“活动设备”概念的设备注册表;从JSON设备文件加载,MIKROTIK_DEVICESenv/CLI JSON和旧版--host/--username标志(注册为设备default)connector.py--所有命令都从注册表中对活动设备运行;添加了SFTP读/写支持(sftp_read_file,sftp_write_file)用于设备上的文件操作app.py--添加了工具注释常量(READ,WRITE,WRITE_IDEMPOTENT,DESTRUCTIVE,DANGEROUS)MCP工具提示;添加/health端点mikrotik_ssh_client.py--已添加sftp_read()和sftp_write()SSH客户端的方法- 所有范围模块都已更新,以使用工具注释
现有工具(来自上游)
| 类别 | 工具 |
|---|---|
| 系统 | get_system_info, run_command |
| 防火墙 | list_filter_rules, get_filter_rule, create_filter_rule, update_filter_rule, remove_filter_rule, enable_filter_rule, disable_filter_rule, move_filter_rule, create_basic_firewall_setup |
| 网络地址转换 | list_nat_rules, get_nat_rule, create_nat_rule, update_nat_rule, remove_nat_rule, enable_nat_rule, disable_nat_rule, move_nat_rule |
| 域名系统 | get_dns_settings, set_dns_servers, list_dns_static, get_dns_static, add_dns_static, update_dns_static, remove_dns_static, enable_dns_static, disable_dns_static, add_dns_regexp, flush_dns_cache, get_dns_cache, get_dns_cache_statistics, test_dns_query, export_dns_config |
| 动态主机配置协议 | list_dhcp_servers, get_dhcp_server, create_dhcp_server, remove_dhcp_server, create_dhcp_pool, create_dhcp_network |
| 路线 | list_routes, get_route, add_route, add_default_route, add_blackhole_route, update_route, remove_route, enable_route, disable_route, get_route_statistics, get_route_cache, flush_route_cache, check_route_path |
| IP地址 | list_ip_addresses, get_ip_address, add_ip_address, remove_ip_address |
| 专利联盟 | list_ip_pools, get_ip_pool, create_ip_pool, update_ip_pool, remove_ip_pool, expand_ip_pool, list_ip_pool_used |
| 虚拟局域网 | list_vlan_interfaces, get_vlan_interface, create_vlan_interface, update_vlan_interface, remove_vlan_interface |
| 无线 | check_wireless_support, list_wireless_interfaces, get_wireless_interface, create_wireless_interface, update_wireless_interface, remove_wireless_interface, enable_wireless_interface, disable_wireless_interface, list_wireless_security_profiles, get_wireless_security_profile, create_wireless_security_profile, set_wireless_security_profile, remove_wireless_security_profile, list_wireless_access_list, create_wireless_access_list, remove_wireless_access_list_entry, get_wireless_registration_table, scan_wireless_networks |
| 用户 | list_users, get_user, add_user, update_user, remove_user, enable_user, disable_user, disconnect_user, get_active_users, list_user_groups, get_user_group, add_user_group, update_user_group, remove_user_group, list_user_ssh_keys, set_user_ssh_keys, remove_user_ssh_key, export_user_config |
| 备份 | create_backup, create_export, list_backups, backup_info, restore_backup, download_file, upload_file, remove_file, import_configuration, export_section, run_script |
| 日志 | get_logs, get_logs_by_severity, get_logs_by_topic, search_logs, get_security_logs, get_system_events, get_log_statistics, export_logs, clear_logs, monitor_logs |
安装
git clone https://github.com/Korotkov113/mikrotik-mcp.git
cd mikrotik-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .
配置
单设备(克劳德桌面/Claude代码)
添加到MCP配置(claude_desktop_config.json 或 .claude/settings.json):
{
"mcpServers": {
"mikrotik": {
"command": "/path/to/mikrotik-mcp/.venv/bin/mcp-server-mikrotik",
"args": [
"--host", "192.168.0.1",
"--username", "admin",
"--key-filename", "/path/to/ssh/key",
"--port", "22"
]
}
}
}
环境变量
或者,通过环境进行配置:
export MIKROTIK_HOST=192.168.0.1
export MIKROTIK_USERNAME=admin
export MIKROTIK_PASSWORD=your_password
export MIKROTIK_PORT=22
多设备支持
服务器保持 设备注册表 和a 有源器件每个工具
(防火墙、DNS、路由、备份等)以活动设备为目标;开关
设备随时可用 use_device --无需重新启动服务器。
注册表由三个来源构建(后来获胜):
- 设备文件 --JSON文件位于
--devices-file/MIKROTIK_DEVICES_FILE(默认值:~/.config/mikrotik-mcp/devices.json) MIKROTIK_DEVICES环境变量(或--devices)使用内联JSON- 传统旗帜
--host/--username/--password/--port/--key-filename, 已注册为设备default(现有的单设备设置保持不变)
设备文件
{
"default_device": "home",
"devices": {
"home": {
"host": "192.168.88.1",
"username": "admin",
"password": "secret",
"port": 22,
"description": "home router"
},
"office": {
"host": "10.0.0.1",
"username": "admin",
"key_filename": "/path/to/ssh/key",
"port": 2222,
"description": "office edge router"
}
}
}
多设备设置的MCP配置:
{
"mcpServers": {
"mikrotik": {
"command": "/path/to/mikrotik-mcp/.venv/bin/mcp-server-mikrotik",
"args": ["--devices-file", "/path/to/devices.json"]
}
}
}
通过环境内联JSON
export MIKROTIK_DEVICES='{"home": {"host": "192.168.88.1", "username": "admin", "password": "secret"}, "office": {"host": "10.0.0.1", "username": "admin", "key_filename": "/path/to/key"}}'
export MIKROTIK_DEFAULT_DEVICE=home
运行时管理设备
> What routers do I have?
Tool: list_devices()
* home: admin@192.168.88.1:22 [password] — home router
office: admin@10.0.0.1:2222 [ssh-key] — office edge router
> Switch to the office router
Tool: use_device(name="office")
> Add the lab router and remember it
Tool: add_device(name="lab", host="172.16.0.1", username="admin", password="...", make_active=true, save=true)
> Check if the office router is reachable
Tool: test_device_connection(name="office")
add_device(..., save=true) 将注册表持久化到设备文件
(创建于 0600 权限,因为它可能包含密码)。更喜欢
key_filename 在可能的情况下使用密码。
用法示例
运行任意命令
> Show me BGP session status
Tool: run_command("/routing bgp session print")
BGP管理
> Create a BGP connection to antifilter service
Tool: add_bgp_connection(name="antifilter", remote_address="45.148.244.55/32", remote_as=65444, ...)
杂乱的规则
> Mark traffic from FreeInternet_list users to routing table to_proxy
Tool: add_mangle_rule(chain="prerouting", action="mark-routing", new_routing_mark="to_proxy", src_address_list="FreeInternet_list")
许可证
MIT许可证。看 许可证.
