MCP server for Junos device management and configuration
This Junos MCP server has 18 tools with consistent naming (verb_noun pattern) and complete input schemas for all tools. However, tool descriptions are sparse (averaging ~30-50 chars, well below the 194-char baseline), and parameter descriptions, while present, are minimal. No output schemas are documented, LLMs cannot see what structure to expect from responses. Error handling is minimal; tools lack guidance on recovery or classification (retryable vs fatal). The tool composition is reasonable (one tool per action), but critical information-chaining fields are undocumented. Risk labeling is present but not leveraged in tool annotations. Overall, this is a solid foundation that needs significant enhancement in description depth and output documentation to meet production standards.
Add IPv4 addresses to firewall filter blocking list on a Junos device
Commit configuration on a Junos device
Show configuration changes that would be committed on a Junos device
Get alarm summary from a Junos device
Get BGP session summary from a Junos device
Get running configuration from a Junos device
Get facts about a Junos device (model, serial number, OS version, etc.)
No output schemas documented. LLMs cannot infer what structure tools return, forcing them to guess at response field names and types. This breaks tool chaining and causes silent failures when downstream tools expect fields not present in the response.
Tool descriptions are sparse (30-50 chars vs 194-char baseline). They state WHAT the tool does but not WHEN to use it or any dependencies. For example, 'Get facts about a Junos device' omits context about when to call this vs get_system_info, whether it requires prior device discovery, or what fields are returned.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get firewall filter summary from a Junos device
Get interface information from a Junos device
Get OSPF session summary from a Junos device
Get routing table summary from a Junos device
Get system information from a Junos device
List all configured Junos devices
Load configuration onto a Junos device
Render a Jinja2 template with device facts and return the rendered configuration
Rollback configuration on a Junos device
Send an operational command to a Junos device
Validate configuration syntax on a Junos device
No error handling guidance. Tools lack actionable recovery messages. For example, if a device is unreachable, the tool should guide the agent: 'Device offline. Check connectivity or try a different device from list_devices().' Current implementation likely returns raw exceptions.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk labels are present in the spec (READ_ONLY, WRITE, REVERSIBLE, IRREVERSIBLE) but not exposed as MCP tool annotations. Agents cannot programmatically identify which tools are safe to retry, which require confirmation, or which are read-only without parsing descriptions.
No pagination support documented. list_devices() is a discovery tool but includes no limit, offset, or cursor parameters. If device count grows large, responses will bloat the context. Tools like send_command that return potentially large outputs (e.g. 'show route' on a large device) lack chunking or pagination guidance.
Parameter descriptions are minimal ('Name of the device from the configuration'). They do not explain format constraints, what makes a value invalid, or how to discover valid values. For example, the 'format' param in load_config and get_config shows enum values but no explanation of when to use each.