MCP server that provides network device query capabilities using PyATS and Genie parsers
Server has 9 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly short) and input schemas with type definitions. However, descriptions lack actionable context (WHEN to use, prerequisites, side effects). Parameters are minimally described. No output schemas documented. Error handling is absent, no guidance on retryability, recovery steps, or invalid input handling. Tool names follow verb_noun convention (good), but descriptions don't explain dependencies or state-modifying consequences. Composition is reasonable (single responsibility per tool), but missing pagination, result limits, and chaining IDs in responses.
Connect to a network device using PyATS testbed
Disconnect from a network device
Execute a command on a network device
Get BGP summary information
Get interface status for a device using Genie parser
Get routing table from a device
Learn a network feature using Genie (e.g., interface, bgp, ospf)
No output schemas documented. LLMs cannot predict response structure, forcing them to guess field names and types. This breaks tool chaining and wastes tokens on parsing unstructured output.
Descriptions lack actionable context. Most are 30-40 chars and omit WHEN to use, prerequisites, and side effects. E.g., 'Execute a command on a network device' doesn't explain if it's read-only, if it modifies state, or if the device must be connected first.
No error handling or recovery guidance. Tools provide no indication of retryability, user-fixable errors, or fatal conditions. An LLM cannot distinguish 'device offline' (retry) from 'invalid command' (fix input) from 'permission denied' (ask user).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
List all available Genie parsers for a device OS
Execute and parse a command using Genie parser
Missing pagination and result limits. Tools like get_routing_table and learn_feature may return large datasets (hundreds of routes, complex feature trees) without pagination, risking context window exhaustion.
State-modifying tools (connect_device, execute_command, disconnect_device) lack confirmation or dry-run support. An agent could accidentally execute destructive commands without safeguards.