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.
mcp-name: io.github.xorrkaz/cml-mcp
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.
The easiest way to get started is using uvx with Claude Desktop (or other MCP-compatible clients). The uvx tool automatically downloads and runs the server without manual installation steps.
Configuration: Find and edit your Claude Desktop configuration file (claude_desktop_config.json). Add the following:
{
"mcpServers": {
"Cisco Modeling Labs (MCP)": {
"type": "stdio",
"command": "uvx",
"args": [
"cml-mcp[pyats]"
],
"env": {
"CML_URL": "{CML_URL}",
"CML_USERNAME": "{CML_USERNAME}",
"CML_PASSWORD": "{CML_PASSWORD}!"
}
}
}
}
Important: Replace the placeholder values with your actual CML server details:
CML_URL: Your CML server address (e.g., https://cml.example.com or https://10.10.20.50)CML_USERNAME and CML_PASSWORD: Your CML login credentialsCML_VERIFY_SSL to "false" if using self-signed certificates (common in lab environments)[!TIP] "Command not found" for
uvx? MCP clients like Claude Desktop run in a restricted environment that does not always inherit your shell'sPATH. Ifuvxcan't be found, use its full path in the"command"field. To find it, runwhich uvxin a terminal on macOS/Linux, orwhere uvxin Command Prompt on Windows (e.g.,"/Users/alice/.local/bin/uvx"on macOS,"C:\Users\alice\.local\bin\uvx.exe"on Windows). The same applies touv,npx, or any other command used in MCP configurations.
Need more capabilities?
cml-mcp[pyats] instead of cml-mcp in the argsWhere to find your configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonThe server provides 51 MCP tools organized into the following categories:
console index selects the serial port (default 0; Docker-based nodes often use both 0 and 1)console index selects which serial port to useOnce configured, restart your MCP client (e.g., Claude Desktop) and start chatting! The AI assistant now has direct access to your CML server and can help you build and manage network labs through natural conversation.
Here are some example prompts to try:
Getting Started:
Building Labs:
Configuration & Testing:
Complete Workflow Example:
Here's a sequence of prompts that demonstrates building and testing a complete lab:
Here's a demo showing it working in Claude Desktop:

If your LLM tool supports a system prompt, or you want to provide some richer initial context, here's a good example courtesy of Hank Preston:
You are a network lab assistant specializing in supporting Cisco Modeling Labs (CML). You provide a natural language interface for many common lab activities such as:
- Creating new lab
- Adding nodes to a lab
- Creating interfaces between nodes
- Configuring nodes
- Creating annotations
You have access to tools to access the CML server.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
For development setup, testing, and code style information, see DEVELOPMENT.md.
Make sure you've installed the package with all extras if you need PyATS support:
uvx cml-mcp[pyats] # For uvx installations
If you're using a self-signed certificate on your CML server, set CML_VERIFY_SSL=false in your environment configuration.
cml-mcp[pyats]PYATS_USERNAME, PYATS_PASSWORD, and PYATS_AUTH_PASS are set correctlyFor more troubleshooting help, see INSTALLATION.md.
The MCP server portion of this project is licensed under the BSD 2-Clause "Simplified" License. However, it leverages the pydantic schema typing code from CML itself, which is covered under a proprietary Cisco license.
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