CML
- 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.