xorrkaz avatar

Cisco Modeling Labs CML

xorrkaz/cml-mcp

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 tools

Public 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*secret

Password for CML authentication

PYATS_USERNAME

Username for authentication to devices running in CML

PYATS_PASSWORDsecret

Password for authentication to devices running in CML

PYATS_AUTH_PASSsecret

Enable password for authentication to devices running in CML

Readme

Model Context Protocol (MCP) Server for Cisco Modeling Labs (CML)

MCP Toplist

Ask DeepWiki

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.


View the full README on GitHub

Details

Repository
github.com/xorrkaz/cml-mcp
Package
cml-mcp
Transport
STDIO
Auth
Required
Registry
MCP registry, active