
Cisco Modeling Labs CML
Connects Claude directly to your Cisco Modeling Labs instance through the Model Context Protocol. You get 51 tools spanning lab lifecycle (create, start, stop, wipe), node management, link conditioning, PCAP captures, and PyATS-powered CLI command execution on running devices. Supports access control lists in HTTP mode and handles everything from topology creation to retrieving console logs from specific serial ports. Useful when you're building network labs and want to skip the CML GUI, or when you need AI-assisted troubleshooting that can pull configs and packet captures on demand. Requires CML 2.9+ and credentials passed via environment variables.
- GitHub stars
- 78
- tools
- 52
- auth
- Secret needed
- transport
- STDIO
- env vars
- 6
- last updated
- Nov 3, 2026
Tools
52 toolsPublic tool metadata for what this MCP can expose to an agent.
get_cml_labsRetrieve labs for a specific user or current user
Retrieve labs for a specific user or current user
No parameter schema in public metadata yet.
create_empty_labCreate a new empty lab with optional metadata
Create a new empty lab with optional metadata
No parameter schema in public metadata yet.
create_full_lab_topologyCreate a complete lab from a topology definition
Create a complete lab from a topology definition
No parameter schema in public metadata yet.
modify_cml_labUpdate lab properties (title, description, notes)
Update lab properties (title, description, notes)
No parameter schema in public metadata yet.
set_cml_lab_permissionsConfigure group/user access (LAB_ADMIN, LAB_EDIT, LAB_EXEC, LAB_VIEW)
Configure group/user access (LAB_ADMIN, LAB_EDIT, LAB_EXEC, LAB_VIEW)
No parameter schema in public metadata yet.
start_cml_labStart all nodes in a lab
Start all nodes in a lab
No parameter schema in public metadata yet.
stop_cml_labStop all nodes in a lab
Stop all nodes in a lab
No parameter schema in public metadata yet.
wipe_cml_labWipe all node data/configurations (prompts for confirmation if client supports it)
Wipe all node data/configurations (prompts for confirmation if client supports it)
No parameter schema in public metadata yet.
delete_cml_labDelete a lab (prompts for confirmation if client supports it)
Delete a lab (prompts for confirmation if client supports it)
No parameter schema in public metadata yet.
get_cml_lab_by_titleFind a lab by its title
Find a lab by its title
No parameter schema in public metadata yet.
download_lab_topologyDownload lab topology as YAML file
Download lab topology as YAML file
No parameter schema in public metadata yet.
clone_cml_labClone a lab with optional new title
Clone a lab with optional new title
No parameter schema in public metadata yet.
get_cml_node_definitionsList available node types
List available node types
No parameter schema in public metadata yet.
get_node_definition_detailGet detailed info about a specific node type
Get detailed info about a specific node type
No parameter schema in public metadata yet.
add_node_to_cml_labAdd a node to a lab
Add a node to a lab
No parameter schema in public metadata yet.
get_nodes_for_cml_labGet all nodes in a lab with operational data
Get all nodes in a lab with operational data
No parameter schema in public metadata yet.
configure_cml_nodeSet node startup configuration
Set node startup configuration
No parameter schema in public metadata yet.
start_cml_nodeStart a specific node
Start a specific node
No parameter schema in public metadata yet.
stop_cml_nodeStop a specific node
Stop a specific node
No parameter schema in public metadata yet.
wipe_cml_nodeWipe node data (prompts for confirmation if client supports it)
Wipe node data (prompts for confirmation if client supports it)
No parameter schema in public metadata yet.
delete_cml_nodeDelete a node (prompts for confirmation if client supports it)
Delete a node (prompts for confirmation if client supports it)
No parameter schema in public metadata yet.
get_console_logGet console output history for a node; optional console index selects the serial port (default 0; Docker-based nodes often use both 0 and 1)
Get console output history for a node; optional console index selects the serial port (default 0; Docker-based nodes often use both 0 and 1)
No parameter schema in public metadata yet.
send_cli_commandExecute exec/operational-mode CLI commands on running nodes (requires PyATS); optional console index selects which serial port to use
Execute exec/operational-mode CLI commands on running nodes (requires PyATS); optional console index selects which serial port to use
No parameter schema in public metadata yet.
send_cli_config_commandExecute configuration-mode CLI commands on running nodes (requires PyATS); optional console index selects which serial port to use
Execute configuration-mode CLI commands on running nodes (requires PyATS); optional console index selects which serial port to use
No parameter schema in public metadata yet.
add_interface_to_nodeAdd an interface to a node. Returns a list of created interfaces (a single slot request may add multiple interfaces depending on the node type)
Add an interface to a node. Returns a list of created interfaces (a single slot request may add multiple interfaces depending on the node type)
No parameter schema in public metadata yet.
get_interfaces_for_nodeGet all interfaces for a node
Get all interfaces for a node
No parameter schema in public metadata yet.
connect_two_nodesCreate a link between two interfaces
Create a link between two interfaces
No parameter schema in public metadata yet.
get_all_links_for_labGet all links in a lab
Get all links in a lab
No parameter schema in public metadata yet.
apply_link_conditioningConfigure network conditions (bandwidth, latency, jitter, loss)
Configure network conditions (bandwidth, latency, jitter, loss)
No parameter schema in public metadata yet.
start_cml_linkEnable connectivity on a link
Enable connectivity on a link
No parameter schema in public metadata yet.
stop_cml_linkDisable connectivity on a link
Disable connectivity on a link
No parameter schema in public metadata yet.
get_annotations_for_cml_labGet all visual annotations in a lab
Get all visual annotations in a lab
No parameter schema in public metadata yet.
add_text_annotationAdd a text annotation
Add a text annotation
No parameter schema in public metadata yet.
add_rectangle_annotationAdd a rectangle annotation
Add a rectangle annotation
No parameter schema in public metadata yet.
add_ellipse_annotationAdd an ellipse annotation
Add an ellipse annotation
No parameter schema in public metadata yet.
add_line_annotationAdd a line annotation
Add a line annotation
No parameter schema in public metadata yet.
delete_annotation_from_labDelete an annotation (prompts for confirmation if client supports it)
Delete an annotation (prompts for confirmation if client supports it)
No parameter schema in public metadata yet.
start_packet_captureStart capturing packets on a link
Start capturing packets on a link
No parameter schema in public metadata yet.
stop_packet_captureStop an active packet capture
Stop an active packet capture
No parameter schema in public metadata yet.
check_packet_capture_statusCheck capture status and packet count
Check capture status and packet count
No parameter schema in public metadata yet.
get_captured_packet_overviewGet summary of captured packets
Get summary of captured packets
No parameter schema in public metadata yet.
get_packet_capture_dataDownload full PCAP file (base64-encoded for Wireshark/tcpdump)
Download full PCAP file (base64-encoded for Wireshark/tcpdump)
No parameter schema in public metadata yet.
get_cml_usersList all CML users
List all CML users
No parameter schema in public metadata yet.
create_cml_userCreate a new user (requires admin)
Create a new user (requires admin)
No parameter schema in public metadata yet.
delete_cml_userDelete a user (requires admin, prompts for confirmation if client supports it)
Delete a user (requires admin, prompts for confirmation if client supports it)
No parameter schema in public metadata yet.
get_cml_groupsList all CML groups
List all CML groups
No parameter schema in public metadata yet.
create_cml_groupCreate a new group (requires admin)
Create a new group (requires admin)
No parameter schema in public metadata yet.
delete_cml_groupDelete a group (requires admin, prompts for confirmation if client supports it)
Delete a group (requires admin, prompts for confirmation if client supports it)
No parameter schema in public metadata yet.
get_cml_informationGet CML server version and configuration
Get CML server version and configuration
No parameter schema in public metadata yet.
get_cml_statusGet system health indicators
Get system health indicators
No parameter schema in public metadata yet.
get_cml_statisticsGet resource usage and lab/node/link counts
Get resource usage and lab/node/link counts
No parameter schema in public metadata yet.
get_cml_licensing_detailsGet licensing information and limits
Get licensing information and limits
No parameter schema in public metadata yet.
Sponsors
Configuration
CML_URL*URL for the CML Server
CML_USERNAME*Username for CML authentication
CML_PASSWORD*secretPassword for CML authentication
PYATS_USERNAMEUsername for authentication to devices running in CML
PYATS_PASSWORDsecretPassword for authentication to devices running in CML
PYATS_AUTH_PASSsecretEnable password for authentication to devices running in CML
Readme
Model Context Protocol (MCP) Server for Cisco Modeling Labs (CML)
mcp-name: io.github.xorrkaz/cml-mcp
Overview
cml-mcp brings the power of AI assistants to your network lab! This tool allows you to interact with Cisco Modeling Labs (CML) using natural language through AI applications like Claude Desktop, Claude Code, and Cursor.
Instead of clicking through menus or writing scripts, simply tell the AI what you want to do in plain English—like "Create a new lab with two routers and configure OSPF" or "Show me the running config on Router1"—and watch it happen automatically.
This is accomplished through the Model Context Protocol (MCP), a standard way for AI applications to interact with external tools and services. Think of it as giving your AI assistant a direct connection to your CML server.
Details
- Repository
- github.com/xorrkaz/cml-mcp
- Package
cml-mcp- Transport
- STDIO
- Auth
- Required
- Registry
- MCP registry, active