MikroTik Cursor MCP(可译为“MikroTik游标MCP”或根据具体语境简化为“MikroTik MCP游标”,但通常直接保留原名以体现其专业性)
一个使用Cursor IDE中的自然语言管理MikroTik路由器的模型上下文协议(MCP)服务器。
](https://github.com/kevinpez/mikrotik-cursor-mcp) 
______________________________________________________________________
概述
这个MCP服务器通过Cursor IDE为MikroTik RouterOS设备提供了一个自然语言接口。它通过MikroTik API将自然语言请求翻译成RouterOS命令,并在API不可用时回退到SSH。
建筑学
- API-First Design(API优先设计)使用MikroTik API进行快速、结构化的通信
- SSH 回退(或SSH备用方案)当API不可用时,自动回退到SSH
- 基于类别的工具将440多个动作组织成19个逻辑类别
- 双运输(或双通道传输)API和SSH支持,自动选择
______________________________________________________________________
快速入门
安装
cd mikrotik-mcp
python -m venv .venv
.venv\Scripts\activate # Windows
# or: source .venv/bin/activate # Linux/Mac
pip install -r requirements.txt配置光标MCP
更新您的Cursor MCP配置文件:
Windows: %APPDATA%\Cursor\User\globalStorage\cursor.mcp\mcp.json\ macOS(苹果电脑操作系统): ~/Library/Application Support/Cursor/User/globalStorage/cursor.mcp/mcp.json\ Linux(发音类似“林克斯”,但通常直接音译为“林克斯”并不常见,因其是一个操作系统名称,通常直接使用原名): ~/.config/Cursor/User/globalStorage/cursor.mcp/mcp.json
{
"mcpServers": {
"mikrotik-cursor-mcp": {
"command": "C:\\path\\to\\mikrotik-mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\mikrotik-mcp\\src\\mcp_mikrotik\\server.py"],
"env": {
"MIKROTIK_HOST": "192.168.88.1",
"MIKROTIK_USERNAME": "your_username",
"MIKROTIK_PASSWORD": "your_password"
}
}
}
}测试连接
重启光标并询问: *“显示我的路由器系统信息”*
如需详细的设置说明,请参阅: SETUP_COMPLETE_GUIDE.md 翻译为中文是:“安装完成指南.md”
______________________________________________________________________
这是什么?
一个可投入生产的MCP服务器,通过Cursor IDE实现对MikroTik路由器的自然语言管理。无需记忆RouterOS命令,只需用日常语言描述您的意图即可。
示例:
“在52.1.2.3创建一个WireGuard VPN隧道连接到我的AWS EC2实例”
服务器将此转换为必要的RouterOS API调用或SSH命令,以生成密钥、配置接口、设置路由和创建防火墙规则。
______________________________________________________________________
特点/功能
可用类别
| 类别 | 动作 | 覆盖范围 |
|---|---|---|
| 防火墙 | 54 | 过滤、NAT(网络地址转换)、Mangle(修改)、RAW、第7层、链、地址列表、连接 |
| 系统 | 42 | 资源、身份、包、调度器、看门狗、安全模式 |
| IPv6 | 43 | 地址、路由、防火墙、DHCPv6、邻居发现 |
| 接口 | 53 | 物理、虚拟、桥接、PPPoE、隧道、绑定、VRRP、VLAN |
| 无线 | 39 | 接口、CAPsMAN(无线控制器和策略管理器)、安全配置文件、访问控制列表 |
| 路线 | 33 | 静态路由、BGP(边界网关协议)、OSPF(开放最短路径优先)、路由过滤器 |
| 队列 | 20 | 简单,队列树,流量整形 |
| 集装箱 | 18 | Docker 容器、镜像、网络、环境 |
| 证书 | 11 | 公钥基础设施(PKI)、证书颁发机构(CA)、安全套接层/传输层安全(SSL/TLS) |
| WireGuard(中文可译为“线守护”或保持原英文名,根据上下文决定是否需要翻译) | 11 | 接口、对等体、密钥 |
| 热点 | 10 | 服务器、用户、访客门户 |
| DNS(Domain Name System,域名系统) | 15 | 设置、静态条目、缓存 |
| OpenVPN | 9 | 客户端,服务器,证书 |
| IP管理 | 18 | 地址、池、服务 |
| DHCP(动态主机配置协议) | 7 | 服务器、池、租约 |
| 用户 | 18 | 管理、组、权限 |
| 备份 | 10 | 创建、恢复、导出 |
| 日志 | 10 | 查看、搜索、清除 |
| 诊断 | 9 | 回显请求(Ping)、路由追踪(Traceroute)、域名解析(DNS Lookup)、地址解析协议(ARP)、邻居发现 |
总计:19个类别中的440+项行动
核心能力
- 双栈网络全面支持IPv4和IPv6
- VPN 套件WireGuard、OpenVPN、证书管理
- 动态路由BGP,带认证的OSPF,路由过滤器
- 集装箱支持在RouterOS v7.x上的Docker容器
- 先进无线技术CAPsMAN集中管理
- 第七层检查应用感知的防火墙规则
- QoS(服务质量)队列树,流量整形
- 高可用性VRRP冗余
- 自动化脚本调度器,看门狗监控
______________________________________________________________________
安装
先决条件
- Python 3.8及以上版本
- Cursor 集成开发环境 (IDE)
- 启用SSH或API的MikroTik RouterOS设备
- 访问路由器的网络
设置步骤
# 1. Clone the repository
git clone https://github.com/kevinpez/mikrotik-cursor-mcp.git
cd mikrotik-cursor-mcp
# 2. Create virtual environment
python -m venv .venv
# On Windows:
.venv\Scripts\activate
# On Linux/Mac:
source .venv/bin/activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Install the package
pip install -e .配置 Cursor IDE
将此添加到您的 Cursor MCP 配置文件中(%USERPROFILE%\.cursor\mcp.json 在Windows上或 ~/.cursor/mcp.json (在Linux/Mac上):
{
"mcpServers": {
"mikrotik-cursor-mcp": {
"command": "python",
"args": [
"-m",
"mcp_mikrotik.server"
],
"cwd": "C:\\Users\\YourUsername\\mikrotik-cursor-mcp",
"env": {
"MIKROTIK_HOST": "192.168.88.1",
"MIKROTIK_USERNAME": "admin",
"MIKROTIK_PASSWORD": "your-password",
"MIKROTIK_PORT": "22",
"MIKROTIK_SSH_KEY": "C:\\Users\\YourUsername\\.ssh\\mikrotik_rsa",
"MIKROTIK_STRICT_HOST_KEY_CHECKING": "false",
"MIKROTIK_KNOWN_HOSTS": "C:\\Users\\YourUsername\\.ssh\\known_hosts",
"MIKROTIK_CONNECT_TIMEOUT": "10",
"MIKROTIK_CMD_TIMEOUT": "30"
}
}
}
}重要提示: 请将路径和凭据替换为您实际的值。
验证安装
- 完全重启 Cursor IDE
- 开启一个新的Cursor聊天窗口
- 询问:“列出我MikroTik路由器上的所有备份”
______________________________________________________________________
使用示例
自然语言指令
基本管理
"Show me the system resources and uptime"
"List all network interfaces and their status"
"What's in my ARP table?"
"Create a backup called 'before-vpn-setup'"防火墙与安全
"Create a firewall rule to allow SSH from 10.0.0.0/8"
"Block all traffic from 192.168.99.0/24"
"Show me active connections"
"Create a port forward: external 8080 to internal 192.168.1.100:80"VPN设置
"Set up a WireGuard VPN to my AWS server at 52.1.2.3"
"Create an OpenVPN client connection to my office"
"List all WireGuard interfaces and their status"IPv6网络
"Add IPv6 address 2001:db8::1/64 to bridge"
"Enable IPv6 forwarding"
"List IPv6 neighbors"
"Create a DHCPv6 server on bridge interface"无线管理
"List all wireless interfaces"
"Scan for nearby WiFi networks"
"Show connected wireless clients"
"Enable CAPsMAN controller"容器管理(RouterOS v7.x)
"List all containers"
"Create a container from nginx:latest"
"Show container configuration"
"Create a veth interface for containers"动态路由
"List BGP peers"
"Show OSPF neighbors"
"Create a route filter"______________________________________________________________________
建筑
基于类别的组织
MCP 使用基于类别的工具来组织功能:
Traditional Approach: This MCP:
├─ mikrotik_list_firewall ├─ mikrotik_firewall
├─ mikrotik_create_firewall ├─ list_filter_rules
├─ mikrotik_update_firewall ├─ create_filter_rule
├─ mikrotik_list_nat ├─ list_nat_rules
├─ mikrotik_create_nat └─ ... (54 actions)
├─ mikrotik_port_forward
... (100+ separate tools) └─ mikrotik_ipv6 (43 actions)技术栈
- Python 3.8及以上版本 - 核心语言
- MCP SDK(MCP软件开发工具包) - 模型上下文协议实现
- RouterOS API - 主要的沟通方式
- Paramiko(注:这是一个专有名词,通常不直接翻译,保持原名,若需解释性翻译,可译为“Python的SSH客户端库”或根据具体语境调整) - SSH备用连接
- RouterOS CLI(RouterOS 命令行界面) - 通过SSH执行命令
信息流/沟通流程
┌───────────────┐ ┌────────────────────┐ ┌───────────────┐
│ Cursor IDE │ │ MikroTik MCP │ │ RouterOS │
│ + AI │──────▶│ Server │──API▶ │ Device │
└───────────────┘ └────────────────────┘ └───────────────┘
│ │ │
│ Natural language request │ │
│─────────────────────────▶ │
│ │ Parse & translate │
│ │ Execute via API/SSH │
│ ├─────────────────────────▶
│ │ Verify results │
│ │◀─────────────────────────│
│ Structured response │ │
◀─────────────────────────────────│ │______________________________________________________________________
测试
硬件验证套件
该项目包含一个全面的硬件验证套件,用于在真实的MikroTik硬件上对所有处理程序进行测试。
# Test all handlers
python tests/hardware_validation.py
# Test specific category with verbose output
python tests/hardware_validation.py --category System -v
# Save test results to JSON
python tests/hardware_validation.py --report results.json
# List available categories
python tests/hardware_validation.py --list-categories测试配置
创建一个 .env.test 项目根目录中的文件:
MIKROTIK_HOST=192.168.88.1
MIKROTIK_USERNAME=admin
MIKROTIK_PASSWORD=your_password
MIKROTIK_PORT=22
MIKROTIK_LOG_LEVEL=INFO测试类别
测试套件涵盖了全部19个类别:
- 系统,备份,证书,容器
- DHCP,DNS,诊断工具
- 防火墙(过滤、NAT、修改、原始处理)
- 热点、IP服务、IPv6
- 接口、日志、OpenVPN
- 队列、路由、路由过滤器
- 用户,无线,WireGuard(一种虚拟私有网络技术),CAPsMAN(无线控制器管理系统)
见 TESTING.md 翻译为中文是:“测试说明文件.md” 或者更简洁地 “测试文档.md”(具体翻译可能根据上下文有所调整,但“md”通常表示Markdown格式的文件,这里未直接翻译,以保持专业术语的一致性) 以获取完整的测试文档。
______________________________________________________________________
安全考量
凭证;资历
- 永远不要将凭据提交到版本控制系统中
- 使用环境变量来存储敏感数据
- 考虑使用SSH密钥而非密码
网络访问
- 确保路由器的安全SSH/API访问
- 使用防火墙规则限制管理访问
- 如果可用,请启用双因素认证
备份策略
- 在进行重大更改前创建备份
- 使用内置的备份命令
- 在多个地点存储备份
测试
- 首先在非生产路由器上进行测试
- 为实验使用隔离的VLAN
- 保持带外访问
______________________________________________________________________
故障排除
MCP 未加载
症状: Cursor 无法识别 MikroTik 命令
解决方案:
- 验证
mcp.json路径和格式 - 检查配置中的Python路径
- 确保已激活虚拟环境
- 完全重启光标(或:重新启动光标功能)
连接问题
症状: “连接失败”错误
解决方案:
- 验证
MIKROTIK_HOST是正确的 - 检查SSH/API是否已启用:
/ip service print - 手动测试SSH:
ssh admin@192.168.88.1 - 验证防火墙规则是否允许SSH/API
命令失败
症状: 命令返回错误
解决方案:
- 检查RouterOS版本兼容性
- 验证所需的软件包是否已安装
- 检查用户权限
- 查看路由器日志:
/log print
性能问题
症状: 反应迟钝
解决方案:
- 检查到路由器的网络延迟
- 减少并发操作
- 验证路由器是否具有足够的资源
- 更新到最新的RouterOS版本
______________________________________________________________________
贡献;做出贡献
欢迎投稿。
报告问题
- 使用GitHub Issues
- 包含 RouterOS 版本
- 提供命令示例
- 分享错误信息
功能请求
- 检查现有请求
- 描述用例
- 解释RouterOS的功能
拉取请求(或合并请求)
- 为仓库创建分支(或“克隆仓库”)
- 创建特性分支
- 在实际路由器上进行测试
- 更新文档
- 提交包含清晰描述的拉取请求(PR)
______________________________________________________________________
许可证
MIT 许可证 - 详见 许可证 文件
______________________________________________________________________
致谢
- @杰夫-纳塞里 - 原始的mikrotik-mcp项目
- @kevinpez(注:这是一个用户名或特定标识,直接翻译为中文可能无实际意义,故保留原样) - 扩展实施
- MikroTik(注:MikroTik是一个品牌名,通常翻译为“微波通信”或直接保留原名,具体翻译可能根据上下文有所调整,但在此处作为专有名词,直接保留“MikroTik”更为常见。) - RouterOS平台
- “Anthropic”翻译成中文是“人类中心的”或“以人为本的”,具体含义可能根据上下文有所不同。在人工智能或哲学领域,它可能指的是以人类为中心或以人类利益为优先的观念或技术 - 克劳德和MCP协议
- 光标团队 - 由人工智能驱动的集成开发环境(IDE)
______________________________________________________________________
支持
- GitHub Issues(GitHub问题) 报告错误或请求功能
- GitHub 讨论区: 提出问题或分享使用案例
- 文档: 请参阅下面的文档部分
______________________________________________________________________
文档
入门指南
用户指南
发展
______________________________________________________________________
通过自然语言实现MikroTik RouterOS自动化
