MCP Server for Nokia SR Linux fabric analysis via fcli/nornir-srl. Provides tools to query operational state of SR Linux devices in a containerlab or production fabric.
6 tools with basic verb-noun naming (list_, load_, show_, run_). Descriptions present but generic (avg 80 chars, below 194 baseline). Input schemas visible with types and descriptions, but output schemas completely undocumented. No error handling guidance, no parameter constraints (enums), no pagination support despite list_topologies and run_report returning potentially large results. Parameters lack format/range constraints. No tool annotations (readOnlyHint/destructiveHint). Missing idempotency guidance for load_topology/load_config which modify state.
List all available reports that can be run.
List available containerlab topology files and nornir configs in a directory.
Initialize or switch the active fabric from a nornir config file.
Initialize or switch the active fabric from a containerlab topology file.
Run a named report from the registry and return what it found as JSON.
Show the current fabric topology: nodes, their labels, and connections.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., node IDs from show_topology, report names from list_reports). Violates pattern:tool requirement.
load_topology and load_config modify state (initialize fabric) but descriptions do not explicitly state this. Agents cannot determine if calls are safe to retry or have irreversible consequences. Violates pattern:command-tool.
No pagination support (limit, offset, page_size, next_cursor) on list_topologies and list_reports despite returning potentially large result sets. Large results blow context window. Violates pattern:paginated-result.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
inv_filter and field_filter parameters accept free-form comma-separated strings with no validation, format constraints, or examples in descriptions. LLMs cannot infer valid syntax (e.g., 'role=leaf' vs 'role: leaf'). Should use enums or structured input.
No error handling guidance. Errors from _query() and _run_report() are not caught or wrapped with recovery hints. LLMs receive raw exceptions with no actionable next steps. Violates pattern:recovery-guide.