克劳德建模实验室MCP服务器
一个全面的模块化工具包,用于通过模型上下文协议(MCP)接口与思科建模实验室(CML)进行交互。该服务器支持自动化实验室创建、拓扑管理、设备配置和网络测试,用于教育和开发目的。
特性
核心能力
- 实验室管理:创建、启动、停止和删除CML实验室
- 拓扑结构构建:添加路由器、交换机并创建网络链接
- 设备配置:应用和检索设备配置
- 控制台访问:在网络设备上执行命令
- 网络发现:检查实验室拓扑、节点和接口
关键利益
- 模块化架构:处理者之间的关注点完全分离
- 教育重点:非常适合与学生和教师建立联系
- 自动化就绪:专为代理AI辅导系统设计
- Windows兼容的:模块化设计解决了以前的Windows兼容性问题
安装
先决条件
- Python 3.8或更高版本
- 访问Cisco建模实验室服务器
- 有效的CML凭据
快速开始
- 克隆或下载此存储库
- 安装依赖项:
pip install -r requirements.txt- 运行MCP服务器:
python claude_modeling_labs_modular.py开发安装
pip install -e .[dev]用法
初始化连接
# First, initialize the client with your CML server details
initialize_client(
base_url="https://your-cml-server.com",
username="your-username",
password="your-password",
verify_ssl=True # Set to False for self-signed certificates
)基础实验室操作
# Create a new lab
lab = create_lab("My Network Lab", "Learning OSPF routing")
# Create network devices
router1 = create_router(lab["lab_id"], "R1", x=100, y=100)
router2 = create_router(lab["lab_id"], "R2", x=300, y=100)
switch1 = create_switch(lab["lab_id"], "SW1", x=200, y=200)
# Connect devices
link_nodes(lab["lab_id"], router1["node_id"], router2["node_id"])
link_nodes(lab["lab_id"], router1["node_id"], switch1["node_id"])
# Start the lab
start_lab(lab["lab_id"])
wait_for_lab_nodes(lab["lab_id"], timeout=120)设备配置
# Apply configuration to a router
ospf_config = """
hostname Router1
interface GigabitEthernet0/0
ip address 10.1.1.1 255.255.255.0
no shutdown
router ospf 1
network 10.1.1.0 0.0.0.255 area 0
"""
configure_node(lab["lab_id"], router1["node_id"], ospf_config)
# Retrieve current configuration
current_config = get_node_config(lab["lab_id"], router1["node_id"])控制台命令
# Execute commands on devices
send_console_command(lab["lab_id"], router1["node_id"], "show ip route")
check_interfaces(lab["lab_id"], router1["node_id"])
# Send multiple commands
commands = [
"show version",
"show ip interface brief",
"show running-config"
]
send_multiple_commands(lab["lab_id"], router1["node_id"], commands)建筑
模块化设计将功能划分为重点处理程序:
src/
├── client/ # CML API authentication and HTTP client
├── handlers/ # Modular tool handlers
│ ├── lab_management.py # Lab CRUD operations
│ ├── topology.py # Node and link management
│ ├── configuration.py # Device configuration
│ └── console.py # Console session management
├── utils/ # Common utilities and helpers
└── server.py # Main MCP server entry point关键设计原则
- 关注点分离:每个处理程序都专注于CML管理的一个方面
- 清洁依赖关系:模块之间的耦合最小
- 错误处理:所有操作中一致的错误处理
- Windows兼容性:模块化结构避免了文件大小限制
可用工具
实验室管理
initialize_client()-使用CML服务器进行身份验证list_labs()-列出所有可用的实验室create_lab()-创建新实验室get_lab_details()-获取详细的实验室信息delete_lab()-删除实验室start_lab()-开始实验室执行stop_lab()-停止实验室执行wait_for_lab_nodes()-等待节点初始化list_node_definitions()-列出可用设备类型
拓扑管理
get_lab_nodes()-列出实验室中的节点add_node()-将设备添加到实验室create_router()-创建路由器(iosv)create_switch()-创建开关(iosvl2)get_node_interfaces()-列出节点接口get_physical_interfaces()-仅获取物理接口create_interface()-在节点上创建新接口get_lab_links()-列出实验室中的所有链接create_link_v3()-在特定接口之间创建链接link_nodes()-自动链接两个节点delete_link()-删除链接get_lab_topology()-获取完整的拓扑摘要
配置管理
configure_node()-将配置应用于设备get_node_config()-检索设备配置
控制台操作
open_console_session()-打开对设备的控制台访问close_console_session()-关闭控制台会话send_console_command()-执行单个命令send_multiple_commands()-执行多个命令check_interfaces()-检查接口状态get_diagnostic_recommendations()-获取故障排除建议
教育用例
该工具包旨在通过以下方式支持网络教育:
自动化实验室创建
- 基于学习目标的动态拓扑生成
- 特定网络概念的预配置场景
- 快速迭代和实验
AI驱动的辅导
- 代理系统可以为个别学生创建定制实验室
- 实时指导和故障排除协助
- 基于学生进步的自适应学习路径
课程整合
- 支持各种网络主题(OSPF、BGP、VLAN、STP等)
- 可从基本连接扩展到复杂的企业场景
- 与现有学习管理系统集成
贡献
该项目采用模块化架构,支持轻松扩展和维护:
- 添加新工具:在相应的处理程序模块中创建新函数
- 新处理程序类别:添加新的处理程序文件并将其注册到
server.py - 测试:每个模块都可以独立测试
- 文档:更新代码注释和此README
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
有关问题、疑问或贡献,请参阅项目存储库或文档。
______________________________________________________________________
版本: 2.0.0\ 作者:Claude AI助理\ 目的:教育网络自动化和人工智能辅导
