思科建模实验室(CML)的模型上下文协议(MCP)服务器

mcp名称:io.github.xorrkaz/cml-mcp
概述
cml-mcp 将AI助手的强大功能带到您的网络实验室!此工具允许您与 思科建模实验室(CML) 通过Claude Desktop、Claude Code和Cursor等人工智能应用程序使用自然语言。
与其点击菜单或编写脚本,不如用简单的英语告诉人工智能你想做什么——比如“用两个路由器创建一个新的实验室并配置OSPF”或“显示Router1上的运行配置”——然后看着它自动发生。
这是通过 模型上下文协议(MCP),人工智能应用程序与外部工具和服务交互的标准方式。把它想象成让你的AI助手直接连接到你的CML服务器。
特性
- 创建实验室拓扑: 用于创建新实验室和从头开始定义网络拓扑或使用完整拓扑定义的工具。
- 查询状态: 用于检索实验室、节点、链接、注释和CML服务器本身的详细状态信息的工具。
- 控制实验室和节点: 根据需要启动、停止和擦除实验室或单个节点的工具。
- 管理CML用户和组: 列出、创建和删除本地用户和组的工具(需要管理员权限)。
- 视觉注释: 将视觉元素(文本、矩形、椭圆、线条)添加到实验室拓扑中,以便进行文档和组织。
- 链接管理: 连接节点,配置链路调节(带宽、延迟、抖动、损耗),并控制链路状态。
- 数据包捕获: 使用Wireshark或其他工具从网络链路启动、停止和检索数据包捕获(PCAP)以进行流量分析。
- 节点配置: 配置节点启动配置,并向正在运行的设备发送CLI命令。
- 在设备上运行命令: 使用 PyATS,MCP客户端可以在CML实验室内的虚拟设备上执行命令。
- 控制台日志访问: 从运行中的节点检索控制台日志以进行故障排除和监控,并支持选择特定的串行控制台端口。
- 模块化架构: 为了可维护性和可扩展性,工具被组织成逻辑模块(实验室、节点、链接、pcap等)。
- 访问控制列表(HTTP模式): 在HTTP传输模式下运行时,您可以使用基于YAML的ACL配置文件限制哪些用户可以访问哪些工具。
快速开始
安装
最简单的入门方法是使用 uvx 使用Claude Desktop(或其他MCP兼容客户端)。这 uvx 该工具自动下载并运行服务器,无需手动安装步骤。
配置: 查找并编辑您的Claude Desktop配置文件(claude_desktop_config.json).添加以下内容:
{
"mcpServers": {
"Cisco Modeling Labs (MCP)": {
"type": "stdio",
"command": "uvx",
"args": [
"cml-mcp[pyats]"
],
"env": {
"CML_URL": "{CML_URL}",
"CML_USERNAME": "{CML_USERNAME}",
"CML_PASSWORD": "{CML_PASSWORD}!"
}
}
}
}重要提示: 用实际的CML服务器详细信息替换占位符值:
CML_URL:您的CML服务器地址(例如。,https://cml.example.com或https://10.10.20.50)CML_USERNAME和CML_PASSWORD:您的CML登录凭据- 集
CML_VERIFY_SSL到"false"如果使用自签名证书(在实验室环境中很常见)
\[!提示\] “找不到命令”uvx? 像Claude Desktop这样的MCP客户端在受限环境中运行,该环境并不总是继承您的shellPATH.如果uvx找不到,请在中使用其完整路径"command"现场。要找到它,请运行which uvx在macOS/Linux上的终端中,或where uvx在Windows上的命令提示符中(例如。,"/Users/alice/.local/bin/uvx"在macOS上,"C:\Users\alice\.local\bin\uvx.exe"在Windows上)。同样适用于uv,npx,或MCP配置中使用的任何其他命令。
需要更多功能?
- 对于 设备CLI命令执行,使用
cml-mcp[pyats]而不是cml-mcp在args中 - 对于 Docker、Windows(WSL)或HTTP服务器模式,请参阅 安装.md
在哪里可以找到您的配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
需求
- Python 3.12或3.13
- 思科建模实验室(CML)2.9或更高版本
- 紫外线 -Python包管理器
可用的MCP工具
服务器提供51个MCP工具,分为以下几类:
实验室管理
- get_cml_labs -检索特定用户或当前用户的实验室
- create_空_实验室 -使用可选元数据创建新的空实验室
- create_full_lab_topology -从拓扑定义创建完整的实验室
- modify_cml_lab -更新实验室属性(标题、描述、注释)
- set_cml_lab_权限 -配置组/用户访问权限(LAB_ADMIN、LAB_EDIT、LAB_EXEC、LAB_VIEW)
- start_cml_lab -启动实验室中的所有节点
- stop_cml_lab -停止实验室中的所有节点
- wipe_cml-lab -擦除所有节点数据/配置(如果客户端支持,则提示确认)
- delete_cml_lab -删除实验室(如果客户支持,则提示确认)
- get_cml_lab_by_title -按名称查找实验室
- download_lab_topology -将实验室拓扑下载为YAML文件
- clone_cml_lab -使用可选的新标题克隆实验室
节点管理
- get_cml_node_definition -列出可用节点类型
- get_node_definition_detail -获取特定节点类型的详细信息
- add_node_to_cml-lab -将节点添加到实验室
- get_nodes_for_cml_lab -获取实验室中所有节点的操作数据
- configure_cml_node -设置节点启动配置
- start_cml_node -启动特定节点
- stop_cml_node -停止特定节点
- wipe_cml_节点 -擦除节点数据(如果客户端支持,则提示确认)
- delete_cml_node -删除节点(如果客户端支持,则提示确认)
- get_sole_log -获取节点的控制台输出历史记录;可选的
console索引选择串行端口(默认0基于Docker的节点通常同时使用这两种方法0和1) - send_cli_命令 -在正在运行的节点上执行CLI命令(需要PyATS);可选的
console索引选择要使用的串行端口
接口和链路管理
- add_interface_to_node -向节点添加接口
- get_interfaces_for_node -获取节点的所有接口
- connect_two_nodes -在两个接口之间创建链接
- get_all_links_for_lab -在实验室中获取所有链接
- 应用程序_链接_条件 -配置网络条件(带宽、延迟、抖动、损耗)
- start_cml_link -在链接上启用连接
- stop_cml_link -禁用链接上的连接
注释(视觉元素)
- get_annotations_for_cml_lab -在实验室中获取所有视觉注释
- add_text_annotation -添加文本注释
- add_rectangle_annotation -添加矩形注释
- add_椭圆_注释 -添加椭圆注释
- add_line_annotation -添加线条注释
- delete_annotation_from_lab -删除注释(如果客户端支持,则提示确认)
数据包捕获(PCAP)
- start_packet_capture -开始捕获链接上的数据包
- stop_packet_capture -停止活动数据包捕获
- check_packet_capture_status -检查捕获状态和数据包计数
- get_captured_packet_overview -获取捕获的数据包摘要
- get_packet_capture_data -下载完整的PCAP文件(Wireshark/tcpdump的base64编码)
用户和组管理
- get_cml_users -列出所有CML用户
- create_cml_user -创建新用户(需要管理员)
- delete_cml_user -删除用户(需要管理员,如果客户端支持,则提示确认)
- get_cml_groups -列出所有CML组
- create_cml_组 -创建新组(需要管理员)
- delete_cml_组 -删除组(需要管理员,如果客户端支持,则提示确认)
系统信息
- get_cml信息 -获取CML服务器版本和配置
- get_cml_status -获取系统健康指标
- get_cml_统计 -获取资源使用情况和实验室/节点/链接计数
- get_cml_licensing_details -获取许可信息和限制
用法
配置后,重新启动MCP客户端(例如,Claude Desktop)并开始聊天!AI助手现在可以直接访问您的CML服务器,并通过自然对话帮助您构建和管理网络实验室。
你能做什么?
以下是一些示例提示:
入门指南:
- “显示我的所有CML实验室”
- “CML中有哪些可用的节点类型?”
- “告诉我我的CML服务器状态和许可”
建筑实验室:
- 创建一个名为“OSPF测试实验室”的新实验室
- “向我的实验室添加两个CSR1000v路由器和一个外部连接器”
- “将路由器1的千兆以太网1连接到路由器2的千兆以太网”
配置和测试:
- “在两个路由器上配置OSPF区域0”
- “启动实验室中的所有节点”
- “显示路由器1上的OSPF邻居”
- “在路由器之间的链路上启动数据包捕获”
完整工作流示例:
以下是一系列提示,演示如何构建和测试一个完整的实验室:
- “创建一个名为“我的网络实验室”的新CML实验室”
- 向此实验室添加两个IOL路由器、一个非托管交换机和一个外部连接器
- “将两个IOL路由器连接到非托管交换机,并将交换机连接到外部连接器”
- “配置路由器,使其连接的接口具有192.0.2.0/24子网中的IP,并在其上配置OSPF”
- “启动实验室并验证OSPF是否正常工作”
- “在两个IOL路由器周围添加一个绿色框注释,标签为‘OSPF区域0’”
这是一个演示,显示它在Claude Desktop中工作:
系统提示
如果你的LLM工具支持系统提示,或者你想提供一些更丰富的初始上下文,Hank Preston提供了一个很好的例子:
您是一名网络实验室助理,专门负责支持思科建模实验室(CML)。您为许多常见的实验室活动提供了一个自然语言界面,例如: - 创建新实验室 - 向实验室添加节点 - 在节点之间创建接口 - 配置节点 - 创建注释 您可以使用工具访问CML服务器。
贡献
欢迎投稿!请看 贡献.md 作为指导方针。
有关开发设置、测试和代码样式的信息,请参阅 Developpent.md.
故障排除
常见问题
“找不到模块”或导入错误
如果您需要PyATS支持,请确保您已安装了包含所有附加功能的软件包:
uvx cml-mcp[pyats] # For uvx installationsSSL证书错误
如果您在CML服务器上使用自签名证书,请设置 CML_VERIFY_SSL=false 在您的环境配置中。
PyATS命令执行失败
- 确保PyATS已安装
cml-mcp[pyats] - 验证
PYATS_USERNAME,PYATS_PASSWORD,以及PYATS_AUTH_PASS设置正确 - 在Windows上,使用WSL或Docker支持PyATS
有关更多故障排除帮助,请参阅 安装.md.
获取帮助
文档
- 安装.md -所有平台和运输方式的详细安装说明
- Developpent.md -开发设置、测试和贡献指南
- 贡献.md -如何为项目做出贡献
许可证
此项目的MCP服务器部分根据 BSD 2条款“简化”许可证然而,它利用了媒染剂 CML本身的模式类型代码,在 专有思科许可证.
