使用说明
🌐 MCP MikroTik——RouterOS AI网桥
一个轻量级的模型上下文协议(MCP)服务器,让AI助手喜欢 克劳德 直接与您的 MikroTik路由器 通过本机RouterOS API。
在a上测试 MikroTik RB5009 跑步 路由器操作系统7.20.6 --但与任何RouterOS 6.43+设备兼容。
✨ 这是什么?
该项目弥合了人工智能助手和网络基础设施之间的差距。与其登录Winbox或SSH来检查路由器,你可以简单地问Claude:
- “DHCP上当前连接了哪些设备?”
- “显示所有正在运行的界面。”
- “路由器当前的CPU和内存使用情况如何?”
- “跑
/ip/firewall/filter/print并总结规则。"
服务器实现 路由器操作系统API有线协议 从头开始——不需要第三方RouterOS库,只需要Python的标准 socket 和 struct 模块。
🛠️ 可用的MCP工具
| 工具 | 说明 |
|---|---|
mikrotik_run_command |
执行 任何 具有可选属性和查询筛选器的RouterOS API命令 |
mikrotik_get_interfaces |
列出所有接口,包括名称、类型、运行状态和MTU |
mikrotik_get_system_resources |
获取CPU负载、RAM使用率、正常运行时间和RouterOS版本 |
mikrotik_get_dhcp_leases |
列出活动DHCP租约(IP、MAC、主机名、状态) |
mikrotik_run_command 详细地
这是电动工具。它向Claude公开了完整的RouterOS API,实现了整个路由器配置的读写操作。
# Parameters:
# command (str) – API path, e.g. "/ip/address/print"
# args (dict, optional) – Attributes, e.g. {"address": "10.0.0.1/24"}
# queries (list, optional) – Filters, e.g. ["type=ether", "running=true"]
您可以与Claude一起使用的示例提示:
# Read firewall rules
/ip/firewall/filter/print
# Add a DNS entry
command: /ip/dns/static/add | args: {"name": "myserver.home", "address": "192.168.1.100"}
# Reboot the router
/system/reboot
# List only ethernet interfaces
command: /interface/print | queries: ["type=ether"]
📋 先决条件
- Python 3.10+
- MikroTik路由器正在运行 RouterOS 6.43或更高版本 (在7.x上测试)
- RouterOS API服务已启用 在路由器上
在路由器上启用API
通过RouterOS终端或SSH:
/ip service enable api
提示: 为了增强安全性,请将API服务限制为特定的源IP:
/ip service set api address=192.168.1.0/24
🚀 安装
1.克隆存储库
git clone https://github.com/Mattieug/mcp-mikrotik.git
cd mcp-mikrotik
2.创建虚拟环境
python -m venv .venv
# Linux / macOS
source .venv/bin/activate
# Windows
.venv\Scripts\activate
3.安装依赖项
pip install mcp
服务器仅依赖于
mcp(为FastMCP)加上Python的标准库。
⚙️ Claude桌面配置
打开您的Claude Desktop配置文件:
| 操作系统 | 路径 |
|---|---|
| 窗户 | %APPDATA%\Claude\claude_desktop_config.json |
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
您也可以通过以下方式联系它 克劳德桌面版→ 设置→ 开发者→ 编辑配置.
Windows示例
{
"mcpServers": {
"mikrotik_manager": {
"command": "C:\\mcp-mikrotik\\.venv\\Scripts\\python.exe",
"args": ["C:\\mcp-mikrotik\\mcp-mikrotik.py"],
"env": {
"ROUTEROS_HOST": "192.168.88.1",
"ROUTEROS_USER": "admin",
"ROUTEROS_PASSWORD": "your_password",
"ROUTEROS_PORT": "8728",
"ROUTEROS_USE_SSL": "false"
}
}
}
}
macOS/Linux示例
{
"mcpServers": {
"mikrotik_manager": {
"command": "/path/to/mcp-mikrotik/.venv/bin/python",
"args": ["/path/to/mcp-mikrotik/mcp-mikrotik.py"],
"env": {
"ROUTEROS_HOST": "192.168.88.1",
"ROUTEROS_USER": "admin",
"ROUTEROS_PASSWORD": "your_password",
"ROUTEROS_PORT": "8728",
"ROUTEROS_USE_SSL": "false"
}
}
}
}
中提供了一个可编辑的模板
mcp-mikrotik.json.
🔧 环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ROUTEROS_HOST |
192.168.88.1 |
路由器IP地址或主机名 |
ROUTEROS_USER |
admin |
RouterOS API用户名 |
ROUTEROS_PASSWORD |
(空) | RouterOS API密码 |
ROUTEROS_PORT |
8728 |
API端口(8728 平原, 8729 SSL) |
ROUTEROS_USE_SSL |
false |
设置为 true 使用加密的SSL连接 |
🔒 安全最佳实践
切勿提交凭据。 始终通过环境变量传递它们(如上所示),永远不要在源文件中硬编码它们。
创建专用只读用户 在路由器上而不是使用 admin 账户
/user group add name=mcp-readonly policy=read,api,test
/user add name=mcp-claude group=mcp-readonly password=strong_random_password
按源IP限制API访问 为了限制攻击面:
/ip service set api address=127.0.0.1/32
使用ssl 如果您通过不受信任的网络连接:
ROUTEROS_PORT=8729
ROUTEROS_USE_SSL=true
🏗️ 建筑
服务器是一个Python文件,实现了两件事:
1. RouterOSAPI --本地有线协议客户端
一个纯Python实现的 路由器操作系统API协议,处理:
- 带有可选SSL封装的TCP连接
- 长度编码字帧 (1-5字节可变长度前缀)
- 基于句子的请求/响应模型(
!re,!done,!trap,!fatal) - 纯文本认证(RouterOS≥6.43)
这意味着有 无外部RouterOS库依赖关系 --该协议直接在Python之上实现 socket 模块。
2.MCP工具——FastMCP服务器
建于 FastMCP,这些工具是薄薄的包装 RouterOSAPI.call()每个工具都会打开一个连接,执行其命令,然后关闭连接——使服务器保持无状态。
Claude (AI Assistant)
│ MCP protocol (stdio)
▼
FastMCP Server (mcp-mikrotik.py)
│ RouterOS API protocol (TCP/8728 or TCP/8729)
▼
MikroTik RouterOS
💡 交互示例
连接后,您可以进行以下对话:
你: “现在哪些设备连接到我的路由器?”
克劳德: (电话
mikrotik_get_dhcp_leases) “我可以看到7个活动租约:您的NAS位于192.168.1.10,您的Proxmox服务器位于192.168.1.20…”
你: “路由器有负载吗?”
克劳德: (电话
mikrotik_get_system_resources) “CPU为3%,512 MB RAM可用,正常运行时间为14天。一切看起来都很健康。”
你: “列出接受端口443流量的所有防火墙规则。”
克劳德: (电话
mikrotik_run_command随着/ip/firewall/filter/print) “我找到了3条匹配的规则…”
📁 存储库结构
mcp-mikrotik/
├── mcp-mikrotik.py # MCP server — RouterOS protocol + tool definitions
├── mcp-mikrotik.json # Claude Desktop config template
└── README.md # This file
🗺️ 路线图
未来工具的想法:
- [ ]
mikrotik_get_firewall_rules--列出并过滤防火墙规则 - [ ]
mikrotik_get_routes--显示路由表 - [ ]
mikrotik_get_wireless_clients--列出已连接的Wi-Fi客户端 - [ ]
mikrotik_get_logs--检索最近的系统日志 - [ ]
mikrotik_get_vlan_interfaces--列出VLAN接口 - [ ]
mikrotik_ping--从路由器触发ping并返回结果
欢迎投稿——欢迎随时打开PR或问题!
📄 许可证
该项目根据 MIT许可证 --免费使用、修改和分发。 看 许可证 了解全部细节。
🙏 致谢
- MikroTik RouterOS API文档
- FastMCP --用于构建MCP服务器的Python框架
- 模型上下文协议 --实现AI工具集成的开放标准
