Skip to main content
Glama
shigechika

io.github.shigechika/junos-mcp

by shigechika

daily_brief

Run a parallel morning health check across Junos devices, flagging alarms, interface flaps, log alerts, RE faults, and route changes, then return a Markdown summary.

Instructions

Run a morning health check across multiple devices in parallel.

Checks per host (Phase 1):

  • show system alarms / show chassis alarms

  • show interfaces descriptions — a physical interface is flagged [IF_DOWN] only when it has a description (Admin=up, Link=down) and its Last flapped time is within since_hours. Undescribed unused ports and chronically-down ports are suppressed (loopback / mgmt / internal logical units are also excluded).

  • show log messages | last 200 — alert patterns within since_hours

  • dual-RE redundancy — an explicit routing-engine fault is flagged [RE_FAULT] (skipped on SRX chassis clusters, whose facts misreport RE status; a failed cluster node raises chassis alarms instead)

  • route_baseline (optional) — when > 0, a device whose inet.0 destination count differs from this value is flagged [ROUTE_BASELINE]. Scope with tags (e.g. tags=["main"], route_baseline=152), since full-table routers carry far more routes than access routers.

Syslog patterns watched: BGP state change away from Established, STP port role change, OSPF neighbor down, ARP address conflict, IF_DOWN.

since_hours defaults to 18 (≈ previous 15:00 for a 09:00 morning run). Tags default to none (all routers); pass tags=["main"] to limit scope.

Output tiers:

  • CRITICAL — connection failure

  • WARNING — at least one anomaly found

  • OK — clean

Returns a Markdown summary with anomaly details for CRITICAL/WARNING hosts and a collapsed OK list.

The call stops after JUNOS_DEADLINE seconds (default 45; 0 disables) so a large fleet does not run into a client's per-call timeout: hosts that have not finished are listed under NOT CHECKED and the summary is marked partial. For a full sweep of a large fleet use daily_brief_start / daily_brief_result.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagsNo
hostnamesNo
config_pathNo
max_workersNo
since_hoursNo
route_baselineNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.15.0
    • addedInput schema / properties / route_baseline
      Added value: +{
      +  "default": 0,
      +  "title": "Route Baseline",
      +  "type": "integer"
      +}
  2. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does so thoroughly: it lists per-host checks, alarm patterns, flag suppression rules, output tiers, Markdown return format, JUNOS_DEADLINE behavior, and partial NOT CHECKED handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but front-loaded and structured with sections for purpose, checks, output tiers, and timeout behavior. Given the operational complexity, most sentences earn their place, though the length is near the upper bound.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, multi-device health-check tool with no annotations and an output schema, the description covers behavior, return format, and alternatives well. However, the 0% schema coverage means the omission of hostnames, config_path, and max_workers leaves the invocation contract incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across six parameters, so the description must compensate. It documents since_hours default (18), tags default/scoping, and route_baseline usage with tags, but omits hostnames, config_path, and max_workers, leaving clear gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States 'Run a morning health check across multiple devices in parallel', a specific verb and resource, and points to daily_brief_start/daily_brief_result for full fleet sweeps, distinguishing its synchronous scope from asynchronous siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative and condition: 'For a full sweep of a large fleet use daily_brief_start / daily_brief_result.' It also supplies defaults and scoping guidance ('Tags default to none'; pass tags=['main'] to limit scope), giving clear context for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.