A comprehensive MCP toolkit for Cisco Modeling Labs automation, providing tools for lab management, node creation, link management, and device configuration
Server has 25 tools with complete input schemas and descriptions present for all. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool vs. alternatives. Parameter descriptions are minimal (avg ~30 chars, well below 72-char baseline). No output schemas documented. Error handling is absent, tools return raw API responses without recovery guidance. Tool names follow verb_noun convention well (initialize_client, list_labs, create_lab), but composition issues exist: console tools (open_console_session, close_console_session, send_console_command) should be unified into a single stateful session manager. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Secrets (base_url, username, password) exposed as parameters in initialize_client, should use server-side injection.
Add a node to the specified lab
Check interface status on a node
Close a console session to a node in the lab
Configure a node with the specified configuration
Create a new lab in CML
Create a router with the 'iosv' node definition
Create a switch with the 'iosvl2' node definition
Credentials exposed as tool parameters. initialize_client accepts base_url, username, password as parameters, these should be injected server-side via environment variables or vault. Agent traces log all parameters, leaking secrets into logs and prompt history.
No output schemas documented. Tools return raw API responses without specifying field names, types, or structure. LLMs cannot plan downstream calls or extract required IDs (lab_id, node_id) for chaining.
No error handling or recovery guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. Raw HTTP errors provide no actionable guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Delete a lab from CML
Get recommendations based on a troubleshooting report
Get detailed information about a specific lab
Get all nodes in a specific lab
Get a formatted summary of the lab topology
Get the current configuration of a node
Get interfaces for a specific node
Get all physical interfaces for a specific node
Initialize the CML client with authentication credentials
Create a link between two nodes in a lab
List all labs in CML
List all available node definitions in CML
Open a console session to a node in the lab
Send a command to a node console
Send multiple commands to a node console
Start the specified lab
Stop the specified lab
Wait for all nodes in a lab to reach the STARTED state
No tool annotations despite clear risk levels. delete_lab is DESTRUCTIVE but lacks destructiveHint. start_lab and stop_lab are WRITE but lack idempotentHint. Annotations enable agents to reason about side effects and retry safety.
Console session tools lack composition. open_console_session, close_console_session, send_console_command, send_multiple_commands should be unified into a single stateful session manager or wrapped with clear sequencing rules. Current design forces agents to manage session lifecycle manually.