Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CML MCP

Terms

MCP — Model Context Protocol

  • MCP is a formal way to define tools a LLM can use

CML — Cisco Modeling Labs

Abilities

  • Lab Control

    • Build
    • Wipe
    • Start
    • Stop
  • Node Control

    • Add
    • Remove
  • Link Control

    • Add
    • Remove
  • Packet Captures

CML-MCP isn’t great after the lab has been started to make modifications or tweaks, for that, use PyATS.

GitHub

git clone https://github.com/xorrkaz/cml-mcp/

Docker

I followed this guide

ariadne@orchard:~/docker/cml-mcp$ cat docker-compose.yml 
services:
  cml-mcp:
    image: xorrkaz/cml-mcp:latest
    container_name: cml-mcp
    restart: unless-stopped
    #
    # For the custom PKI to work
    #
    volumes:
      - /etc/ssl/certs:/etc/ssl/certs:ro  
    environment:
      TZ: "America/New_York"
      CML_MCP_TRANSPORT: "http"
      CML_VERIFY_SSL: "false"
      DEBUG: "false"
      PYATS_USERNAME: "claude"
      PYATS_PASSWORD: "claude-password"
      PYATS_AUTH_PASS: ""
      # Optional default target if a client omits the X-CML-URL header:
      CML_URL: "https://cml.haske.org"
      # For multi-host / per-request X-CML-URL, set one of these instead:
      # CML_ALLOWED_URLS: "https://cml.haske.org"
      # CML_URL_PATTERN: '^https://cml\.haske\.org'
    #
    # For the reverse proxy to work
    #
    labels:
      traefik.enable: "true"
      traefik.http.routers.cml-mcp.rule: Host(`cml-mcp.haske.org`)
      traefik.http.routers.cml-mcp.entrypoints: websecure
      traefik.http.routers.cml-mcp.tls.certresolver: step-ca
      traefik.http.services.cml-mcp.loadbalancer.server.port: 9000
    networks:
      - user-bridge

networks:
  user-bridge:
    external: true

References

GitHub - xorrkaz/cml-mcp: A Model Context Protocol (MCP) Server for Cisco Modeling Labs (CML)

Last Modified • Saturday, June 27, 2026. 11:45 pm UTC+00:00 • Commit: 4314778