Skip to main content
Glama

Nornir MCP Server

by yhvh-chen

🌐 Nornir MCP-Server

Ein FastMCP -Server, der Netzwerkautomatisierungstools bereitstellt, die von Nornir und NAPALM unterstützt werden.

Dieser Server fungiert als Brücke und stellt Nornir/NAPALM-Netzwerkoperationen als MCP-Tools (Massively Concurrent Processing) bereit, sodass sie von kompatiblen MCP-Clients (wie der FastMCP-Web-Benutzeroberfläche) aus leicht zugänglich sind.

✨ Hauptmerkmale

  • Nutzt Nornir für die Bestandsverwaltung und gleichzeitige Aufgabenausführung auf Netzwerkgeräten.
  • Verwendet NAPALM für die Interaktion von Geräten mehrerer Anbieter (Informationserfassung, Befehlsausführung).
  • Erstellt mit FastMCP für die nahtlose Integration mit MCP-Clients unter Verwendung verschiedener Transportmittel (SSE in dieser Konfiguration).
  • Containerisiert mit Docker 🐳 für einfache Einrichtung und Bereitstellung.
  • Verwendet uv für schnelles Python-Abhängigkeitsmanagement innerhalb des Containers ⚡.

🔧 Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Folgendes installiert ist:

⚙️ Konfiguration

Bevor Sie den Server ausführen, müssen Sie Ihr Netzwerkinventar und Ihre Geräteanmeldeinformationen konfigurieren:

  1. Navigieren Sie zum Verzeichnis conf/ im Projekt.
  2. Bearbeiten Sie hosts.yaml : Definieren Sie Ihre Netzwerkgeräte. Geben Sie deren Verwaltungs-IP/Hostnamen, Plattform (z. B. ios , junos , eos ), Anmeldeinformationen (falls keine Standardeinstellungen verwendet werden) an und weisen Sie sie bei Bedarf Gruppen zu.
  3. Bearbeiten Sie groups.yaml : Definieren Sie Gerätegruppen mit gemeinsamen Eigenschaften (wie Plattform- oder Verbindungsoptionen). Die hier vorgenommenen Einstellungen können die Standardeinstellungen überschreiben.
  4. Bearbeiten Sie defaults.yaml : Legen Sie die Standardanmeldeinformationen ( username , password ) und Verbindungsoptionen fest (z. B. NAPALM secret zum Aktivieren von Passwörtern oder platform ).
    • ⚠️ Wichtiger Sicherheitshinweis: Die Standardkonfiguration verwendet Klartext-Anmeldeinformationen in YAML-Dateien. Dies eignet sich für Test- und Laborumgebungen. Für die Produktion sollten Sie unbedingt die integrierten Funktionen zur Geheimnisverwaltung von Nornir (z. B. Umgebungsvariablen, HashiCorp Vault-Plugin) nutzen, um die Speicherung vertraulicher Informationen direkt in Konfigurationsdateien zu vermeiden. Passen Sie nornir_ops.py und Ihre Konfiguration an, wenn Sie einen Geheimnisanbieter implementieren.
  5. Überprüfen Sie config.yaml : Stellen Sie sicher, dass die Inventardateipfade ( host_file , group_file , defaults_file ) korrekt auf die Dateien im Verzeichnis conf/ verweisen (dies sollte standardmäßig der Fall sein). Passen Sie die Runner-Optionen ( num_workers ) bei Bedarf an.

▶️ Ausführen des Servers

Nach der Konfiguration können Sie den Server ganz einfach mit Docker Compose ausführen:

  1. Stellen Sie sicher, dass Sie das Verzeichnis conf/ wie oben beschrieben konfiguriert haben.
  2. Öffnen Sie ein Terminal oder eine Eingabeaufforderung im Stammverzeichnis des Projekts (dasselbe Verzeichnis wie die Dateien Dockerfile und docker-compose.yml ).
  3. Führen Sie den folgenden Befehl aus:
    docker-compose up --build -d
    • Das Flag --build weist Docker Compose an, das Image beim ersten Mal oder wenn sich Projektdateien (wie .py Dateien oder pyproject.toml ) geändert haben, basierend auf der Dockerfile zu erstellen.
    • Dieser Befehl startet den Nornir MCP-Server in einem Docker-Container.
  4. Die Serverprotokolle werden in Ihrem Terminal angezeigt. Standardmäßig sollten sie über Port 8000 Ihres Hostcomputers (localhost) zugänglich sein.
  5. Um den Server zu stoppen, drücken Sie Ctrl+C im Terminal, in dem docker-compose ausgeführt wird. Um den Container anschließend zu entfernen, führen Sie docker-compose down aus.

🔌 Zum MCP-Client hinzufügen

So verwenden Sie die von diesem Server bereitgestellten Tools in einem MCP-Client (wie der offiziellen FastMCP-Web-Benutzeroberfläche oder anderen kompatiblen Clients):

  1. Stellen Sie sicher, dass der Nornir MCP-Server ausgeführt wird (mit docker-compose up ).
  2. Öffnen Sie Ihre MCP-Clientanwendung.
  3. Suchen Sie nach der Option zum Hinzufügen oder Verwalten von MCP-Serververbindungen.
  4. Fügen Sie eine neue Verbindung mit den folgenden Details hinzu:
    • Server-URL : Da dieser Server den SSE-Transport (Server-Sent Events) verwendet und standardmäßig auf Port 8000 läuft, lautet die URL:
      • http://localhost:8000/sse
      • (Wenn Ihr Docker-Host eine andere IP-Adresse hat, auf die der Client zugreifen kann, ersetzen Sie localhost durch diese IP, z. B. http://192.168.1.100:8000/sse .)
    • Verbindungsname : Geben Sie ihm einen beschreibenden Namen, zum Beispiel Nornir Lab Server .
  5. Speichern Sie und stellen Sie eine Verbindung zum neu hinzugefügten Server her.
  6. Der MCP-Client sollte den Nornir_MCP -Dienst erkennen und alle verfügbaren Tools (wie get_facts , send_command usw.) auflisten. Sie können diese Tools nun über die Client-Oberfläche verwenden! 🎉

Dify DSL-Beispiele

  1. Nornir MCP.yml – Ein einfaches Beispiel zum Chatten mit Ihren Geräten.
  2. Device Check.yml – Ein Beispiel zum Ausführen eines Gerätebewertungsberichts.

🛠️ Verfügbare Tools und Ressourcen

Sobald eine Verbindung über einen MCP-Client hergestellt ist, sollten normalerweise die folgenden Tools (unter dem Dienstnamen „Nornir_MCP“) verfügbar sein:

  • Inventar:
    • list_all_hosts : Listet die in Ihrem Nornir-Inventar konfigurierten Geräte auf ( conf/hosts.yaml ).
  • NAPALM Getters: (Informationen abrufen)
    • get_facts
    • get_interfaces
    • get_interfaces_ip
    • get_interfaces_counters
    • get_config (mit retrieve : running, startup, candidate)
    • get_arp_table
    • get_mac_address_table
    • get_users
    • get_vlans
    • get_snmp_information
    • get_bgp_neighbors
    • (Verfügbarkeit hängt von der Geräteplattform und der NAPALM-Treiberunterstützung ab)
  • Ausführung:
    • send_command : Senden Sie einen einzelnen schreibgeschützten Befehl an ein Gerät und erhalten Sie die Ausgabe.
  • Streaming-Ressource:
    • sse://updates : Stellt einen einfachen Heartbeat-Ereignisstrom bereit. (Kann von Clients abonniert werden, die SSE-Ressourcen unterstützen.)

📄 Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert.

🙌 Beitragen

Beiträge, Probleme und Funktionswünsche sind willkommen! Bitte reichen Sie diese über das Repository des Projekts ein.

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Ein FastMCP-Server, der Tools zur Netzwerkautomatisierung bereitstellt, indem er Nornir- und NAPALM-Operationen als MCP-Tools verfügbar macht und es Benutzern ermöglicht, Netzwerkgeräte über kompatible MCP-Clients zu verwalten und mit ihnen zu interagieren.

  1. ✨ Hauptmerkmale
    1. 🔧 Voraussetzungen
      1. ⚙️ Konfiguration
        1. ▶️ Ausführen des Servers
          1. 🔌 Zum MCP-Client hinzufügen
            1. Dify DSL-Beispiele
              1. 🛠️ Verfügbare Tools und Ressourcen
                1. 📄 Lizenz
                  1. 🙌 Beitragen

                    Related MCP Servers

                    • -
                      security
                      A
                      license
                      -
                      quality
                      FastMCP is a comprehensive MCP server allowing secure and standardized data and functionality exposure to LLM applications, offering resources, tools, and prompt management for efficient LLM interactions.
                      Last updated -
                      3
                      Python
                      MIT License
                    • -
                      security
                      A
                      license
                      -
                      quality
                      A lightweight MCP server for managing DNS records, purging cache, and interacting with the Cloudflare API through natural language commands.
                      Last updated -
                      21
                      TypeScript
                      MIT License
                    • A
                      security
                      A
                      license
                      A
                      quality
                      A Model Control Protocol server that provides access to nmap network scanning functionality, allowing users to run customizable scans, store results, and analyze network security using AI prompts.
                      Last updated -
                      3
                      8
                      Python
                      MIT License
                      • Linux
                    • -
                      security
                      F
                      license
                      -
                      quality
                      A FastMCP server that enables browser automation through natural language commands, allowing Language Models to browse the web, fill out forms, click buttons, and perform other web-based tasks via a simple API.
                      Last updated -
                      3
                      Python

                    View all related MCP servers

                    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/yhvh-chen/nornir_mcp'

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