CML

Provides a Model Context Protocol MCP server to control Cisco Modeling Labs via natural language.
  • other

27

GitHub Stars

other

Language

4 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "xorrkaz-cml-mcp": {
      "command": "uvx",
      "args": [
        "cml-mcp"
      ],
      "env": {
        "CML_URL": "https://your-cml-server.example.com",
        "CML_PASSWORD": "your_password",
        "CML_USERNAME": "your_username",
        "CML_VERIFY_SSL": "false"
      }
    }
  }
}

You can control Cisco Modeling Labs (CML) with natural language using the MCP server, enabling AI assistants to create labs, configure devices, run commands, and manage your CML environment through simple prompts. This makes lab design and testing faster and more intuitive by turning English instructions into concrete CML actions.

How to use

You interact with the MCP server through an MCP-compatible client. Start your client, connect to the MCP server, and begin issuing natural language prompts. The AI will translate your requests into practical actions on your CML labs, such as creating labs, adding nodes, configuring interfaces, starting or stopping labs, running device commands, and collecting PCAP data.

How to install

Prerequisites you need before installation include Python 3.12 or later and uv, the Python package manager. You also must have Cisco Modeling Labs (CML) 2.9 or later available in your environment.

Step-by-step installation flow you can follow:

1) Ensure Python 3.12+ is installed
2) Install uv if not already present
   pip install uv
3) Install the MCP server package via your MCP client workflow
4) Run the MCP server with the appropriate command for your setup

Configuration and quick start

Configure your MCP client to connect to the CML MCP server by updating the client configuration with your server details. You will set the server command and environment variables to point at your CML instance.

Example configuration for the MCP client ( Claude Desktop ) to start the CML MCP server via uvx is shown below:

{
  "mcpServers": {
    "Cisco Modeling Labs (CML)": {
      "command": "uvx",
      "args": ["cml-mcp"],
      "env": {
        "CML_URL": "https://your-cml-server.example.com",
        "CML_USERNAME": "your_username",
        "CML_PASSWORD": "your_password",
        "CML_VERIFY_SSL": "false"
      }
    }
  }
}

Complete workflow and examples

You can run through common workflows like creating a new lab, adding devices, wiring interfaces, configuring routing protocols, starting the lab, and validating connectivity. Use natural language prompts such as: create a lab, add devices, connect devices, configure OSPF, start the lab, and capture traffic.

System prompt

If your MCP client supports a system prompt, you can set an initial context to guide the assistant toward network lab tasks, such as creating labs, adding nodes, linking interfaces, configuring devices, and creating annotations.

Troubleshooting and help

If you encounter issues, ensure the MCP server is running with the configured environment variables and that your CML server is reachable at the specified URL. For PyATS command execution problems, verify the PyATS setup and credentials as described in the troubleshooting notes.

Notes on installation and usage

The MCP server supports a broad range of tools to manage labs, nodes, links, annotations, PCAPs, and system information. You can tailor access and capabilities through transport modes and ACLs in HTTP mode.

Example prompts to try

Available tools

get_cml_labs

Retrieve labs for a specific user or the current user.

create_empty_lab

Create a new empty lab with optional metadata.

create_full_lab_topology

Create a complete lab from a topology definition.

modify_cml_lab

Update lab properties such as title, description, and notes.

start_cml_lab

Start all nodes within a lab.

stop_cml_lab

Stop all nodes within a lab.

wipe_cml_lab

Wipe all node data and configurations (requires confirmation).

delete_cml_lab

Delete a lab (requires confirmation).

get_cml_lab_by_title

Find a lab using its title.

download_lab_topology

Download the lab topology as a YAML file.

clone_cml_lab

Clone a lab with an optional new title.

get_cml_node_definitions

List available node types.

get_node_definition_detail

Get detailed information about a specific node type.

add_node_to_cml_lab

Add a node to a lab.

get_nodes_for_cml_lab

Get all nodes in a lab with operational data.

configure_cml_node

Set node startup configuration.

start_cml_node

Start a specific node.

stop_cml_node

Stop a specific node.

wipe_cml_node

Wipe node data (requires confirmation).

delete_cml_node

Delete a node (requires confirmation).

get_console_log

Get console output history for a node.

send_cli_command

Execute CLI commands on running nodes (requires PyATS).

add_interface_to_node

Add an interface to a node.

get_interfaces_for_node

Get all interfaces for a node.

connect_two_nodes

Create a link between two interfaces.

get_all_links_for_lab

Get all links in a lab.

apply_link_conditioning

Configure link conditions such as bandwidth, latency, jitter, and loss.

start_cml_link

Enable connectivity on a link.

stop_cml_link

Disable connectivity on a link.

get_annotations_for_cml_lab

Get all visual annotations in a lab.

add_annotation_to_cml_lab

Add text, rectangle, ellipse, or line annotations.

delete_annotation_from_lab

Delete an annotation (requires confirmation).

start_packet_capture

Start capturing packets on a link.

stop_packet_capture

Stop an active packet capture.

check_packet_capture_status

Check capture status and packet count.

get_captured_packet_overview

Get a summary of captured packets.

get_packet_capture_data

Download the full PCAP file (base64-encoded).

get_cml_users

List all CML users.

create_cml_user

Create a new user (admin required).

delete_cml_user

Delete a user (admin, requires confirmation).

get_cml_groups

List all CML groups.

create_cml_group

Create a new group (admin).

delete_cml_group

Delete a group (admin, requires confirmation).

get_cml_information

Get CML server version and configuration.

get_cml_status

Get system health indicators.

get_cml_statistics

Get resource usage and lab/node/link counts.

get_cml_licensing_details

Get licensing information and limits.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational