nvidia-cumulus-mcp
Allows querying network configuration and state from NVIDIA Cumulus Linux switches via the NVUE API, providing read-only tools for platform, system, interfaces, VRFs, BGP, and more.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nvidia-cumulus-mcpshow me the list of interfaces"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NVIDIA Cumulus MCP Server
MCP server that integrates with the Cumulus Linux OS. This application was implemented using FastMCP and NVIDIA's NVUE API.
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" --> userQuick 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 \
-nographicBy 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 nginxYou can confirm that this API is reachable from your host machine by doing
curl -u '<username>:<password>' -k https://localhost:8765/nvue_v1/interfaceConfiguring 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-mcpAlternatively, 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 VX or switch hostname/IP |
|
| NVUE API HTTPS port |
|
| NVUE basic-auth username |
| required | NVUE basic-auth password |
|
| Enable TLS certificate validation |
| unset | Optional CA bundle path for TLS validation |
|
| 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/mypyLive 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.pyReferences
NVIDIA Cumulus Linux 5.4 NVUE API: https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-54/System-Configuration/NVIDIA-User-Experience-NVUE/NVUE-API/
NVIDIA Cumulus Linux 5.4 OpenAPI specification: https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-54/api/openapi.json
FastMCP tools: https://gofastmcp.com/servers/tools
Available Tools
18 toolsget_bgp_globalARead-onlyIdempotent
Get global BGP information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_neighborsBRead-onlyIdempotent
Get BGP neighbors for one VRF.
| Name | Required | Description | Default |
|---|---|---|---|
| vrf | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_vrfCRead-onlyIdempotent
Get BGP information for one VRF.
| Name | Required | Description | Default |
|---|---|---|---|
| vrf | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_bridgeBRead-onlyIdempotent
Get one bridge domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | br_default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_interfaceCRead-onlyIdempotent
Get one interface.
| Name | Required | Description | Default |
|---|---|---|---|
| interface | Yes | Interface name, such as swp1, eth0, bond1, or vlan100. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_countersARead-onlyIdempotent
Get link counters for one interface.
| Name | Required | Description | Default |
|---|---|---|---|
| interface | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_neighborsCRead-onlyIdempotent
Get IP neighbors for one interface.
| Name | Required | Description | Default |
|---|---|---|---|
| family | No | all | |
| interface | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_neighborsCRead-onlyIdempotent
Get LLDP neighbors for one interface.
| Name | Required | Description | Default |
|---|---|---|---|
| interface | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_tableBRead-onlyIdempotent
Get the bridge domain MAC table.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | br_default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_platformBRead-onlyIdempotent
Get platform hardware and software information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_routesARead-onlyIdempotent
Get the routing table for one VRF.
| Name | Required | Description | Default |
|---|---|---|---|
| afi | No | Optional address family, either ipv4 or ipv6. | |
| vrf | No | VRF name. Defaults to default. | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_systemCRead-onlyIdempotent
Get system information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_resourcesARead-onlyIdempotent
Get system CPU and memory information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_vrfCRead-onlyIdempotent
Get one VRF.
| Name | Required | Description | Default |
|---|---|---|---|
| vrf | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_bridgesARead-onlyIdempotent
Get all bridge domains.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_interfacesARead-onlyIdempotent
Get all interfaces.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_vrfsARead-onlyIdempotent
Get all VRFs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_getARead-onlyIdempotent
Read any safe relative NVUE path with HTTP GET.
| Name | Required | Description | Default |
|---|---|---|---|
| rev | No | Optional NVUE revision query value. | |
| omit | No | Optional NVUE omit query value. | |
| path | Yes | Relative NVUE path, such as /system or interface/swp1. | |
| include | No | Optional NVUE include query value. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
18 tool updates
v0.1.0- First observed
get_bgp_global - First observed
get_bgp_neighbors - First observed
get_bgp_vrf - First observed
get_bridge - First observed
get_interface - First observed
get_interface_counters - First observed
get_ip_neighbors - First observed
get_lldp_neighbors - First observed
get_mac_table - First observed
get_platform - First observed
get_routes - First observed
get_system - First observed
get_system_resources - First observed
get_vrf - First observed
list_bridges - First observed
list_interfaces - First observed
list_vrfs - First observed
nvue_get
TDQS
Scored across 18 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for network documentation, generated by doc2mcp.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for Product Management
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA powerful integration server that combines Netbox's network infrastructure management capabilities with MCP (Multi-Cloud Platform) functionality.-
- AlicenseAqualityBmaintenanceAn 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.1014BSD 3-Clause
- FlicenseAqualityFmaintenanceAn MCP server that integrates Nornir with NAPALM and Netmiko, enabling LLMs to orchestrate multi-vendor network infrastructure through natural language.52-
- AlicenseNot gradedqualityDmaintenanceMCP 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