GNS3网络模拟器MCP服务器

GNS3网络模拟器MCP服务器是一个AI驱动的网络模拟平台,提供40多种工具用于AI驱动的拓扑创建、设备配置和模拟管理。

  • by Wael-Rd
  • Python
  • 本地部署
  • 27 星标
  • 更新于
在 GitHub 查看 Wael-Rd/gns3-mcp-server

使用说明

🚀 GNS3网络模拟器MCP服务器v2.0

基于人工智能的GNS3网络仿真平台
通过模型上下文协议(MCP),使用40多种用于AI驱动的拓扑创建、设备配置和仿真管理的综合工具来转换网络工程。


🎯 v2.0中的新增功能

✨ 大规模功能扩展

  • 40+工具 (12个以上):完成GNS3 API覆盖范围
  • 模块化架构:明确区分关注点
  • 配置模板:15+预构建网络配置(OSPF、BGP、VLAN、NAT等)
  • 高级控制台控制:通过自动检测和配置管理增强Telnet
  • 批量操作:同时配置多个设备
  • 拓扑验证:自动网络健康检查
  • 快照管理:完成项目的版本控制
  • 绘图工具:用文本和形状注释拓扑

🤖 AI优先网络工程

  • 自然语言到网络:描述你的网络,人工智能构建它
  • 智能配置:使用简单模板应用复杂配置
  • 智能故障排除:具有验证功能的AI驱动诊断
  • 自动化工作流程:企业级部署的批量操作

🔥 生产就绪功能

  • 40+综合工具:涵盖所有GNS3操作
  • 实时操作:与强大的错误处理异步
  • 多平台支持:Windows、macOS、Linux
  • 企业安全:身份验证和SSL支持
  • 高性能:具有连接管理功能的优化API客户端

📋 完整的功能矩阵

类别 工具 能力 用例
服务器和计算 2个工具 服务器信息、计算管理 基础设施监控
项目管理 8个工具 全生命周期管理 组织、备份
节点管理 13个工具 完整的设备控制 设备部署、管理
链路管理 3个工具 连接管理 拓扑构建
配置 3个工具 控制台访问、模板 设备设置、自动化
模板 2个工具 模板和设备管理 快速部署
快照 4个工具 版本控制 备份、还原
包捕获 2个工具 流量分析 故障排除、监控
绘图 2个工具 拓扑注释 文档
高级 3个工具 批量操作、验证 企业操作

🛠️ 安装和设置(闪电般快速)

先决条件

  • GNS3服务器 运行于 http://localhost:3080 (默认)
  • Python 3.10+ 安装
  • Gemini CLI 或任何MCP兼容客户端

快速启动(30秒)

# 1. Clone the repository
git clone https://github.com/wael-rd/gns3-mcp-server.git
cd gns3-mcp-server

# 2. Install dependencies (automatic on first run)
python -m pip install -e .

# 3. Add to Gemini CLI
gemini mcp add gns3 "path/to/gns3-mcp-server/run.bat"  # Windows
gemini mcp add gns3 "path/to/gns3-mcp-server/run.sh"   # Linux/Mac

# 4. Test the connection
gemini "List all GNS3 projects"

🎉 就是这样!现在,您已经为AI驱动的网络工程做好了准备!


🎮 可用MCP工具(40+)

📚 快速参考

看 docs/TOOL_REFERENCE.md 获取所有42个工具的完整文档。

🔧 关键工具类别

服务器和计算管理(2个工具)

  • gns3_get_server_info -获取GNS3服务器版本和信息
  • gns3_list_computes -列出所有可用的计算服务器

项目管理(8个工具)

  • gns3_list_projects -列出所有具有状态的项目
  • gns3_create_project -创建新项目
  • gns3_get_project -获取项目详细信息
  • gns3_update_project -更新项目设置
  • gns3_open_project -打开现有项目
  • gns3_close_project -关闭项目(停止节点)
  • gns3_delete_project -永久删除项目
  • gns3_duplicate_project -用新名称复制项目

节点管理(13个工具)

  • gns3_list_nodes -列出项目中的所有设备
  • gns3_add_node -从模板添加设备
  • gns3_get_node -获取设备详细信息
  • gns3_update_node -更新设备设置
  • gns3_delete_node -删除设备
  • gns3_start_node / gns3_stop_node -控制装置状态
  • gns3_suspend_node / gns3_reload_node -高级控制
  • gns3_duplicate_node -克隆设备
  • gns3_start_all_nodes / gns3_stop_all_nodes -批量操作

链接管理(3个工具)

  • gns3_list_links -列出所有连接
  • gns3_add_link -连接两个设备
  • gns3_delete_link -断开连接

拓扑工具(1个工具)

  • gns3_get_topology -完整的网络概述

控制台和配置(3个工具)

  • gns3_send_console_commands -向设备发送CLI命令
  • gns3_get_node_config -获取设备配置
  • gns3_apply_config_template -应用预构建配置

模板和设备(2个工具)

  • gns3_list_templates -列出可用的设备模板
  • gns3_list_appliances -列出可用电器

快照管理(4个工具)

  • gns3_list_snapshots -列出项目快照
  • gns3_create_snapshot -创建备份
  • gns3_restore_snapshot -从备份还原
  • gns3_delete_snapshot -删除快照

数据包捕获(2个工具)

  • gns3_start_capture -在链路上开始数据包捕获
  • gns3_stop_capture -停止数据包捕获

绘图和注释(2个工具)

  • gns3_add_text_annotation -添加文本标签
  • gns3_add_shape -添加形状(矩形、椭圆形)

高级工具(3个工具)

  • gns3_get_idle_pc_values -优化Dynamips路由器
  • gns3_bulk_configure_nodes -一次配置多个设备
  • gns3_validate_topology -检查常见问题

gns3_save_project

使用可选快照保存项目

gemini "Save the current project with a checkpoint"

gns3_export_project

导出项目以供共享或备份

gemini "Export the project to 'network_lab_backup.zip'"

🧪 实际使用示例

示例1:完成企业网络设置

# AI Conversation - Building a multi-site network
User: "Create a new project called 'Enterprise_WAN' with 3 sites connected via routers"

AI: "I'll create that network for you..."
# Creates project
# Lists available templates
# Adds 3 routers (HQ, Branch1, Branch2), switches, and PCs
# Connects them with proper WAN and LAN links
# Configures IP addressing and OSPF routing
# Starts all devices

User: "Configure OSPF on all routers with area 0"

AI: "Applying OSPF configuration..."
# Uses gns3_apply_config_template for each router
# Configures network statements
# Saves configurations

User: "Add DHCP on the branch routers for local PCs"

AI: "Setting up DHCP pools..."
# Applies DHCP template to branch routers
# Configures appropriate IP ranges

示例2:3层交换机上的VLAN配置

User: "Set up VLANs 10, 20, 30 on my switch for Sales, Engineering, and Management"

AI: "Creating VLANs and configuring ports..."
# Creates VLANs with names
# Configures trunk port to router
# Sets access ports for each department
# Configures inter-VLAN routing on router

User: "Show me the running configuration"

AI: "Here's the current configuration..."
# Uses gns3_get_node_config to retrieve and display config

示例3:网络故障排除

User: "My network between HQ and Branch1 has connectivity issues"

AI: "Let me diagnose the problem..."
# Runs gns3_validate_topology
# Checks node status
# Starts packet capture on WAN link
# Sends diagnostic commands to routers
# Analyzes routing tables

AI: "Issue found: Interface GigabitEthernet0/1 on HQ router is administratively down"

User: "Fix it please"

AI: "Enabling the interface..."
# Sends console commands: no shutdown
# Verifies connectivity with ping tests

示例4:从模板创建测试实验室

User: "Create a CCNA practice lab with 2 routers, 2 switches, and 4 PCs"

AI: "Building your CCNA lab..."
# Creates project with descriptive name
# Adds devices with proper positioning
# Connects according to typical CCNA topology
# Applies basic configuration (hostnames, interfaces)
# Creates snapshot "Clean_State" for resetting

User: "Configure Router1 as DHCP server for the 192.168.1.0/24 network"

AI: "Configuring DHCP..."
# Applies dhcp_pool template
# Sets up excluded addresses for gateway
# Configures DNS servers

示例5:批量配置部署

User: "Configure all routers with SSH access, username 'admin', password 'cisco123'"

AI: "Applying SSH configuration to all routers..."
# Uses gns3_list_nodes to find all routers
# Uses gns3_bulk_configure_nodes with SSH template
# Configures domain, crypto keys, VTY lines on each
# Returns status for each device

AI: "SSH configured successfully on 5 routers. 1 failed (Router3 not started)."

🎨 配置模板库

该服务器包括15+预构建、经过测试的配置模板:

路由协议

  • 开放式最短路径优先:单/多区域、路由器id、网络声明
  • EIGRP:AS配置,自动摘要控制
  • 边界网关协议:eBGP/iBGP、邻居配置、路由反射器
  • 静态路由:标准和默认路线

切换

  • 虚拟局域网:创建和命名
  • 中继端口:802.1Q封装,允许VLAN
  • 访问端口:VLAN分配、PortFast、BPDU保护

服务

  • 动态主机配置协议:池配置、DNS、排除的地址
  • NAT/PAT:过载配置、ACL
  • 安全外壳协议:使用加密密钥进行安全访问

安全

  • 标准ACL:简单的允许/拒绝规则
  • 扩展的ACL:协议,基于端口的过滤
  • 基础硬化:服务禁用,密码加密

管理

  • 基本路由器设置:主机名、域、控制台设置
  • 接口配置:IP地址、描述
  • 日志记录:系统日志配置
  • 简单网络管理协议:社区字符串和访问控制
  • 网络时间协议:时间同步
  • 横幅:MOTD和登录消息

服务质量

  • QoS标记:DSCP标记、类图、策略图

使用示例:

# Apply OSPF routing
gns3_apply_config_template(
    node_id="router-id",
    template_name="ospf",
    template_params={
        "process_id": 1,
        "router_id": "1.1.1.1",
        "networks": [
            {"network": "192.168.1.0", "wildcard": "0.0.0.255", "area": 0},
            {"network": "10.0.0.0", "wildcard": "0.0.0.3", "area": 0}
        ]
    },
    save_config=True
)

🔧 高级配置

环境变量

# Set custom GNS3 server
export GNS3_SERVER_URL="http://192.168.1.100:3080"

# Configure authentication
export GNS3_USERNAME="admin"
export GNS3_PASSWORD="secure_password"

# SSL/TLS settings
export GNS3_VERIFY_SSL="false"

自定义模板

创建用于快速部署的设备模板:

{
  "name": "Enterprise_Router",
  "device_type": "cisco_ios",
  "default_config": {
    "interfaces": [
      {"name": "Gi0/0", "ip": "10.0.0.1/24"},
      {"name": "Gi0/1", "ip": "192.168.1.1/24"}
    ],
    "routing": {
      "protocol": "ospf",
      "area": "0"
    }
  }
}

性能调优

# Async configuration for high-performance operations
config = {
    "connection_pool_size": 20,
    "request_timeout": 30,
    "retry_attempts": 3,
    "concurrent_operations": 10
}

📊 系统要求

最低要求

  • 中央处理器:2核,2.0 GHz
  • 随机存取存储器:4 GB
  • 存储:500 MB可用
  • 网络:1 Mbps互联网连接

推荐用于生产

  • 中央处理器:4核以上,3.0 GHz+
  • 随机存取存储器:8+GB
  • 存储:2+GB固态硬盘
  • 网络:10+Mbps互联网连接

支持的平台

  • ✅ Windows 10/11 (x64)
  • ✅ macOS 10.15+ (英特尔/苹果硅)
  • ✅ Ubuntu 18.04+ (x64/ARM64)
  • ✅ CentOS 7/8 (x64)
  • ✅ 码头工人 (Linux容器)

🚨 故障排除指南

常见问题及解决方案

问题:“连接失败”

# Solution 1: Check GNS3 server is running
# Solution 2: Verify server URL
# Solution 3: Check firewall settings

gemini "Ping the GNS3 server to check connectivity"

问题:“找不到设备模板”

# Solution: Verify device templates are installed in GNS3
# Use GNS3 GUI to import templates

问题:“身份验证失败”

# Solution: Check username/password in environment variables
export GNS3_USERNAME="your_username"
export GNS3_PASSWORD="your_password"

问题:“超出费率限制”

# Solution: Wait for quota reset or upgrade API plan
# Current rate limit: 1000 requests/hour

调试模式

启用调试日志记录:

export GNS3_MCP_DEBUG=1
gemini "Debug information: Show current GNS3 server status"

🎓 按行业划分的用例

🏫 教育

  • 网络实验室:为学生自动设置实验室
  • 课程:交互式网络工程演习
  • 评估:网络配置的自动分级

🏢 企业

  • 网络测试:部署前测试环境
  • 训练:工作人员网络认证培训
  • 概念验证:快速网络解决方案验证

🛡️ 安全

  • 渗透测试:安全的测试环境
  • 安全培训:红队演习
  • 脆弱性研究:受控测试环境

🏭 电信

  • 协议测试:多供应商互操作性
  • 服务部署:预生产测试
  • 绩效基准测试:网络优化

🔬 技术架构

系统组件

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Gemini CLI    │◄──►│  GNS3 MCP Server │◄──►│  GNS3 Server    │
│                 │    │                  │    │                 │
│ • AI Interface  │    │ • 12 MCP Tools   │    │ • REST API      │
│ • Tool Discovery│    │ • Async Client   │    │ • WebSocket     │
│ • JSON-RPC      │    │ • Error Handling │    │ • Real-time     │
└─────────────────┘    └──────────────────┘    └─────────────────┘

协议流

  1. 工具发现:Gemini CLI发现所有可用的MCP工具
  2. 请求处理:用户请求映射到特定的MCP工具
  3. API翻译:MCP工具转换为GNS3 REST API调用
  4. 响应处理:GNS3响应转换为用户友好格式
  5. 实时更新:用于实时状态更新的WebSocket连接

安全架构

🔐 Authentication Flow
├── Username/Password
├── Token-based Authentication
├── SSL/TLS Encryption
└── Rate Limiting

📈 性能指标

操作时间(典型)

  • 列出项目:约200毫秒
  • 创建项目:~500ms
  • 添加网络设备:约300毫秒
  • 创建链接:约250毫秒
  • 开始模拟:约1-2秒
  • 流量捕获:实时

吞吐量

  • 并发操作:10个同时请求
  • 日常运营:10000+个请求
  • 运行时间:99.9%的可用性

资源使用

  • 中央处理器:正常运行时<2%
  • 随机存取存储器:~100MB基线
  • 网络:API调用<1Mbps

🤝 社区与支持

文档

社区

贡献

我们欢迎捐款!请查看我们的 贡献指南 了解详情。


📜 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


🙏 致谢

  • GNS3团队:用于令人惊叹的网络仿真平台
  • FastMCP:卓越的MCP框架
  • Gemini CLI:用于提供AI接口
  • 社区:用于持续反馈和改进

🚀 接下来是什么?

即将推出的功能

  • [ ] 多区域支持:全球GNS3服务器管理
  • [ ] AI优化:基于机器学习的拓扑建议
  • [ ] 高级分析:网络性能分析
  • [ ] 模板市场:社区驱动的设备模板
  • [ ] 云集成:支持基于云的GNS3服务器

路线图

Q1 2025: Multi-region support
Q2 2025: AI optimization engine
Q3 2025: Advanced analytics dashboard
Q4 2025: Template marketplace launch

🎯 准备好转变你的网络工程了吗?

⭐ 如果这个存储库能帮助你建立令人惊叹的网络,请为其加星! ⭐


建于❤️ 网络工程社区