Skip to main content
Glama
coolexer

Nokia SR OS gNMI MCP Server

by coolexer

Nokia SR OS gNMI MCP server

A local stdio MCP server for Nokia SR OS gNMI. It exposes configuration and state reads, configuration update/replace/delete, capabilities, device sessions, and optional YANG path search.

Requirements

Python 3.11 or newer and a gNMI-enabled Nokia SR OS device. The server uses the official MCP Python SDK 2.x and pyGNMI. MCP 2.x serves both current and older MCP clients over stdio.

Related MCP server: io.github.shigechika/junos-mcp

Install

uv sync --python 3.13
uv run nokia-gnmi-mcp

To install the command independently of the checkout, run uv tool install --python 3.13 ..

For Codex, configure ~/.codex/config.toml with an absolute path to the environment executable:

[mcp_servers.nokia-gnmi-mcp]
command = 'C:\path\to\gNMI-MCP-server\.venv\Scripts\nokia-gnmi-mcp.exe'
args = []

Restart Codex after changing the configuration. A typical first call is sros_connect with a session name, host, username, and password. Credentials are kept in process memory for that session; they are never written to the configuration file.

TLS certificate verification is enabled by default. For a lab with a self-signed certificate, explicitly set skip_verify=true; for a plaintext lab endpoint, explicitly set insecure=true. The server never retries a failed TLS connection over plaintext.

Nokia YANG workflow

For reliable SR OS paths, use nokia-yang-mcp to find and check a path for the target platform. Then connect with sros_connect, read the current value with sros_get_config or sros_get_state, and pass the checked path to a Set tool if a change is needed. yang_search below is a local fallback for discovery when that separate server is unavailable.

Tools

Tool

Purpose

sros_connect / sros_disconnect

Open or close a named gNMI session

sros_get_config / sros_get_state

Read YANG paths with JSON IETF encoding

sros_set_update / sros_set_replace / sros_set_delete

Change configuration; replace removes unspecified nodes in its subtree

sros_capabilities

Read gNMI version, encodings, and model summary

sros_list_sessions

Show in-memory sessions without passwords

yang_search

Search local Nokia YANG paths

yang_search requires Nokia YANG submodule files under a yang directory. Set NOKIA_GNMI_YANG_DIR to the absolute path of that directory. The server creates cache/configure-paths.txt and cache/state-paths.txt within it. You can also place prebuilt files there, one path per line. The directory must be writable to build the cache.

The previous sros_cli_command tool was removed: pyGNMI's get() does not accept the vendor extension argument used by that tool. Use gNMI paths for reads or a separate CLI transport for MD-CLI commands.

Check

uv run python -m unittest discover -s tests -v

The test suite checks MCP tool discovery, argument validation, and that a TLS failure never triggers a plaintext retry. Device operations require a live Nokia endpoint and are not exercised by the local tests.

Available Tools

10 tools
sros_capabilitiesB

Get gNMI capabilities from Nokia SR OS device. Returns supported encodings, YANG models, and gNMI version.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDevice session name

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the return content (encodings, YANG models, gNMI version), which is useful, but says nothing about read-only nature, required session state, permissions, or failure modes.

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?

Two tight sentences with the operation front-loaded and the return payload immediately following. Every clause earns its place.

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

Completeness4/5

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

For a single-parameter, read-style discovery tool with no output schema, the description covers purpose and return contents adequately. The only gap is the implicit prerequisite of an existing device session, which is not stated.

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?

One parameter at 100% schema coverage; the schema already documents 'name' as the device session name. The description adds no format, linkage, or naming detail beyond that, so the baseline of 3 applies.

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?

States a specific verb and resource — 'Get gNMI capabilities from Nokia SR OS device' — and enumerates what is returned. It is clearly distinguishable from siblings like sros_get_config or sros_set_update, though it does not explicitly name a sibling it is not.

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?

There is no guidance on when to call this versus alternatives such as sros_connect (must a session already exist?) or the get_config/get_state tools. The purpose implies discovery usage, but no conditions or exclusions are stated.

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

sros_connectA

Connect to a Nokia SR OS device via gNMI (gRPC). Registers a named session with credentials for subsequent operations. Default port is 57400. TLS certificate verification is enabled by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesIP address or hostname of the SR OS device
nameYesSession name (e.g. 'pe1', 'core-rtr')
portNogNMI port (default: 57400)
timeoutNoConnection timeout in seconds (default: 10)
insecureNoUse insecure plain gRPC (no TLS). Required for Nokia srsim/containerlab labs. (default: false)
passwordYesgRPC/gNMI password
usernameYesgRPC/gNMI username
skip_verifyNoSkip TLS cert verification for labs only (default: false)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden but only partially meets it. It usefully states the default port (57400) and that TLS verification is on by default, which are safety-relevant behaviors; however it omits whether credentials are persisted, what happens on reconnecting an existing session name, and that sros_disconnect is needed for cleanup.

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?

Four short, front-loaded sentences with no filler; the core action is stated first and the security/port caveats follow. Slightly more than strictly needed but each sentence carries value.

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?

There is no output schema and no annotations, so the description must be self-sufficient; it explains connection behavior and defaults but says nothing about what a successful call returns (session handle/status) or how failures surface, leaving a gap for an 8-parameter stateful tool.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema, and the description adds only the default port value, which is already in the schema. Baseline 3 is appropriate since the schema does the heavy lifting.

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 uses a specific verb ('Connect') plus resource ('Nokia SR OS device via gNMI (gRPC)') and states the side effect of registering a named session. This clearly distinguishes it from siblings like sros_disconnect, sros_list_sessions, and the sros_set_* tools.

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 phrase 'for subsequent operations' implicitly tells the agent this must precede other sros_* calls, but there is no explicit when/when-not guidance and no named alternative (e.g. how it relates to sros_list_sessions or when to reuse an existing session). Usage is implied rather than stated.

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

sros_disconnectC

Close a gNMI session to a Nokia SR OS device.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSession name to disconnect

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state whether the operation is idempotent, what happens if the named session does not exist, or whether an active subscription is terminated—material details for a session-teardown tool.

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?

One front-loaded sentence with no wasted words. It is lean rather than verbose; the only cost is that the brevity leaves gaps elsewhere.

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?

For a one-parameter teardown with no output schema, the description is minimally sufficient. With no annotations and no statement of error or idempotency behavior, an agent still lacks enough to know how failure cases behave.

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% with a single, self-documented 'name' parameter ('Session name to disconnect'). The description adds no syntax, format, or lookup detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb ('Close') and resource ('gNMI session to a Nokia SR OS device'), which is clear enough to distinguish from sros_connect. However, it never names the sibling it pairs with or contrasts against, so sibling differentiation is left to inference from the name.

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?

There is no guidance on when to call this versus the alternatives (e.g., sros_connect, sros_list_sessions), nor any prerequisite such as an existing session. Usage is only implied by the tool name.

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

sros_get_configA

Get configuration from Nokia SR OS via gNMI Get (datatype=config). Provide one or more YANG paths. Uses json_ietf encoding.

Nokia SROS YANG path examples: /configure/router[router-name=Base]/interface /configure/port[port-id=1/1/c2/1] /configure/service/vprn[service-name=CUST-1] /configure/router[router-name=Base]/bgp /configure/card[slot-number=1] /configure (entire config)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDevice session name
pathsYesList of YANG paths to retrieve. Example: ['/configure/router[router-name=Base]/interface']

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the datatype (config), the protocol (gNMI) and the json_ietf encoding, and read semantics are clear. However it says nothing about permissions, error behavior, response size, or what happens with very broad queries such as '/configure (entire config)'.

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 operational sentence is front-loaded, followed by a clearly labeled, scannable list of example paths. Every element earns its place and nothing is padded.

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

Completeness4/5

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

For a two-parameter read tool with 100% schema coverage and no output schema, the description supplies what an agent needs to construct a valid call: paths, examples, and encoding. Only the shape of the returned data and error handling are left unaddressed, which is acceptable given no output schema is declared.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema by showing six concrete YANG path patterns (interfaces, ports, VPRN services, BGP, card slots, and the entire config), which the schema only hints at with a single example.

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?

Names a specific verb (Get) and resource (configuration) plus the exact mechanism (gNMI Get, datatype=config) and encoding (json_ietf). The datatype=config framing implicitly separates it from the state-oriented sibling sros_get_state, but no sibling is named explicitly.

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?

Tells the agent it must supply one or more YANG paths, which implies the intended usage of retrieving device configuration. It never states when to prefer this over sros_get_state, yang_search for path discovery, or the sros_set_* tools for modification, and gives no exclusions.

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

sros_get_stateA

Get operational state from Nokia SR OS via gNMI Get (datatype=state). Provide one or more YANG paths. Uses json_ietf encoding.

Nokia SROS state path examples: /state/router[router-name=Base]/interface[interface-name=to-pe2] /state/port[port-id=1/1/c2/1] /state/router[router-name=Base]/bgp/neighbor /state/card[slot-number=1] /state/system/information

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDevice session name
pathsYesList of YANG state paths to retrieve. Example: ['/state/system/information']

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the protocol and datatype (gNMI Get, datatype=state), implying a read-only operation, and the encoding (json_ietf). It does not cover authentication, error behavior on bad paths, or session requirements.

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 operation statement is front-loaded in one dense sentence, followed by a clearly labeled example block. Every element earns its place and nothing is repeated, though the example list is longer than strictly necessary.

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

Completeness4/5

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

For a two-parameter read tool with no output schema, the description covers mechanism, encoding, and path format well. It could say more about what the returned state payload looks like, but the essential information for a correct call is present.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine value with five realistic SROS state path examples that go beyond the schema's single generic example. The 'name' (device session) parameter is left to the schema, which is acceptable.

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?

States a specific verb+resource ('Get operational state from Nokia SR OS') and pins the mechanism (gNMI Get, datatype=state), which naturally separates it from the config-oriented sibling sros_get_config. It never names a sibling explicitly, so it stops at clear-but-undifferentiated.

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?

'Provide one or more YANG paths' is an input instruction, not usage guidance. There is no statement of when to prefer this over sros_get_config or yang_search, nor any prerequisites. Usage is only implied by the 'state vs config' resource framing.

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

sros_list_sessionsB

List all active Nokia SR OS gNMI sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. 'List all active' implies a read-only, non-destructive operation and discloses a filtering trait (active sessions only), but it omits whether a connection is required, what 'active' means, and the return shape.

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?

A single front-loaded sentence with zero filler. The verb and scope appear immediately, which is ideal for such a simple tool.

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?

For a zero-parameter list tool with no output schema and no annotations, the description covers what is listed but says nothing about the return format or what counts as a session. Given the low complexity, this is adequate but has clear gaps.

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 takes zero parameters, so the baseline of 4 applies. The description does not need to explain any arguments, and it correctly implies no filtering options are accepted.

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 states a specific verb (List) and resource (active Nokia SR OS gNMI sessions), making the operation unambiguous. No sibling tool lists sessions, so confusion is unlikely, but the description does not explicitly differentiate itself from the other sros_* tools.

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?

There is no when-to-use guidance, no mention of prerequisites (e.g., an established connection), and no reference to alternatives. The agent must infer that this is the right call purely from the resource name.

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

sros_set_deleteA

Delete configuration on Nokia SR OS via gNMI Set. Removes the config subtree at the given path(s).

Example: paths: ['/configure/router[router-name=Base]/interface[interface-name=test]']

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDevice session name
pathsYesList of YANG paths to delete

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It implies destructiveness ('Removes the config subtree') but says nothing about commit/datastore semantics, reversibility, required permissions, or idempotency — all critical for a config-deleting gNMI Set 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?

Two short sentences plus a compact example; the destructive action is front-loaded and nothing is wasted.

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?

With no annotations and no output schema, the description adequately conveys what happens and the path format, but omits the error/failure behavior and commit semantics an agent needs to safely invoke a destructive Set 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?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond it by giving a concrete YANG path literal for 'paths' (with list-key predicates like router-name=Base), which materially clarifies the expected path syntax that the schema only calls 'List of YANG paths'.

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 a specific verb and resource ('Delete configuration on Nokia SR OS via gNMI Set') and clarifies scope with 'Removes the config subtree at the given path(s).' The verb 'delete' also cleanly separates it from siblings sros_set_update and sros_set_replace without needing to name them.

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 when-to-use or when-not-to-use guidance is given. The description never mentions sros_set_replace or sros_set_update, so the agent must infer from the verb alone whether deletion or replacement semantics apply. Usage is only implied by the tool name.

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

sros_set_replaceA

Replace configuration on Nokia SR OS via gNMI Set. Replaces the entire subtree at the given path with the provided value. WARNING: This removes any existing config under the path that is not in the new value.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDevice session name
pathYesYANG path to replace
valueYesJSON object — complete replacement config

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose the critical destructive trait: the entire subtree is replaced and any config not in the new value is removed. It stops short of auth requirements, atomicity, or error/response behavior, but the key risk is surfaced explicitly.

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?

Two sentences, zero waste, with the operation and its scope front-loaded and the destructive warning placed immediately after. Nothing could be cut without losing meaning.

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

Completeness4/5

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

For a three-parameter mutation tool with no annotations and no output schema, the description covers the essential risk (full-subtree replacement). Minor gaps remain around session prerequisites and failure/response behavior, but an agent can call 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 description coverage is 100%, so the schema already documents all three parameters, making 3 the baseline. The description reinforces the relationship between path and value (entire subtree replaced by a complete value) but adds no format or syntax detail 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?

States a specific verb+resource (replace config on Nokia SR OS via gNMI Set) and describes the exact semantics of the operation. It is clearly distinguishable from siblings like sros_set_update and sros_set_delete without opening any schema.

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 warning about removing existing config implies the choice against sros_set_update, but no alternative is named and no explicit when-to-use/when-not-to-use guidance is given. The gNMI replace-vs-update distinction is left for the agent to infer from sibling names.

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

sros_set_updateA

Update (merge) configuration on Nokia SR OS via gNMI Set. Provide a YANG path and JSON value to merge.

Example — create interface: path: /configure/router[router-name=Base]/interface[interface-name=lo0] value: {"ipv4": {"primary": {"address": "10.0.0.1", "prefix-length": 32}}}

Example — enable port: path: /configure/port[port-id=1/1/c2/1] value: {"admin-state": "enable"}

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDevice session name
pathYesYANG path to update
valueYesJSON object with config values to merge

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose the meaningful merge semantics (existing config is preserved and values are combined rather than overwritten), which is the key behavioral trait. However, it omits session prerequisites, error behavior for invalid paths, and any indication of what a successful response contains.

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 purpose sentence is front-loaded and the two examples are short and directly instructive for constructing a valid call. Slightly verbose in places, but every element (mechanism, merge semantics, path/value examples) earns its place.

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?

For a destructive-capable mutation tool with no annotations and no output schema, the description covers the operation and input format well but leaves gaps: it never states that a session (name) must first exist via sros_connect, nor what happens when a path is invalid. Adequate but not complete.

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?

Schema coverage is already 100%, so the schema documents the three parameters, establishing a baseline of 3. The description goes beyond it by showing concrete path syntax with list keys (e.g. /configure/router[router-name=Base]/interface[interface-name=lo0]) and the nested JSON value shape, which materially clarifies how 'path' and 'value' must be formed.

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 names a specific verb (update/merge), the resource (configuration on Nokia SR OS) and the mechanism (gNMI Set), and the parenthetical '(merge)' hints at how it differs from sros_set_replace and sros_set_delete. It does not explicitly name those siblings, so the differentiation is implied rather than stated.

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?

Usage context is only implied: 'merge' suggests a partial, additive update versus the sibling replace/delete tools, and the examples show a call shape. There is no explicit statement of when to choose this over sros_set_replace or sros_set_delete, and no prerequisites (e.g. an active session) are given.

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. 10 tool updatesv2.0.0
    • First observedsros_capabilities
    • First observedsros_connect
    • First observedsros_disconnect
    • First observedsros_get_config
    • First observedsros_get_state
    • First observedsros_list_sessions
    • First observedsros_set_delete
    • First observedsros_set_replace
    • First observedsros_set_update
    • First observedyang_search

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: session lifecycle, YANG path discovery, config/state retrieval, set variants, and capabilities. The get_config vs get_state and set_update/replace/delete distinctions are explicit in both names and descriptions. No meaningful overlap or ambiguous boundaries exist.

Naming Consistency4/5

Nine of ten tools use the consistent sros_ prefix with verb_or_noun naming, making the set mostly predictable. The exception is yang_search, which breaks the sros_ pattern but remains clear. This is a minor deviation rather than a pattern failure.

Tool Count5/5

Ten tools is well-scoped for a gNMI configuration and state management server. Each tool earns its place, covering connection handling, path discovery, retrieval, mutation, and capabilities without bloat. The count is neither thin nor excessive.

Completeness4/5

The surface covers gNMI Capabilities, Get (config and state), Set (update, replace, delete), session lifecycle, and YANG path discovery. The major missing operation is gNMI Subscribe for streaming telemetry, which is a core gNMI RPC. This is a notable but not fatal gap for configuration-focused workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers