Skip to main content
Glama
sydasif

nornir-mcp-server

by sydasif

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation4/5

    The tools are mostly distinct: list_devices handles inventory, apply_config pushes configs, backup_configs saves configs, while fetch_data and show_commands both retrieve device data but via different methods (structured NAPALM getters vs raw CLI). This slight overlap prevented a perfect score, but descriptions clarify the distinction.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (list_devices, apply_config, backup_configs, fetch_data, show_commands) using snake_case and imperative verbs. There are no naming deviations or mixed conventions.

    Tool Count5/5

    The server provides 5 tools, which is well-scaled for a network automation MCP server. Each tool covers a core function—inventory, config push, backup, data collection, and CLI commands—without unnecessary bloat.

    Completeness4/5

    The tool surface covers the primary network operations: inventory access, configuration management (apply and backup), structured data retrieval, and raw command execution. Minor gaps exist (e.g., no explicit config comparison or device reboot), but most workflows can be accomplished via the existing tools, such as using fetch_data with the 'config' getter.

  • Average 4/5 across 5 of 5 tools scored. Lowest: 3.4/5.

    See the Tool Scores section below for per-tool breakdowns.

  • This repository is archived. Archived repositories automatically receive an F maintenance tier.

  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=false, and the description's 'List' verb is consistent with these. The description adds the ability to choose query_type and the details flag, plus a return type statement, but does not disclose additional behavioral traits such as pagination, error handling, or filter semantics. It is not contradictory, but could be richer.

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

    Conciseness3/5

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

    The description is structured with a short intro, a consolidated note, and an Args/Returns section. However, the Args list repeats schema content, making it more verbose than necessary. It is not overly long, but not as concise as it could be.

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

    Completeness4/5

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

    Given the read-only nature, six optional parameters, and the existence of an output schema, the description covers the core functionality, query modes, and filter options well. It explains the return type and the details flag, but lacks explicit guidance on when to prefer this over sibling tools or how filters interact. Overall, it is sufficiently complete for a listing 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 all parameters are already well-documented in the input schema. The description's Args list largely duplicates this information, adding no new meaning beyond examples like 'cisco_ios' and 'arista_eos' that already appear in the schema. Baseline 3 is appropriate.

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

    Purpose4/5

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

    The description clearly states 'List network devices and inventory information' with a specific verb and resource, and further explains the consolidated access to devices, groups, or all. While it does not explicitly contrast with sibling tools, the purpose is unambiguous and matches the tool name.

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

    Usage Guidelines3/5

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

    The description gives some usage context ('Consolidated tool', 'Use details=true for full device attributes') but does not explicitly state when to use this tool versus alternatives like show_commands or fetch_data. No exclusions or alternative tool references are provided, so guidance 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.

  • Behavior4/5

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

    Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description adds value by disclosing the return format (dict mapping hostname to success/error). It does not contradict annotations, and it provides a concrete behavioral detail beyond the schema and annotations.

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

    Conciseness4/5

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

    The description is concise and front-loaded, with a clear Args/Returns structure. The Args list is somewhat redundant with the schema, but the overall format is efficient and easy to scan.

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

    Completeness4/5

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

    Given that an output schema exists and the input schema covers all 5 parameters with descriptions, the description is complete enough for basic usage. It covers the main command and filter options, though it does not explain how multiple filters combine or mention potential non-deterministic behavior (openWorldHint).

    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%, and the description's Args section mostly repeats the schema's parameter descriptions. No additional semantic meaning is added beyond what the schema already provides, so baseline 3 is appropriate.

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

    Purpose5/5

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

    The description states 'Send configuration commands to network devices' with a specific verb and resource, clearly distinguishing it from read-only siblings like show_commands and backup_configs. The Args and Returns sections further clarify that this applies configuration changes and returns per-host results.

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

    Usage Guidelines3/5

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

    The description implies usage for applying configuration commands versus alternatives like show_commands, but it does not explicitly state when to use this tool or when to prefer a sibling. No exclusions or alternative recommendations are provided.

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

  • Behavior3/5

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

    Annotations already indicate idempotent, non-destructive behavior (destructiveHint=false). The description adds that it writes to local disk and filters by inventory attributes, which is valuable context. Yet it does not clarify overwrite behavior, file naming, or whether authentication/network access is needed, so the disclosure is adequate but not rich.

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

    Conciseness5/5

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

    The description is extremely concise, with a front-loaded one-line purpose followed by a compact parameter list and return note. Every sentence earns its place, and there is no fluff or repetition of schema details beyond what is necessary for clarity.

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

    Completeness4/5

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

    Given the output schema, annotations, and full parameter descriptions, the tool is well-specified for a straightforward backup operation. However, it does not explain how multiple filters combine (e.g., AND vs OR) or specify whether filters are case-sensitive, which could affect invocation. Still, the essential context is present, so it is slightly above minimum viability.

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

    Parameters3/5

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

    Input schema coverage is 100%, with each parameter already described clearly (e.g., filter_name as 'Filter by device name'). The description merely restates the parameter names and one example for filter_platform without adding new syntax, precedence, or combination semantics. Baseline 3 applies because the schema fully documents the parameters.

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

    Purpose5/5

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

    The description uses a specific verb ('Save') with a clear resource ('device configuration') and destination ('local disk'). It distinguishes itself from sibling tools like apply_config, which pushes configurations rather than saving them.

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

    Usage Guidelines4/5

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

    The description clearly implies the tool is for backing up device configurations to local disk, which signals appropriate use cases. However, it does not explicitly mention when not to use it or contrast it with alternatives like fetch_data or show_commands, so it stops short of a full 5.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint and openWorldHint, lowering the burden. The description adds that execution happens via SSH and describes the return structure as a dictionary mapping hosts to success/error results, providing useful behavior 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.

    Conciseness5/5

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

    The description is concise and well-structured with an Args section and a Returns section. Every sentence adds relevant information without redundancy, and the main purpose is front-loaded in the first sentence.

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

    Completeness5/5

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

    Given the moderate complexity (multiple filters, raw command execution), the description covers all necessary aspects: purpose, parameters, execution method, and return format. The output schema already provides structure, and the description fills in the behavioral context.

    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?

    The input schema covers 100% of the parameters, so the description need not repeat them. It adds no extra semantic detail beyond what the schema already provides, but the schema descriptions are sufficient. Baseline 3 is appropriate.

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

    Purpose5/5

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

    The description clearly states the tool executes raw CLI show commands via SSH, combining a specific verb ('execute') with a concrete resource ('raw CLI show commands'). It distinguishes itself from siblings like apply_config (config changes) and backup_configs (backups) by emphasizing the read-only 'show' nature.

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

    Usage Guidelines4/5

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

    The description clearly establishes the intended context: raw CLI show commands over SSH. It does not explicitly mention when not to use it or name alternatives, but the 'show' scope and SSH method provide clear contextual guidance for when this tool is appropriate.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by enumerating available getters and stating the return format ('Structured data per host mapping hostname -> result'). It does not disclose caveats like credential requirements or performance implications, but given the annotations, this is sufficient.

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

    Conciseness5/5

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

    The description is efficiently structured: a one-sentence purpose, a bulleted list of common getters, a labeled Args section, and a Returns section. Everything earns its place, and the most important information is front-loaded. It is detailed yet not verbose.

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

    Completeness4/5

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

    Given the tool's complexity (6 parameters, output schema present, read-only annotations), the description is largely complete: it explains what the getters return, lists parameters, and describes the output mapping. The only gap is the lack of detail on getters_options, but the presence of an output schema and annotations reduces the burden.

    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?

    With schema description coverage at 83%, the baseline is 3. The description enhances parameter understanding by giving concrete examples of valid getter names (e.g., 'facts', 'interfaces') and noting that getters_options is optional, although it remains vague about its structure. This adds value beyond the schema's generic parameter names.

    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 opens with a clear verb-resource pair: 'Execute one or more NAPALM getters to retrieve structured data from network devices.' This strongly distinguishes it from siblings like apply_config (write) and list_devices (inventory listing). The list of common getters further clarifies its purpose.

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

    Usage Guidelines4/5

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

    The description clearly states the tool's function and provides a list of common getters, which implies when to use it (e.g., when you need facts, interfaces, BGP state). However, it does not explicitly name alternatives or exclusions (e.g., 'use show_commands for raw CLI output'), so it falls short of a 5.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

nornir-mcp-server MCP server

Copy to your README.md:

Score Badge

nornir-mcp-server MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sydasif/nornir-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server