io.github.AIops-tools/network-aiops
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NETWORK_AIOPS_HOME | No | Directory for audit logs and other data. Defaults to ~/.network-aiops/. | ~/.network-aiops/ |
| NETWORK_AIOPS_CONFIG | No | Path to configuration file for network-aiops. Defaults to ~/.network-aiops/config.yaml. | ~/.network-aiops/config.yaml |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| config_backupA | [READ] Return the device running config, credential values masked by default. Password/secret hashes, SNMP communities, SNMPv3 auth+priv keys, IKE pre-shared keys and RADIUS/TACACS/keychain keys are replaced with ""; every other line comes back untouched, so interface, routing and policy config reads exactly as the device wrote it. The result always carries a "redaction" block saying how many lines were changed. Redaction is pattern-based across five vendor syntaxes, so it REDUCES exposure rather than guaranteeing none remains — in particular it cannot see multi-line PKI key blocks. Prefer the CLI's '-o ' flag over include_secrets when a human needs the real config: it writes the raw text to a file instead of into this transcript. Args: include_secrets: True to return the verbatim config, credentials and all. Every secret in it then lives wherever this result is stored. target: Device name from config; omit to use the default device. |
| config_diffA | [READ] DRY-RUN: stage a candidate, return the diff, then discard it. Nothing is committed. This is the dry-run primitive for previewing a change. The diff is credential-redacted like config_backup, and for the same reason: a diff that ADDS 'snmp-server community X' contains X, and one that removes a line quotes the credential the device already had. The result carries a "redaction" block with the count. Args: config_text: The configuration snippet (merge) or full config (replace). replace: True to diff as a full-config replacement; False (default) to merge. include_secrets: True to return the verbatim diff — use when verifying that the literal key you are pushing is the one that will land. target: Device name from config. |
| config_mergeA | [WRITE] Merge a config snippet and commit under a device-side revert timer. The device REVERTS the change by itself after Returns dry_run=True stages the candidate, returns the diff, discards it, and runs the SAME refusal the real commit would — so a green preview is never followed by a refusal. Args: config_text: The configuration snippet to merge. revert_in: Device-side revert timer in seconds (default 300). 0 disables it, leaving the recorded undo as the only rollback path. dry_run: If True, preview the diff + safety assessment without committing. target: Device name from config. |
| config_replaceA | [WRITE] Replace the full config and commit under a revert timer. HIGH RISK. Same commit-confirm contract as config_merge: the device reverts after
Returns dry_run=True previews the diff and runs the same refusal the real commit would, so the preview can never disagree with the commit. Args: config_text: The full replacement configuration. revert_in: Device-side revert timer in seconds (default 300). 0 disables it, leaving the recorded undo as the only rollback path. dry_run: If True, preview the diff + safety assessment without committing. target: Device name from config. |
| confirm_commitA | [WRITE] Confirm a pending commit-confirm change, cancelling its revert timer. The second half of the commit-confirm workflow. Run it only AFTER verifying the device is still reachable and healthy — doing nothing is the safe alternative, because the device then reverts on its own. dry_run=True reads whether a commit-confirm is actually pending (nothing is confirmed; the revert timer keeps running). Args: dry_run: If True, report whether a pending commit exists without confirming. target: Device name from config. |
| config_rollbackA | [WRITE] Revert the last committed change via NAPALM rollback(). No undo. Device support varies (rollback depth is platform-dependent). dry_run=True cannot predict the resulting config without the device, so it opens a session (verifying reachability) and reports a digest of the current running config — the state rollback would replace — without rolling back. Args: dry_run: If True, verify reachability and state what rollback would attempt. target: Device name from config. |
| interface_health_rcaA | [READ] Flag admin-up/oper-down, erroring, discarding, or flapping interfaces. Pulls get_interfaces + get_interfaces_counters and reports worst-first findings — each citing the measured number (error/discard count, last-flap seconds) that tripped it, with a cause and a concrete action. Args: target: Device name from config; omit to use the default device. |
| bgp_neighbor_rcaA | [READ] Flag BGP neighbors that are down, shut, recently reset, or route-less. Pulls get_bgp_neighbors and reports worst-first findings, each citing the session state (is_up / is_enabled) or uptime, with a cause and an action (check peer reachability / ACL / MD5 auth). Args: target: Device name from config; omit to use the default device. |
| get_environmentA | [READ] Hardware environment: fans, temperature, power, CPU, memory. Args: target: Device name from config; omit to use the default device. |
| get_opticsA | [READ] Optical transceiver levels per interface/channel (rx/tx power, bias). Args: target: Device name from config. |
| get_ntp_serversC | [READ] Configured NTP servers. Args: target: Device name from config. |
| get_ntp_statsC | [READ] NTP peer synchronization stats (stratum, offset, jitter, reachability). Args: target: Device name from config. |
| get_usersA | [READ] Local users and privilege levels. Password hashes are NOT returned. Args: target: Device name from config. |
| get_snmp_informationA | [READ] SNMP metadata: chassis id, contact, location. Community strings redacted. Args: target: Device name from config. |
| get_network_instancesA | [READ] Network instances (VRFs): name, type, state, member interfaces. Args: target: Device name from config. |
| device_factsA | [READ] Core device facts: hostname, vendor, model, OS version, serial, uptime. Also returns the interface name list. Use get_interfaces for per-interface state/speed. Args: target: Device name from config; omit to use the default device. |
| get_interfacesB | [READ] Interfaces with up/down state, enabled flag, speed, and description. Args: target: Device name from config. |
| get_interfaces_ipB | [READ] Per-interface IPv4/IPv6 addresses and prefix lengths. Args: target: Device name from config. |
| get_bgp_neighborsA | [READ] BGP neighbors per VRF: peer, remote AS, up state, prefix counts. Args: target: Device name from config. |
| get_lldp_neighborsB | [READ] LLDP neighbors: local port, remote hostname, remote port. Args: target: Device name from config. |
| get_arp_tableA | [READ] ARP table entries: interface, IP, MAC, age. Args: target: Device name from config. |
| device_healthA | [READ] Aggregated health: facts + interface up/down counts + environment. Resilient to drivers lacking get_environment (that section becomes a note). Returns a 'healthy' flag and an 'issues' list summarising attention points. Args: target: Device name from config; omit to use the default device. |
| get_interfaces_countersB | [READ] Per-interface traffic + error counters (octets, packets, errors, discards). Args: target: Device name from config. |
| get_mac_address_tableA | [READ] MAC address table: MAC, interface, VLAN, static/active flags. Args: target: Device name from config. |
| get_vlansB | [READ] VLANs: id, name, and member interfaces (driver support varies). Args: target: Device name from config. |
| get_route_toA | [READ] Routing-table lookup for a destination prefix (optionally by protocol). Args: destination: The destination prefix to look up (e.g. 10.0.0.0/24). protocol: Optional protocol filter (e.g. bgp, ospf, static). target: Device name from config. |
| get_bgp_neighbors_detailB | [READ] Detailed BGP neighbors per VRF: state, router id, AS, prefix stats. Args: target: Device name from config; omit to use the default device. |
| get_lldp_neighbors_detailB | [READ] Detailed LLDP neighbors: chassis id, system name/description, capabilities. Args: target: Device name from config. |
| netbox_list_devicesA | [READ] List NetBox devices (name, role, site, status, primary IP). Requires a configured NetBox block. Use this to confirm intended state before pushing config to a device. Returns Args: name: Optional name filter (contains match). limit: Maximum devices to return (default 50). |
| netbox_get_deviceA | [READ] Return a single NetBox device by exact name. Args: name: Exact NetBox device name (see netbox_list_devices). |
| netbox_device_interfacesA | [READ] List a NetBox device's interfaces (name, type, enabled, description). The intended interface inventory from source-of-truth — compare against live device state (get_interfaces) to spot drift. Returns Args: device: Exact NetBox device name (see netbox_list_devices). limit: Maximum interfaces to return (default 100). |
| undo_listA | [READ] List recorded, not-yet-applied undo tokens (most recent first). Each entry names the original tool, the inverse tool that Returns {"undos": [...], "returned": N, "limit": L, "truncated": bool}.
Each entry carries Args: limit: Max rows to return (default 50, capped at 500). target: Unused (undo state is host-local); accepted for CLI uniformity. |
| undo_applyA | [WRITE][risk=medium] Apply a recorded undo by dispatching its inverse tool. The inverse runs through its own governed tool, so its real risk tier is recorded in that tool's audit row. Pass dry_run=True to preview the inverse call without executing it. A token can only be applied once. Args:
undo_id: The undoId from undo_list (or an |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AIops-tools/Network-AIops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server