项目简介
'cml-mcp' 是一个基于 Model Context Protocol (MCP) 实现的服务器,专为思科建模实验室 (CML) 设计。它允许大型语言模型 (LLM) 客户端(如 Claude Desktop, Claude Code, Cursor)通过标准化协议与 CML 环境进行交互,从而实现自动化网络实验室管理和操作。
主要功能点
- 创建网络拓扑: 允许 LLM 动态创建新的网络实验室并定义复杂的网络拓扑结构。
- 查询状态信息: 提供工具来检索 CML 服务器、特定实验室或网络设备(节点)的实时状态信息。
- 控制实验室和节点: 支持启动、停止整个实验室或单个虚拟网络设备。
- 执行设备命令: 能够通过 PyATS 框架在 CML 虚拟设备上执行命令行接口 (CLI) 命令,进行配置或操作验证。
- 管理拓扑元素: 可添加、删除节点、接口、链接和可视化标注等。
- 应用链路条件: 配置网络链路的带宽、延迟、丢包等条件模拟真实网络环境。
安装步骤
-
环境准备:
- 确保您的系统已安装 Python 3.12+。
- 您需要一个运行中的 Cisco Modeling Labs (CML) 实例。
- 如果需要执行设备命令,请确保 PyATS 已安装。
- 推荐安装 'uv' Python 包管理器('pip install uv')。
-
方法一:使用 'uvx' 运行(推荐) 这是最简单的安装和运行方式,'uvx' 会从 PyPI 下载服务器并在独立的Python环境中运行它。您只需在您的 MCP 客户端配置中添加服务器信息。
-
方法二:从源代码安装和运行 a. 克隆仓库:
b. 安装项目依赖(包括 FastMCP 2.0):bash git clone https://github.com/xorrkaz/cml-mcp.git cd cml-mcpc. 创建 '.env' 配置文件。在项目根目录下创建一个名为 '.env' 的文件,并填入您的 CML 服务器连接信息。如果您计划在 CML 虚拟设备上执行命令,还需要提供 PyATS 相关的凭据。bash uv syncd. 使用 FastMCP CLI 将服务器安装到您的 LLM 客户端。例如,如果您使用 Claude Desktop:ini CML_URL=https://<您的CML服务器URL> CML_USERNAME=<您的CML用户名> CML_PASSWORD=<您的CML密码> # 以下PyATS相关变量为可选,如果您需要执行设备CLI命令,请提供: PYATS_USERNAME=<您的CML虚拟设备用户名> PYATS_PASSWORD=<您的CML虚拟设备密码> PYATS_AUTH_PASS=<您的CML虚拟设备enable密码>对于其他客户端(如 Claude Code, Cursor),请将 'claude-desktop' 替换为相应的客户端名称。bash fastmcp install claude-desktop src/cml_mcp/server.py:server_mcp --project 'realpath .' --env-file .env
服务器配置(客户端配置参考)
MCP 客户端需要配置 MCP 服务器的启动信息才能与其建立连接。以下是 MCP 客户端配置 'cml-mcp' 服务器时可能涉及的关键信息及其说明,具体配置格式请参考您的 LLM 客户端文档:
- 服务器名称 (Server Name): 您可以在客户端配置中为此 MCP 服务器指定一个易于识别的名称,例如 '"Cisco Modeling Labs MCP Server"'。
- 启动命令 (Command): 指示客户端如何启动此 MCP 服务器进程。
- 如果使用 'uvx' (推荐方式),命令通常是 '"uvx"'。
- 如果从源代码直接运行 FastMCP,命令可能是您的 Python 解释器路径 (例如 'python')。
- 启动参数 (Arguments): 传递给启动命令的参数列表。
- 如果启动命令是 'uvx',参数通常是 '["cml-mcp"]'。
- 如果直接使用 Python 运行 FastMCP,参数可能类似于 '["-m", "fastmcp", "run", "src/cml_mcp/server.py:server_mcp"]'。
- 环境变量 (Environment Variables): 用于向服务器传递敏感信息或配置。
- 'CML_URL': 您的 Cisco Modeling Labs (CML) 服务器的完整 URL 地址(例如 'https://your-cml-server.com')。
- 'CML_USERNAME': 用于登录 CML 服务器的用户名。
- 'CML_PASSWORD': 用于登录 CML 服务器的密码。
- 'PYATS_USERNAME': (可选) 如果您希望 LLM 能够对 CML 中的虚拟设备执行 CLI 命令,需要提供设备的登录用户名。
- 'PYATS_PASSWORD': (可选) 相应设备的登录密码。
- 'PYATS_AUTH_PASS': (可选) 设备的 enable 密码,用于执行特权配置命令。
一个典型的 JSON 格式客户端配置片段可能如下所示(请根据您的客户端实际格式调整,此仅为示例结构,请勿直接复制作为代码运行):
{ "mcpServers": { "Cisco Modeling Labs MCP Server": { "command": "uvx", "args": [ "cml-mcp" ], "env": { "CML_URL": "https://<您的CML服务器URL>", "CML_USERNAME": "<您的CML用户名>", "CML_PASSWORD": "<您的CML密码>", "PYATS_USERNAME": "<您的CML虚拟设备用户名>", "PYATS_PASSWORD": "<您的CML虚拟设备密码>", "PYATS_AUTH_PASS": "<您的CML虚拟设备enable密码>" } } } }
基本使用方法
配置完成后,您的 LLM 客户端将自动识别 'cml-mcp' 提供的工具。您可以直接与 LLM 进行自然语言对话,LLM 会根据您的指令调用 'cml-mcp' 提供的相应工具来执行操作。例如:
- "创建一个名为 'Joe's MCP Lab' 的 CML 实验室。"
- "在该实验室中添加两个 IOL 节点、一个非管理型交换机和一个外部连接器。"
- "将两个 IOL 节点连接到非管理型交换机,并将交换机连接到外部连接器。"
- "配置路由器,使其连接的接口具有 192.0.2.0/24 子网中的 IP 地址。在其上配置 OSPF。然后启动实验室并验证 OSPF 是否正常工作。"
- "在两个 IOL 节点周围添加一个绿色方框标注,表示它们使用 OSPF。"
LLM 将理解这些请求并利用 'cml-mcp' 服务器的工具来与您的 CML 实例进行交互,实现您所描述的网络实验室操作。
信息
分类
AI与计算