A comprehensive Model Context Protocol server for Zyxel switch CLI commands, enabling AI applications to interact with Zyxel switches for network configuration, monitoring, and management operations.
18 tools with complete schemas and descriptions, but quality is uneven. Tool names follow verb_noun convention (zyxel_connect, zyxel_show_*) which is good. Descriptions are present but generic (avg ~60 chars, well below the 194-char baseline). Parameters have types and descriptions, but lack actionable constraints, many free-form strings invite hallucinated values. No output schemas documented. Error handling is absent from tool definitions. Security concerns: credentials (username, password, enablePassword) exposed as parameters rather than server-side injected. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Composition is reasonable, tools are single-purpose, but descriptions don't explain WHEN to use each tool or dependencies between them.
Clear MAC address table entries
Configure interface settings
Configure switchport settings for an interface
Connect to a Zyxel switch using Telnet or SSH
Get the current connection status
Create a new VLAN
Disconnect from the Zyxel switch
Credentials exposed as tool parameters (username, password, enablePassword in zyxel_connect). Credentials must never appear in parameters, use server-side secret injection via environment variables or vault. Agent traces log every parameter; secrets leak into logs and prompt history.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required data without knowing what fields to expect. Document return types for all 18 tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Tools marked WRITE (zyxel_connect, zyxel_save_config, zyxel_configure_interface, zyxel_create_vlan, zyxel_configure_switchport, zyxel_clear_mac_table) should declare destructiveHint=true. READ_ONLY tools should declare readOnlyHint=true.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Ping a remote host from the switch
Save running configuration to startup configuration
Display ARP table
Display interface status and configuration
Display MAC address table
Display the current running configuration
Display Spanning Tree Protocol information
Display the startup configuration
Display comprehensive system information
Display system version information
Display VLAN information
Descriptions are generic and lack actionable context. Average ~60 chars vs 194-char baseline. Descriptions do not explain WHEN to use each tool, dependencies, or what the LLM should expect. E.g., 'Display interface status and configuration' does not explain when to call zyxel_show_interfaces vs zyxel_configure_interface.
Free-form string parameters lack enums and constraints. 'interface' parameter (zyxel_show_interfaces, zyxel_configure_interface, zyxel_configure_switchport) accepts arbitrary strings like 'ethernet 1/1' with no validation. LLMs will hallucinate invalid interface names. Add enum constraints or regex patterns.