Skip to content

Releases: xorrkaz/cml-mcp

0.26.0

06 Apr 13:10

Choose a tag to compare

HTTP Mode: Session Caching

Authenticated CML sessions are now cached and reused across requests in HTTP mode, eliminating a login round-trip on every tool call. The cache uses an idle TTL (default: 3600 s, configurable via CML_SESSION_TTL) — the timer resets on each request, so active sessions stay alive. Sessions are closed automatically on expiry or authentication failure.

Improved HTTP Middleware Logging

Auth and header validation failures in HTTP mode now emit targeted WARNING log entries server-side, making it easier to diagnose client mis-configurations.

Elicitation: Client Capability Check

Destructive tools (wipe_*, delete_*) now check whether the connected client advertises MCP elicitation support before attempting a confirmation prompt. Clients that don't support elicitation proceed directly without hanging.

0.25.1

29 Mar 15:24

Choose a tag to compare

Properly fix the case where PYATS_AUTH_PASS is the empty string, thus preventing pyATS from using the user password correctly (@tmikuska )

0.25.0

29 Mar 13:49

Choose a tag to compare

v0.25.0

What's New

  • CML 2.9 and 2.10 compatibility — Cross-version schema improvements ensure the server works correctly with both CML 2.9 and 2.10. Fields introduced in 2.10 (autostart, node staging, health metrics) are now optional and default gracefully when talking to a 2.9 server. (@tmikuska )
  • FastMCP 3.x — Updated to FastMCP 3.x (>=3.1.1).
  • Python 3.12–3.13 only — Python 3.14+ is not supported by pyATS. The package now declares this constraint explicitly.

Fixes

  • Fixed incorrect node operational data handling in CML 2.10 that caused missing data in get_nodes_for_cml_lab results.
  • Fixed PYATS_AUTH_PASS fallback — when unset, the enable password now correctly falls back to PYATS_PASSWORD instead of silently failing authentication.
  • Improved tool docstrings to reduce LLM confusion around object vs. string arguments and node label vs. UUID.

Developer

  • Added just check task runner target (runs black, isort, and flake8).
  • Added AGENTS.md with project conventions to guide AI coding assistants.

0.24.0

31 Jan 15:31

Choose a tag to compare

New Features

  • Download Lab Topology: New tool to download lab topology by UUID, returning the topology as a YAML string
  • Clone CML Lab: New tool to clone an existing lab by UUID with optional custom title (defaults to "Copy of {original title}")

Improvements

  • Refined deletion confirmation prompts to be more explicit and user-friendly
  • Refactored lab creation logic for better code reuse between import and clone operations

Dependencies

  • Pinned FastMCP to version < 3.0.0 for stability
  • Updated various dependencies to latest compatible versions

Testing

  • Added comprehensive test coverage for new download_lab_topology and clone_cml_lab tools

New Contributors

Full Changelog: v0.23.0...v0.24.0

0.23.0

16 Jan 16:45

Choose a tag to compare

Release Notes - CML MCP v0.23.0

Overview

Version 0.23.0 represents a major architectural update to the CML MCP server, introducing significant improvements to concurrency handling, HTTP transport support, and code organization. This release skips version 0.22.0 due to the extensive nature of the changes.

Major Features

Architecture & Concurrency

  • Async Safety & HTTP Transport Support: Implemented comprehensive async safety improvements to eliminate race conditions in concurrent HTTP request handling
    • Request-scoped state management using contextvars for HTTP transport
    • Transport-aware client initialization with per-request clients and proper lifecycle management
    • Thread-isolated PyATS operations to prevent event loop blocking
    • Fixed race conditions in PyATS credentials, os.chdir(), and concurrent HTTP requests

Code Organization

  • Major Refactoring: Modularized the codebase as the number of tools grew beyond 40
    • Organized tools into logical modules: labs, nodes, links, pcap, annotations, CLI, interfaces, system, users/groups
    • Improved maintainability and code readability
    • Enhanced dependency injection with get_cml_client_dep() function

Access Control

  • ACL Support: Added Access Control List functionality to control tool availability per user (HTTP mode only)
    • YAML-based ACL configuration file support
    • Fine-grained control over which users can access which tools
    • Sample ACL configuration file included (acl.yaml.example)

Packet Capture

  • PCAP Support: New tools for network traffic analysis
    • Start and stop packet captures on network links
    • Retrieve PCAP files for analysis with Wireshark or other tools
    • Check packet capture status and get captured packet overview
    • Comprehensive test coverage for packet capture functionality

Improvements

Docker

  • Multi-stage Build: Implemented multi-stage Docker build process
    • Reduces image size by ~40 MB
    • Improved build efficiency and security
    • Eliminated unnecessary echoing during startup that could cause errors in Claude Desktop

Dependencies

  • Updated all dependencies to latest compatible versions
  • Synced local type definitions to match CML server schemas
  • Updated copyright notices to 2026

Documentation

  • Updated all documentation for new tools and modular structure
  • Improved readability for both new and experienced users
  • Enhanced installation and development guides

Breaking Changes

  • HTTP mode no longer uses stateless operations internally, allowing for better session management and elicitation support

Bug Fixes

  • Fixed grammar issues in documentation
  • Resolved semaphore leaks by reverting to single worker (async handles concurrency)
  • Fixed virl2_client initialization to work in both stdio and HTTP transport modes
  • Corrected handling of stream closure errors in elicitation calls

Contributors

Special thanks to:

  • @tmikuska for copyright updates and model cleanups
  • All contributors who tested and provided feedback on the HTTP transport improvements

Migration Notes

Users upgrading from v0.21.3 should note:

  • The modular structure is backward compatible with existing tool calls
  • HTTP mode users can now implement ACL configurations for enhanced security
  • Docker users will benefit from smaller image sizes automatically
  • No configuration changes required for existing stdio mode deployments

0.21.3

11 Jan 15:47

Choose a tag to compare

  • Fix docstrings to make annotations draw more accurately
  • Ensure prompting is done for delete/wipe commands
  • Make doc links fully-qualified

0.21.2

10 Jan 21:01

Choose a tag to compare

What's Changed

  • Lock the python version to >=3.12,<4 by @tmikuska in #10
  • Remove unused modules by @tmikuska in #11
  • Update tests for new annotation tool
  • Fix fetching annotations
  • Split docs to make them more readable
  • Slightly improve login performance for HTTP transport

New Contributors

Full Changelog: v0.21.0...v0.21.2

0.21.0

08 Jan 19:34

Choose a tag to compare

  • Sync with the latest CML data models
  • Add a tool to fetch annotations from a lab
  • Update dependencies
  • Optimize docstrings for LLM consumption

0.20.2

31 Dec 15:01

Choose a tag to compare

This is mostly a housekeeping release with some improved docs and updated dependencies. Thanks to @bvandewe for some of the improvements.

0.20.1

23 Dec 21:21

Choose a tag to compare

Disable the MCP server icon as this seems to break Cursor. While here, update dependencies.