CML MCP has 7 tools with generally reasonable naming and descriptions, but exhibits significant gaps in schema completeness, error handling guidance, and output documentation. Tool names follow verb_noun convention well (add_node, apply_configs, create_topology), descriptions are present but fall short of LLM-optimization standards (many under 100 chars), and parameter schemas are incomplete or missing critical details. The server does not document output schemas for any tool, making it difficult for LLMs to reason about downstream tool chaining. Error handling provides no recovery guidance. Average tool score: 62 across 7 tools.
Add one or more nodes to an existing CML lab.
Applies bootstrap configurations to one or more nodes in a CML lab.
Connect two nodes in a CML lab by creating a link between them.
Creates a complete lab topology with nodes, interfaces, and links in a single operation.
Find all nodes in a CML lab that have a specific tag.
Calculate available X/Y coordinates for placing a new node near an existing node, avoiding overlaps with other nodes in the lab.
Scan all nodes in a CML lab for pat: tags to determine which external ports are in use and which are available.
No output schemas documented for any tool. LLMs cannot plan downstream tool chaining or extract required IDs (node_id, lab_id) from responses. This violates pattern:tool-chain and pattern:response-shaper.
Parameter constraints missing or underspecified. No enums for node_definition values (csr1000v, iosv, nxosv, etc.), no coordinate ranges, no port ranges, no tag format rules. Violates pattern:constrained-input.
Error handling provides no recovery guidance. No indication of what errors are retryable (e.g., lab not found, node already connected), which are user-fixable (invalid node_definition), or which are fatal. Violates pattern:recovery-guide and pattern:error-classification.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Two tools (connect_nodes, get_available_coordinates) have descriptions under 20 characters or fail LLM-optimization criteria. Descriptions should be 50-200 chars with explicit WHAT/WHEN/RETURN context. Violates pattern:tool-description.
Tool composition risk: create_topology and add_node_to_topology have overlapping responsibilities. LLM must reason which to call for incremental node addition. Should clarify: create_topology for full lab setup, add_node_to_topology for post-creation edits. Violates pattern:tool.
Idempotency not documented. No indication whether add_node_to_topology with duplicate labels succeeds, fails, or overwrites. Agents retry on ambiguous failures, unclear idempotency risks duplicate nodes. Violates pattern:idempotent-operation.
get_available_ports description references 'pat: tags' without explanation. LLM cannot infer CML-specific tagging convention. Documentation should explain tag format (e.g., 'nat:external_port_number') or avoid domain-specific terminology. Violates pattern:tool-description.
No pagination or result limits documented. find_nodes_by_tags could return thousands of nodes; no guidance on max results or how to iterate. Violates pattern:paginated-result.
Parameter descriptions lack format/constraint hints. E.g., lab_id accepts 'UUID or lab title' but no regex pattern or example provided. config parameters accept 'bootstrap configuration' but no dialect/length/encoding specified. Violates review:param-validation-rules.