LABSCO SUMMARY
Opinionated on purpose: it returns the fields that answer the question, not everything the model exposes.
gNMI and YANG will hand you an overwhelming amount of data, and the value here is the editorial choice about what an assistant should see. The constraints are stated up front — it is tested on Cisco XRd, log retrieval is IOS-XR only, and without an inventory file it cannot operate at all.
What it is
A network telemetry server that queries devices over gNMI using OpenConfig models and returns structured JSON. It is opinionated about which fields matter, so an agent gets a usable answer instead of the full YANG dump.
What you get
- Routing: BGP and ISIS protocol state and neighbour status
- Interfaces: status, configuration and statistics
- MPLS: labels, forwarding tables and segment routing
- VPN and VRF: L3VPN configuration and route targets
- Logs: device logs with keyword filtering — IOS-XR only
- Topology: direct neighbours over LLDP and CDP, plus network-wide adjacency analysis across every device in the inventory
- Device profile and role information, and the gNMI capabilities a device reports
- Inventory validation that checks format, IP addresses, required fields and authentication before you run anything
- Batch operation across all devices at once, with a configurable worker count
Requirements
Python 3.13+ and uv; on Windows use WSL. Devices must have gNMI enabled and support the OpenConfig models the project lists — openconfig-system, openconfig-interfaces and openconfig-network-instance, each at or above a stated version. A device inventory file is mandatory: a JSON list of devices with a name, ip_address and nos, authenticated either by username and password or by certificate and key. Point at it with --inventory or the NETWORK_INVENTORY variable. Tested on Cisco XRd.
Setup effort
Build from source — git clone https://github.com/jillesca/gNMIBuddy.git && cd gNMIBuddy
USE CASES
01
Checking whether a peering is up
Read the routing protocol state and neighbour status for the device in question.
02
Chasing an interface problem
Pull the interface status, configuration and counters together.
03
Mapping what is connected to what
Read the direct neighbours, then run the network-wide adjacency analysis across the inventory.
04
Verifying an L3VPN
Read the VRF configuration and its route targets from the device itself.
05
Finding an error in the logs
Retrieve the device logs filtered by keyword, on the platform that supports it.
06
Making sure the setup is sound
Validate the inventory file and check the device's reported gNMI capabilities before running anything else.
BEFORE YOU INSTALL
What to know first
Requires
Python 3.13 or later
INSTALLATION
Connect your client
Server setup
TERMINAL
# Clone and setup (one-time only)
git clone https://github.com/jillesca/gNMIBuddy.git && cd gNMIBuddy
# Install dependencies
uv sync --frozen --no-devMCP Clients
MCP Inspector
MCP INSPECTOR · TERMINAL
NETWORK_INVENTORY=xrd_sandbox.json npx @modelcontextprotocol/inspector /tmp/gnmibuddy-mcp-wrapper