Skip to main content
Glama

NVIDIA Cumulus MCP Server

MCP server that integrates with the Cumulus Linux OS. This application was implemented using FastMCP and NVIDIA's NVUE API.

NOTE

This application was developed forCumulus VX (Virtual Experience) 5.4.0. It has not been tested on actual hardware or the latest version since the simulator has since migrated to the NVIDIA AIR cloud sandbox.

flowchart LR
    user["User / MCP client"]
    server["nvidia-cumulus-nvue<br/>FastMCP server"]
    tools["Read-only MCP tools<br/>platform, system, interfaces, VRFs, BGP"]
    client["NVUEClient<br/>HTTP GET + basic auth"]
    cumulus["Cumulus VX or switch<br/>NVUE API /nvue_v1"]

    user -- "MCP over stdio" --> server
    server --> tools
    tools --> client
    client -- "HTTPS GET :8765" --> cumulus
    cumulus -- "JSON response" --> client
    client --> tools
    tools --> server
    server -- "tool result" --> user

Quick Start

Configuring a simulator (optional)

You can find a copy of Cumulus VX by downloading the qcow2 file from GNS3. Run the simulator and be sure to forward ports for SSH and the NVUE API

qemu-system-x86_64 \
  -enable-kvm \
  -m 2048M \
  -smp 2 \
  -hda cumulus-linux-5.4.0-vx-amd64-qemu.qcow2 \
  -netdev user,id=mgmt,hostfwd=tcp:0.0.0.0:2222-:22,hostfwd=tcp:0.0.0.0:8765-:8765 \
  -device virtio-net-pci,netdev=mgmt \
  -nographic

By default the OS will have services like ssh and nginx enabled. In order to get the NVUE API connection to work, you need to modify your nginx config:

sudo ln -s /etc/nginx/sites-{available,enabled}/nvue.conf
sudo sed -i 's/listen localhost:8765 ssl;/listen 0.0.0.0:8765 ssl;/g' /etc/nginx/sites-available/nvue.conf
sudo systemctl restart nginx

You can confirm that this API is reachable from your host machine by doing

curl -u '<username>:<password>' -k https://localhost:8765/nvue_v1/interface

Configuring the target machine

Once you have a simulator or an actual switch to use you can run the MCP by doing:

uv sync
export CUMULUS_HOST=127.0.0.1
export CUMULUS_PORT=8765
export CUMULUS_USERNAME=cumulus
export CUMULUS_PASSWORD=cumulus100
export CUMULUS_VERIFY_TLS=false
uv run nvidia-cumulus-mcp

Alternatively, you can add the MCP config:

{
  "mcpServers": {
    "nvidia-cumulus-nvue": {
      "command": "uv",
      "args": ["run", "nvidia-cumulus-mcp"],
      "env": {
        "CUMULUS_HOST": "127.0.0.1",
        "CUMULUS_PORT": "8765",
        "CUMULUS_USERNAME": "cumulus",
        "CUMULUS_PASSWORD": "cumulus100",
        "CUMULUS_VERIFY_TLS": "false"
      }
    }
  }
}

Related MCP server: gNMIBuddy

Configuration

Variable

Default

Description

CUMULUS_HOST

127.0.0.1

Cumulus VX or switch hostname/IP

CUMULUS_PORT

8765

NVUE API HTTPS port

CUMULUS_USERNAME

cumulus

NVUE basic-auth username

CUMULUS_PASSWORD

required

NVUE basic-auth password

CUMULUS_VERIFY_TLS

false

Enable TLS certificate validation

CUMULUS_CA_BUNDLE

unset

Optional CA bundle path for TLS validation

CUMULUS_TIMEOUT

10

HTTP timeout in seconds

Tools

All tools are read-only and return:

{
  "endpoint": "/nvue/path",
  "data": {}
}

Available tools:

  • nvue_get(path, include=None, omit=None, rev=None)

  • get_platform()

  • get_system()

  • get_system_resources()

  • list_interfaces()

  • get_interface(interface)

  • get_interface_counters(interface)

  • list_bridges()

  • get_bridge(domain="br_default")

  • get_mac_table(domain="br_default")

  • list_vrfs()

  • get_vrf(vrf="default")

  • get_routes(vrf="default", afi=None)

  • get_ip_neighbors(interface, family="all")

  • get_lldp_neighbors(interface)

  • get_bgp_global()

  • get_bgp_vrf(vrf="default")

  • get_bgp_neighbors(vrf="default")

Development

uv sync
.venv/bin/pytest
.venv/bin/ruff check .
.venv/bin/mypy

Live integration tests are opt-in and only issue NVUE GET requests:

RUN_CUMULUS_INTEGRATION=1 \
CUMULUS_HOST=127.0.0.1 \
CUMULUS_USERNAME=cumulus \
CUMULUS_PASSWORD=cumulus100 \
.venv/bin/pytest tests/test_integration_live.py

References

Available Tools

18 tools
get_bgp_globalA
Read-onlyIdempotent

Get global BGP information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds no additional behavioral context beyond stating it's a 'get' operation.

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

Conciseness5/5

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

Single sentence, no wasted words. Every part is essential.

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?

Output schema exists, so return values are covered. Description is minimal but sufficient for a simple read-only tool with no parameters.

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

Parameters4/5

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

No parameters, so baseline 4 applies. The description need not add param info as there are none.

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?

The description 'Get global BGP information' uses a specific verb and resource, and distinguishes from siblings like get_bgp_neighbors or get_bgp_vrf by specifying 'global'.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this vs. alternatives, but the name and context imply it's for global BGP info, making usage fairly clear.

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

get_bgp_neighborsB
Read-onlyIdempotent

Get BGP neighbors for one VRF.

ParametersJSON Schema
NameRequiredDescriptionDefault
vrfNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations provide readOnlyHint, openWorldHint, and idempotentHint, which cover safety and idempotency. The description adds no further behavioral traits (e.g., auth needs, response shape), but the annotations suffice for basic transparency. However, it does not explain what the tool returns or any side effects beyond the annotations.

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 a single, front-loaded sentence with no redundancy. It is concise, though it could be slightly more informative without being verbose.

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

Completeness3/5

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

Given the single parameter, good annotations, and presence of an output schema, the description is minimally adequate. However, it lacks context about what 'BGP neighbors' entails (e.g., state, addresses), which could be helpful for an agent unfamiliar with the domain.

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

Parameters2/5

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

Schema description coverage is 0%. The description mentions 'one VRF' but does not elaborate on the 'vrf' parameter's meaning, valid values, or its optional default. This is insufficient compensation for the lack of schema descriptions.

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

Purpose4/5

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

The description 'Get BGP neighbors for one VRF' clearly states the action (get) and the resource (BGP neighbors for a VRF). It effectively distinguishes from sibling tools like get_bgp_global and get_bgp_vrf, which target different aspects.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as get_bgp_global or get_bgp_vrf. There is no mention of prerequisites, context, or exclusions, leaving the agent without decision support.

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

get_bgp_vrfC
Read-onlyIdempotent

Get BGP information for one VRF.

ParametersJSON Schema
NameRequiredDescriptionDefault
vrfNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations (readOnlyHint, openWorldHint, idempotentHint) already cover safety and idempotency. The description adds no behavioral context beyond stating it's a 'get' operation, which duplicates annotations.

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

Conciseness3/5

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

The description is a single concise sentence, front-loaded with key information. However, it is under-specified and could benefit from more detail without losing conciseness.

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

Completeness2/5

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

Despite having an output schema, the description is too brief. It does not explain what 'BGP information' includes, limiting the agent's understanding of the tool's output.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not compensate. The parameter 'vrf' is mentioned only by name, with no format, allowed values, or additional meaning beyond the schema.

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?

The description 'Get BGP information for one VRF' clearly states the action and resource, and distinguishes from siblings like get_bgp_global and get_bgp_neighbors by specifying 'for one VRF'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_bgp_global, get_bgp_neighbors). The description implies usage for a specific VRF but lacks context or exclusions.

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

get_bridgeB
Read-onlyIdempotent

Get one bridge domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNobr_default

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations (readOnlyHint, openWorldHint, idempotentHint) already indicate safety and idempotence. Description adds no additional behavioral context about error handling or results, but with rich annotations the burden is lower.

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?

Extremely concise at 4 words, no waste. However, it is borderline under-specified; slightly more detail would be beneficial without harming conciseness.

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

Completeness3/5

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

Tool is simple with one optional parameter and output schema likely present. Description is adequate but lacks usage context and parameter explanation. Complete enough for a straightforward getter.

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

Parameters2/5

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

Schema has 0% description coverage. Description does not explain the 'domain' parameter, its default, or valid values. No added meaning beyond schema.

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?

The description 'Get one bridge domain' clearly states the action (get) and resource (bridge domain) and distinguishes from sibling list_bridges by specifying 'one'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like list_bridges or other getters. Does not mention prerequisites or when not to use.

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

get_interfaceC
Read-onlyIdempotent

Get one interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
interfaceYesInterface name, such as swp1, eth0, bond1, or vlan100.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint. The description adds no further behavioral context. No mention of the fact that an interface name is required or that it returns a single interface object.

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

Conciseness3/5

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

Extremely concise at three words, but this brevity sacrifices meaningful content. Every word earns its place, but the trade-off is insufficient information.

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

Completeness2/5

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

Despite having an output schema (not shown), the description is too minimal to convey what the tool returns. For a simple tool with one parameter, a bit more detail could improve completeness.

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?

Input schema covers 100% with a clear description for the 'interface' parameter. The tool description adds no additional meaning beyond the schema.

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

Purpose3/5

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

The description 'Get one interface' uses a verb and a resource, but is vague on what exactly is returned (configuration, status, etc.). It distinguishes from list_interfaces (plural) but doesn't clarify differentiation from sibling tools like get_bridge.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as nvue_get or list_interfaces. No context on prerequisites or scenarios where this is preferred.

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

get_interface_countersA
Read-onlyIdempotent

Get link counters for one interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
interfaceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds the scope 'for one interface', which clarifies the tool's limitation but does not disclose any additional behavioral traits beyond what the annotations provide.

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

Conciseness5/5

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

The description is a single sentence with no unnecessary words, front-loading the key information immediately. Every word is essential.

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?

Given the tool's low complexity (one parameter), the existence of an output schema, and comprehensive annotations, the description is largely sufficient. However, it could mention what specific counters are returned, though the output schema likely covers that.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate, but it only states 'for one interface', redundantly mirroring the parameter name. It adds no further details on valid format, constraints, or default values.

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?

The description clearly specifies the verb 'Get' and the resource 'link counters for one interface', directly stating the tool's function. It distinguishes itself from sibling tools like 'get_interface' (which likely retrieves broader interface details) by focusing specifically on counters.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus siblings, such as when to use 'get_interface' instead or any prerequisites. It only states what it does without context for selection.

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

get_ip_neighborsC
Read-onlyIdempotent

Get IP neighbors for one interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
familyNoall
interfaceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already provide readOnlyHint, openWorldHint, and idempotentHint. The description adds no additional behavioral context beyond the name, such as explanation of returned data, potential side effects, or performance implications.

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

Conciseness3/5

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

Description is very short (one sentence), which is concise but front-loads the core purpose. However, it lacks critical information like parameter semantics and usage guidelines, making it under-specified rather than efficiently concise.

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

Completeness2/5

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

Despite having an output schema and annotations, the description does not explain the concept of IP neighbors, how family filtering works, or any implicit constraints. This is insufficient for an AI agent to fully understand the tool's behavior.

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

Parameters2/5

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

Schema description coverage is 0% and the tool description does not mention parameters. The agent must infer meaning from parameter names and enum values alone. The description adds no value to parameter understanding beyond the schema.

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

Purpose4/5

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

Description clearly states verb 'Get' and resource 'IP neighbors for one interface', specifying it's for a single interface. However, it does not explain what IP neighbors are (ARP/NDP table) or explicitly differentiate from siblings like get_lldp_neighbors, but the name itself provides distinct context.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_lldp_neighbors or get_routes. The description is purely declarative with no 'when to use' or 'when not to use' information.

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

get_lldp_neighborsC
Read-onlyIdempotent

Get LLDP neighbors for one interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
interfaceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, but the description adds no additional behavioral context. It does not mention whether neighbors might be empty, or that results depend on LLDP configuration.

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

Conciseness3/5

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

The description is very short (6 words) and front-loaded, but it sacrifices necessary detail. It is concise but not sufficiently informative.

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

Completeness3/5

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

Given the existence of an output schema and annotations, the description is minimally complete. However, it could provide more high-level context about the return structure (e.g., list of neighbors with device and port details) to aid the agent.

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

Parameters2/5

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

The description only says 'for one interface,' implying the parameter is a device interface name, but it does not specify format or constraints. With 0% schema description coverage, the description fails to compensate adequately.

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?

The description clearly states the verb 'Get' and the resource 'LLDP neighbors' with a specific scope 'for one interface', which distinguishes it from siblings like get_ip_neighbors or get_mac_table.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., get_ip_neighbors, get_interface). There is no mention of prerequisites, such as LLDP being enabled on the interface.

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

get_mac_tableB
Read-onlyIdempotent

Get the bridge domain MAC table.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNobr_default

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, covering safety and behavior. Description adds no additional behavioral context, so baseline score based on annotation coverage.

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

Conciseness3/5

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

Description is extremely concise (6 words) but lacks important details; it's efficient but under-informative.

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

Completeness2/5

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

With a single parameter and no usage guidance or parameter explanations, the description is incomplete despite the presence of an output schema.

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

Parameters2/5

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

Schema has 1 parameter ('domain') with 0% description coverage. The description does not explain the parameter's meaning or usage, relying solely on the schema.

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?

The description clearly states the verb 'Get' and the resource 'bridge domain MAC table', which is distinct from sibling tools like get_bridge and list_bridges.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_bridge or list_bridges, and no prerequisites or context provided.

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

get_platformB
Read-onlyIdempotent

Get platform hardware and software information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, indicating safe, deterministic behavior. The description adds no further behavioral context beyond stating it 'gets' information.

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

Conciseness5/5

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

The description is extremely concise, using a single sentence that directly states the tool's purpose with no unnecessary words.

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

Completeness3/5

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

Given the simplicity of the tool (no params, annotations present, output schema exists), the description is minimally adequate. However, it lacks detail on what specific platform information is retrieved, which could be expanded.

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

Parameters4/5

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

There are zero parameters, and schema coverage is 100%. The description does not need to add parameter details, so baseline of 4 is appropriate.

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

Purpose4/5

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

The description clearly states the tool retrieves platform hardware and software information. It is distinct from siblings like get_system or get_system_resources, though the overlap is not explicitly clarified.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not differentiate it from other get_* tools or explain when platform info is needed.

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

get_routesA
Read-onlyIdempotent

Get the routing table for one VRF.

ParametersJSON Schema
NameRequiredDescriptionDefault
afiNoOptional address family, either ipv4 or ipv6.
vrfNoVRF name. Defaults to default.default

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds no further behavioral details beyond scope, which is adequate given the annotation coverage.

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?

Single sentence that is concise and front-loaded. No unnecessary words, but could potentially include a brief usage note without losing conciseness.

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?

Given the tool's simplicity, two optional parameters, and presence of output schema, the description combined with schema and annotations provides sufficient information for an AI agent to use it correctly.

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 has 100% coverage with descriptions for both parameters. The description adds no additional meaning beyond what the schema already provides, fitting the baseline for high schema coverage.

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?

Clearly states 'Get the routing table for one VRF', specifying verb, resource, and scope. Distinguishes from sibling tools like get_bgp_neighbors, get_ip_neighbors, and get_vrf which serve different purposes.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies usage for routing table retrieval but does not mention when not to use it or suggest other tools for similar tasks.

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

get_systemC
Read-onlyIdempotent

Get system information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, covering safety and idempotency. The description adds no behavioral context beyond the annotation hints, failing to disclose what 'system information' includes.

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

Conciseness3/5

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

The description is concise at one sentence, but it is too vague to be truly useful. The sentence does not fully earn its place as it lacks specificity.

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

Completeness2/5

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

Given zero parameters and annotations that cover safety, the description is insufficiently complete. It does not explain what data is returned, leaving ambiguity among sibling tools.

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

Parameters4/5

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

No parameters exist, so the description does not need to add meaning. Baseline score of 4 applies per rubric for 0 parameters.

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

Purpose3/5

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

The description 'Get system information' is a clear verb+resource, but it is vague and does not distinguish from sibling tools like get_platform or get_system_resources, which may overlap.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like get_platform or get_system_resources. No context on prerequisites or typical use cases.

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

get_system_resourcesA
Read-onlyIdempotent

Get system CPU and memory information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds the specific resource (CPU and memory) but no further behavioral traits like latency or auth needs. This is adequate but not exceptional.

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

Conciseness5/5

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

The description is a single, concise sentence with zero wasted words. It is front-loaded and efficient.

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?

Given the tool has no parameters, comprehensive annotations, and an output schema, the description adequately specifies the resource. It could be slightly more descriptive about what CPU and memory details are returned, but the output schema likely covers that.

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

Parameters4/5

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

There are no parameters, so baseline is 4. The description adds no further meaning since no parameters exist. Schema coverage is 100%.

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?

The description clearly states the tool gets system CPU and memory information, using a specific verb and resource. It implicitly distinguishes from sibling tools that target other resources like BGP, interfaces, or bridges.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. Given multiple sibling tools, explicit direction is missing.

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

get_vrfC
Read-onlyIdempotent

Get one VRF.

ParametersJSON Schema
NameRequiredDescriptionDefault
vrfNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint as true. The description adds no additional behavioral context beyond the annotations.

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

Conciseness3/5

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

The description is extremely concise at three words, front-loaded. However, it sacrifices informativeness for brevity, earning a mid-range score.

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

Completeness2/5

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

Given the tool has one optional parameter and an output schema, the description is insufficient. It does not explain what a VRF is, the output structure, or how it relates to siblings.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention the 'vrf' parameter or its default value. It fails to add meaning beyond the schema.

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

Purpose3/5

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

The description 'Get one VRF.' clearly states the verb and resource, but does not distinguish from sibling tools like 'list_vrfs' or other 'get_' tools. It is adequate but lacks differentiation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., list_vrfs). The description does not specify the context or prerequisites.

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

list_bridgesA
Read-onlyIdempotent

Get all bridge domains.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the description does not need to repeat these. It adds that the tool retrieves 'all' instances, but does not disclose any additional behavioral traits (e.g., pagination, ordering).

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

Conciseness5/5

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

The description is a single sentence with no fluff. Every word earns its place, providing a clear and efficient summary.

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?

Given the zero parameters, rich annotations (readOnlyHint, etc.), and an output schema, the description is minimally adequate. It explains the tool's core function without elaboration, which suffices for this simple list-all operation.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is trivially 100%. The description adds no parameter details, which is acceptable given the absence of parameters. Baseline 4 is appropriate.

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?

The description 'Get all bridge domains' uses a specific verb ('Get') and a clear resource ('all bridge domains'), distinguishing it from sibling tool 'get_bridge' which likely retrieves a single domain. It is concise and unambiguous.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. While the name and sibling tools imply its purpose, there is no direct statement about context or exclusions.

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

list_interfacesA
Read-onlyIdempotent

Get all interfaces.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds no behavioral context beyond the name, such as output format, scope, or limitations. Minimal added value.

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

Conciseness5/5

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

Single sentence, no superfluous words. Efficient and front-loaded.

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

Completeness3/5

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

Given the existence of an output schema and the simple nature of a list tool, the description is adequate but not enriched. Meets minimum viability.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. Description does not need to add parameter details. Baseline score for zero parameters.

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?

Description 'Get all interfaces.' is a specific verb+resource combination. It clearly indicates the tool returns a list of all interfaces, differentiating it from siblings like get_interface (specific) and get_interface_counters (counters).

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

Usage Guidelines4/5

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

The description implies use when you need a list of all interfaces but does not explicitly provide when-not-to-use or alternatives. Given the sibling names, the context is clear enough.

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

list_vrfsA
Read-onlyIdempotent

Get all VRFs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety traits. The description adds no behavioral context beyond stating it lists all VRFs, missing details like ordering, pagination, or any side effects. Minimal additional value.

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 extremely concise (four words) with no wasted text. However, it could slightly improve by adding a hint about usage, making it not perfectly balanced in terms of completeness.

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

Completeness3/5

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

Given zero parameters, annotations, and an output schema, the description is minimally adequate but lacks usage guidelines and behavioral transparency. It does not fully compensate for missing context beyond purpose.

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

Parameters4/5

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

No parameters exist, satisfying the baseline score of 4. The description adds no parameter-related information, but none is needed since the input schema is empty and schema coverage is 100%.

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?

The description 'Get all VRFs' uses a specific verb 'Get' and resource 'VRFs' in plural, clearly distinguishing it from the sibling tool 'get_vrf' which targets a single VRF. The purpose is unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for retrieving all VRFs but provides no explicit when-to-use, when-not-to-use, or alternatives like 'get_vrf' for specific VRFs. Guidance is only implied by the tool name and description.

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

nvue_getA
Read-onlyIdempotent

Read any safe relative NVUE path with HTTP GET.

ParametersJSON Schema
NameRequiredDescriptionDefault
revNoOptional NVUE revision query value.
omitNoOptional NVUE omit query value.
pathYesRelative NVUE path, such as /system or interface/swp1.
includeNoOptional NVUE include query value.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is clear. The description adds minimal behavioral context; could mention response format or error handling.

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

Conciseness5/5

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

Single sentence that is concise, front-loaded, and contains no superfluous words.

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

Completeness3/5

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

Adequate for a read-only tool with rich annotations and full schema coverage, but lacks examples of path format or constraints on 'safe' paths.

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 coverage is 100%, so the description does not need to add parameter details. Baseline score of 3 is appropriate as the description provides no extra parameter meaning.

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 the verb ('Read'), resource ('any safe relative NVUE path'), and method (HTTP GET). Clearly distinguishes from sibling tools which target specific entities.

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

Usage Guidelines3/5

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

Implies use for arbitrary NVUE paths not covered by specific siblings, but provides no explicit when-to-use, when-not-to-use, or alternative recommendations.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv0.1.0
    • First observedget_bgp_global
    • First observedget_bgp_neighbors
    • First observedget_bgp_vrf
    • First observedget_bridge
    • First observedget_interface
    • First observedget_interface_counters
    • First observedget_ip_neighbors
    • First observedget_lldp_neighbors
    • First observedget_mac_table
    • First observedget_platform
    • First observedget_routes
    • First observedget_system
    • First observedget_system_resources
    • First observedget_vrf
    • First observedlist_bridges
    • First observedlist_interfaces
    • First observedlist_vrfs
    • First observednvue_get

TDQS

B3/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target distinct resources (e.g., BGP global vs VRF vs neighbors), but `nvue_get` introduces potential overlap as a generic path-reader that could replicate specific get_ tools. BGP-related tools are well-differentiated by scope and neighbors.

Naming Consistency3/5

Tools predominantly use `get_<object>` for singular and `list_<object>` for plurals, but `nvue_get` breaks the pattern with reversed order. The verb mix between 'get' and 'list' is consistent with CRUD conventions, yet the outlier reduces overall consistency.

Tool Count4/5

18 tools cover a broad but focused domain of Cumulus network state retrieval. The count is slightly on the higher side but still manageable and each tool serves a clear purpose, justifying its inclusion.

Completeness3/5

The tool set is read-only (get/list/nvue_get), which is complete for monitoring but lacks any create, update, or delete operations. Missing common read operations like per-prefix route details, but core resources (interfaces, BGP, bridges, system) are covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that enables LLMs to retrieve structured network information, including routing, interfaces, MPLS, and topology, from devices using gNMI and OpenConfig models. It facilitates real-time network analysis, log filtering, and status monitoring through a standardized interface.
    10
    14
    BSD 3-Clause
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for network operations that lets AI assistants interact with Cisco/Juniper network devices through safe, well-defined tools like compliance audits and configuration backups.
    MIT