MikroTik路由器操作系统MCP
MCP服务器 电脑变无线路由器 具有用于多路由器管理的轻量级web仪表板。展示24个MCP工具,涵盖传输回退(API→ API-SSL公司→ SSH)、读取繁重的网络检查和受保护的写入访问,而捆绑的仪表板提供了一个简单的REST支持的UI,用于查看路由器和常见的网络状态。
快速开始
git clone https://github.com/drohi-r/mikrotik-routeros-mcp && cd mikrotik-routeros-mcp
uv sync
# Configure devices
cp devices.yaml.example devices.yaml # then edit with your router details
# Run the MCP server
uv run python -m mikrotik_routeros_mcp.server
# Or run the web dashboard
uv run python -m mikrotik_routeros_mcp.dashboard --host 0.0.0.0 --port 8080服务器按以下顺序查找配置: MIKROTIK_ROUTEROS_CONFIG env 是 → ./devices.yaml → ./devices.yml → ./devices.json.
建筑
graph TD
A["MikroTik RouterOS MCP Server
mikrotik_routeros_mcp
24 tools · safety gate"] --> B
B["Transport Layer
Fallback: API → API-SSL → SSH"] --> C
C["RouterOS Devices
Named targets from devices.yaml"]
D["Multi-Device Config
Named routers · tags · per-device write control"] -.-> A
E["Guarded Write Flow
plan_script_change → apply_script_change"] -.-> A
F["SSH Fallback
Config export · limited-API environments"] -.-> B
style A fill:#1a1a2e,stroke:#2196F3,color:#fff
style B fill:#1a1a2e,stroke:#2196F3,color:#fff
style C fill:#1a1a2e,stroke:#0f3460,color:#fff
style D fill:#0f3460,stroke:#0f3460,color:#fff
style E fill:#0f3460,stroke:#0f3460,color:#fff
style F fill:#0f3460,stroke:#0f3460,color:#fff配置
设备配置示例:
devices:
- name: home
host: 192.168.88.1
username: admin
password: change-me
transport_order:
- api
- api-ssl
- ssh
allow_writes: false
tags:
- home
- lab
- name: office
host: office-router.example.com
username: admin
password: change-me
fallback_ip: 203.0.113.10
transport_order:
- api-ssl
- ssh
allow_writes: false
tags:
- office
- production工具
服务器和发现
| 工具 | 它做什么 |
|---|---|
get_server_config | 返回当前MCP服务器配置和安全设置 |
list_devices | 列出所有已配置的RouterOS设备 |
describe_device | 返回指定设备的详细信息 |
系统和网络读取
| 工具 | 它做什么 |
|---|---|
system_info | 返回系统标识、版本、正常运行时间和硬件信息 |
interfaces | 列出所有具有状态的网络接口 |
ip_addresses | 列出分配给接口的IP地址 |
routes | 列出路由表 |
firewall_filters | 列出防火墙过滤规则 |
nat_rules | 列出NAT规则 |
dns_settings | 返回DNS配置 |
dhcp_servers | 列出DHCP服务器实例 |
dhcp_leases | 列出DHCP租约 |
address_lists | 列出防火墙地址列表条目 |
bridges | 列出网桥接口 |
bridge_ports | 列出网桥端口成员资格 |
neighbors | 列出发现的网络邻居 |
wireguard_interfaces | 列出WireGuard接口 |
wireguard_peers | 列出WireGuard同行 |
logs | 检索系统日志条目 |
ping | 从设备Ping目标 |
export_config | 导出设备配置 |
run_api_print | 任何RouterOS路径的只读API打印 |
守卫写作
| 工具 | 它做什么 |
|---|---|
plan_script_change | 通过风险评估预览RouterOS脚本更改 |
apply_script_change | 应用带有批准代码的计划脚本更改 |
除非目标设备具有 allow_writes: true预期的工作流程是: plan_script_change → 检查风险等级和批准代码→ apply_script_change 只有当计划可以接受时。
克劳德桌面版
{
"mcpServers": {
"mikrotik-routeros": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mikrotik-routeros-mcp", "python", "-m", "mikrotik_routeros_mcp.server"],
"env": {
"MIKROTIK_ROUTEROS_CONFIG": "/path/to/devices.yaml"
}
}
}
}VS代码/光标
{
"servers": {
"mikrotik-routeros": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mikrotik-routeros-mcp", "python", "-m", "mikrotik_routeros_mcp.server"],
"env": {
"MIKROTIK_ROUTEROS_CONFIG": "/path/to/devices.yaml"
}
}
}
}法典
创建一个 codex.json MCP配置文件:
{
"mcpServers": {
"mikrotik-routeros": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mikrotik-routeros-mcp", "python", "-m", "mikrotik_routeros_mcp.server"],
"env": {
"MIKROTIK_ROUTEROS_CONFIG": "/path/to/devices.yaml"
}
}
}
}然后使用以下命令运行Codex:
codex --mcp-config codex.json安全生产
- 设备范围的目标定位 --模型必须明确地选择一个命名的目标路由器。无环境“默认设备”行为。
- 写控制 --每个设备的写访问被阻止,除非
allow_writes: true在config中设置。读取工具始终可用。 - 保护写入流 —
plan_script_change返回风险评估和批准代码。apply_script_change需要该批准代码才能继续。 - 运输回退 --尝试
api那么api-ssl那么ssh因此,服务器通过最佳可用传输进行连接,而无需手动切换。 - 只读API防护 —
run_api_print阻止通过设计来改变RouterOS API路径。 - 输入验证 -所有工具都会在进行任何API调用之前验证参数。无效输入返回结构化JSON错误,从不返回原始异常。
发展
uv sync
uv run python -m pytest -v