Nornir MCP Server

Integrations

  • Provides containerization for the server, enabling easy setup and deployment with Docker and Docker Compose.

  • Mentions integration with HashiCorp Vault for secrets management as an alternative to plaintext credentials in configuration files.

  • Uses Python-based frameworks like Nornir and NAPALM to provide network automation tools that can interact with multi-vendor network devices.

🌐 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

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

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
                      F
                      license
                      -
                      quality
                      A configurable MCP server that dynamically loads capabilities from a remote configuration to bridge MCP clients with remote APIs for executing actions, accessing resources, and utilizing prompt templates.
                      Last updated -
                      1,261
                      4
                      TypeScript
                    • -
                      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
                    • A
                      security
                      F
                      license
                      A
                      quality
                      An MCP server that allows users to interact with YNAB data, enabling access to account balances, transactions, and the creation of new transactions through the Model Context Protocol.
                      Last updated -
                      10
                      1
                      Python

                    View all related MCP servers

                    ID: jwzob45l35