Netmiko-mcp has well-structured tool definitions with clear naming (verb_noun pattern) and comprehensive descriptions. All 7 tools have input schemas with type definitions and parameter descriptions. However, output schemas are not formally documented, responses are described in prose but lack structured JSON Schema definitions. Error handling is minimal; tools return JSON error objects but lack recovery guidance. The ping tool is deprecated in MCP 2026-07-28 spec and should be removed. Parameter descriptions are generally good (60-150 chars) but some lack constraint details (e.g., no mention of valid device names or command formats). Overall solid foundation but missing output schema documentation and error recovery patterns.
List saved output files for a device, group, or all devices. Args: device_or_group: A device name, group name, or 'all'. Returns: A dict mapping each device name to a list of saved filenames (newest first). Devices with no saved output are included with an empty list.
List devices from the Netmiko inventory. You can query by 'all' (default), a specific 'group-name', or a 'device-name'. Returns a JSON string containing device configurations (excluding credentials).
List all device groups defined in the inventory. Returns a JSON-encoded list of group name strings.
A simple health check tool to verify the MCP server is responding.
Read a previously saved output file for a specific device, with pagination. Args: device_name: The device name whose output directory to read from. filename: The exact filename as returned by list_device_outputs. offset: Line number to start reading from (0-indexed). Defaults to 0. limit: Maximum number of lines to return per call. Defaults to 500. The response header shows the line range and total line count. If more lines remain, a continuation hint tells you which offset to use on the next call.
Output schemas not formally documented. Tool descriptions mention return types in prose (e.g., 'Returns a JSON-encoded list', 'Returns a dict mapping device name to output') but no structured JSON Schema definitions are provided. LLMs cannot reliably parse unstructured output descriptions.
Error handling lacks recovery guidance. Tools return JSON error objects (e.g., {"error": str(e)}) but do not guide the LLM on next steps. No distinction between retryable, user-fixable, and fatal errors.
ping tool is deprecated in MCP spec 2026-07-28 and should be removed. The spec no longer includes ping as a standard capability.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Connect to a network device and execute a show command. Args: device_name: The exact name of the device from the inventory. command: The CLI command to execute (e.g. 'show ip int brief'). use_textfsm: Set to True to attempt parsing the output into structured JSON data using ntc-templates. save_output: If True, always save output to disk and return the filename instead of the raw output. Useful when you intend to refer back to the output multiple times without re-running the command. If save_output is False and the output exceeds the configured save_threshold (default 1000 lines) it is automatically saved to disk and a short notification is returned instead. Use list_device_outputs and read_device_output to retrieve the saved content.
Connect to a group of devices concurrently and execute a show command on each. Args: device_or_group: A device group name or device name from the inventory. command: The CLI command to execute on all devices (e.g. 'show version'). use_textfsm: If True, attempt to return parsed structured JSON data. save_output: If True, save per-device output to files and return file paths instead of raw output. Returns: A dict mapping each device name to its output (or saved file path).
Parameter constraints not fully specified. 'device_name' and 'command' parameters lack format/pattern constraints. No mention of valid device name format, command syntax rules, or length limits. LLMs may pass invalid values.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) not present. All tools are read-only but this is not formally declared in the schema, missing an opportunity for client-side optimization.