路由器管理协议服务器

MikroTik Cursor MCP是一个通过自然语言管理MikroTik路由器的协议服务器,集成在Cursor IDE中,支持440多种路由器操作。

  • by kevinpez
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 kevinpez/mikrotik-cursor-mcp

使用说明

MikroTik Cursor MCP(可译为“MikroTik游标MCP”或根据具体语境简化为“MikroTik MCP游标”,但通常直接保留原名以体现其专业性)

一个使用Cursor IDE中的自然语言管理MikroTik路由器的模型上下文协议(MCP)服务器。

基于 MikroTik MCP(注:MikroTik是路由器品牌,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"
      }
    }
  }
}

重要提示: 请将路径和凭据替换为您实际的值。

验证安装

  1. 完全重启 Cursor IDE
  2. 开启一个新的Cursor聊天窗口
  3. 询问:“列出我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 命令

解决方案:

  1. 验证 mcp.json 路径和格式
  2. 检查配置中的Python路径
  3. 确保已激活虚拟环境
  4. 完全重启光标(或:重新启动光标功能)

连接问题

症状: “连接失败”错误

解决方案:

  1. 验证 MIKROTIK_HOST 是正确的
  2. 检查SSH/API是否已启用: /ip service print
  3. 手动测试SSH: ssh admin@192.168.88.1
  4. 验证防火墙规则是否允许SSH/API

命令失败

症状: 命令返回错误

解决方案:

  1. 检查RouterOS版本兼容性
  2. 验证所需的软件包是否已安装
  3. 检查用户权限
  4. 查看路由器日志: /log print

性能问题

症状: 反应迟钝

解决方案:

  1. 检查到路由器的网络延迟
  2. 减少并发操作
  3. 验证路由器是否具有足够的资源
  4. 更新到最新的RouterOS版本

贡献;做出贡献

欢迎投稿。

报告问题

  • 使用GitHub Issues
  • 包含 RouterOS 版本
  • 提供命令示例
  • 分享错误信息

功能请求

  • 检查现有请求
  • 描述用例
  • 解释RouterOS的功能

拉取请求(或合并请求)

  1. 为仓库创建分支(或“克隆仓库”)
  2. 创建特性分支
  3. 在实际路由器上进行测试
  4. 更新文档
  5. 提交包含清晰描述的拉取请求(PR)

许可证

MIT 许可证 - 详见 许可证 文件


致谢

  • @杰夫-纳塞里 - 原始的mikrotik-mcp项目
  • @kevinpez(注:这是一个用户名或特定标识,直接翻译为中文可能无实际意义,故保留原样) - 扩展实施
  • MikroTik(注:MikroTik是一个品牌名,通常翻译为“微波通信”或直接保留原名,具体翻译可能根据上下文有所调整,但在此处作为专有名词,直接保留“MikroTik”更为常见。) - RouterOS平台
  • “Anthropic”翻译成中文是“人类中心的”或“以人为本的”,具体含义可能根据上下文有所不同。在人工智能或哲学领域,它可能指的是以人类为中心或以人类利益为优先的观念或技术 - 克劳德和MCP协议
  • 光标团队 - 由人工智能驱动的集成开发环境(IDE)

支持


文档

入门指南

用户指南

发展


通过自然语言实现MikroTik RouterOS自动化