cisco-iosxe-mcp
cisco-iosxe-mcp
Ein MCP-Server, der Cisco IOS-XE-Geräte als Werkzeuge bereitstellt, die ein LLM-Client aufrufen kann. Benannte operative Lesevorgänge sowie ein Konfigurationsänderungspfad, der die genaue Befehlsliste anzeigt, sie unter configure terminal revert timer anwendet, überprüft, ob das Gerät in einer neuen Sitzung noch antwortet, und erst dann bestätigt.
Es kommuniziert über MCP per Streamable HTTP, läuft also als eigener Dienst im Netzwerk und nicht als lokaler Unterprozess eines Clients. Der Transport zum Gerät erfolgt über die IOS-XE-CLI per SSH, mittels scrapli.
Entwickelt für universal-network-director, einen chatgesteuerten Multi-Vendor-Netzwerkmanager mit einer menschlichen Genehmigungshürde für jeden Schreibvorgang – aber es ist ein eigenständiger MCP-Server und funktioniert mit jedem MCP-Client.
Nicht verbunden mit, unterstützt von oder empfohlen durch Cisco Systems, Inc. „Cisco“ und „IOS-XE“ sind Marken der jeweiligen Inhaber und werden hier nur zur Beschreibung der Kommunikationspartner dieser Software verwendet.
Das Sicherheitsmodell
Zweistufig, gleiche Form wie der Junos-Pfad – mit einem ehrlichen Unterschied, den Sie verstehen müssen, bevor Sie es nutzen.
Schritt 1 – Vorschau zeigt die Befehlsliste, keinen Diff
preview_config_change gibt die genauen Befehle zurück, die gesendet würden, das Gerät, an das sie gehen, und den aktuellen Zustand der Zeilen, die sie berühren. Sie genehmigen das.
Dies ist schwächer als ein Junos show | compare. Junos lädt eine Kandidatenkonfiguration und das Gerät berechnet den echten Diff; IOS-XE hat keine Kandidatenkonfiguration, daher gibt es nichts, um das Gerät nach einem Diff zu fragen. Die Vorschau hier ist die Änderung wie geschrieben, abgeglichen mit dem aktuell Konfigurierten – nicht die eigene Darstellung des Geräts, was das Ergebnis wäre. Lesen Sie die Befehle, nicht nur die Zusammenfassung.
Schritt 2 – Anwenden unter einem Revert-Timer
write_apply_config_block akzeptiert nur eine Vorschau-ID – es kann nichts anwenden, das nicht vorher in der Vorschau war. Die Befehle werden unter configure terminal revert timer <n> eingegeben: sofort wirksam, aber IOS-XE macht die Konfiguration automatisch rückgängig, es sei denn, ein configure confirm trifft rechtzeitig ein. Dieser Server verbindet sich dann in einer neuen SSH-Sitzung erneut, um nachzuweisen, dass das Gerät noch erreichbar ist, und bestätigt nur, wenn dies der Fall ist. Schließen Sie sich selbst aus, macht die Box die Änderung rückgängig.
Gerätevoraussetzung, die Junos nicht hat: Die IOS-
archive- Funktion muss konfiguriert sein (archive/path ...) oder der Revert-Timer hat keinen Rollback-Punkt und das Sicherheitsnetz ist stillschweigend nicht vorhanden.get_archive_statusmeldet dies pro Gerät, undwrite_apply_config_blocklehnt ab, wenn es fehlt, anstatt ungeschützt anzuwenden.
Es gibt bewusst kein freiformatiges Befehlswerkzeug. Jeder operative Lesevorgang führt einen Befehl aus, der aus einer festen Vorlage plus validierten Argumenten besteht. Die eine Stelle, an der das Modell frei Text zusammenstellt – ein Konfigurationsblock – ist abgesperrt, wird einem Menschen wörtlich gezeigt und unter dem Revert-Timer angewendet.
Related MCP server: Itential MCP Server
Lesen Sie dies, bevor Sie es auf die Produktion richten
Drei der neunzehn Werkzeuge ändern den Zustand, und dieser Server fragt nicht vor der Ausführung. Das Präfix write_ ist eine Konvention, damit Ihr Client sie absperrn kann.
Werkzeug | Was es tut | Risiko |
| Wendet eine in der Vorschau gezeigte Befehlsliste an | Was auch immer die Befehle sagen. Hinter einem Revert-Timer mit Erreichbarkeitsprüfung – aber nur, wenn |
| Kopiert die Laufzeitkonfiguration in die Startkonfiguration | Schreibt keine neue Konfiguration – es macht die aktuelle einem Neustart überlebend, einschließlich Änderungen, übe die Sie noch nachdachten. |
| Startet das Gerät neu, optional mit einer Verzögerung | Nimmt das Gerät außer Betrieb. Nicht rückgängig machbar. Nicht gespeicherte Konfiguration geht verloren; gespeicherte kommt zurück. |
Beachten Sie die Asymmetrie, die das Präfix kodiert: write_ bedeutet „Ein Mensch muss dies genehmigen“, nicht „dies bearbeitet die Konfiguration“. write_save_config fügt überhaupt keine Konfiguration hinzu und ist abgesperrt, weil das Dauerhaftmachen einer Änderung eine Entscheidung ist, die jemand bewusst treffen sollte.
cancel_reload ist bewusst nicht abgesperrt – es ist eine Wiederherstellungsaktion, und das Erfordern einer Genehmigungsrunde, um einen anstehenden Neustart zu stoppen, ist der falsche Kompromiss.
Schränken Sie das Gerätekonto auf schreibgeschützt ein, es sei denn, Sie beabsichtigen spezifisch, dass die Schreibvorgänge funktionieren. Diese Kontrolle lebt auf dem Gerät, nicht in diesem Code.
Der MCP-Endpoint hat keine Authentifizierung
Dieser Server stellt seine Werkzeuge jedem zur Verfügung, der seinen Port erreichen kann. Es gibt kein Token, keine Client-Authentifizierung, kein TLS auf der MCP-Seite.
MCP_HOST standardmäßig aus diesem Grund auf 127.0.0.1. Das Container-Image setzt 0.0.0.0, weil es muss, was bedeutet, dass das Veröffentlichen des Container-Ports einen uneingeschränkten Pfad zu Ihren Routern auf diesem Interface freigibt. Halten Sie es in einem internen Netzwerk mit dem Client oder terminieren Sie TLS und Authentication davor.
Geräteinventar
Geräte-Anmeldedaten liegen in einer JSON-Datei, die schreibgeschützt in den Container eingebunden ist – nie im Image, nie eingecheckt. Sie enthält Klartext-SSH-Anmeldedaten, also chmod 600 drauf und besitzen Sie als die UID, unter der der Container läuft.
Gleiche Form wie das Junos-Gateway-Inventar, also ein Format zum Lernen, plus ein optionales enable_password:
{
"csr-lab": {
"ip": "192.0.2.53",
"port": 22,
"username": "automation",
"auth": { "type": "password", "password": "..." }
}
}enable_password wird nur gelesen, wenn ein Gerät es tatsächlich benögt – ein Konto, das bereits Privileg 15 hat, landet bei # und benögt keine sekundäre Eskalation.
.
Verwenden Sie eine andere Datei als die des Junos-Gateway. Getrennte Container mit getrennten Anmeldedaten sind der Grund, warum die Server überhapt getrennt sind: Ein Bug in diesem kann icht Ihre Firewals erreichen.
Container-UID. Das Image erstellt bewusst einen passwd-Eintrag für UID 1000. scraplis
system-Transport führt dasssh-Binär aus, und OpenSSH weigert sich zu laufen, wenn die aufrufende UID keinen/etc/passwd-Eintrag hat – das Symptom ist ein irreführendes „EOF reading from transport“ anstatt etwas, das die Ursache benennt.
Ausführung
docker build -t cisco-iosxe-mcp .
docker run --rm \
-v "$PWD/secrets/devices.json:/app/config/devices.json:ro" \
--user 1000:1000 \
-p 127.0.0.1:8004:8004 \
cisco-iosxe-mcpVariable | Standard | Bedeutung |
|
| Pfad zur Geräteinventardatei |
|
| Sekunden, die eine Vorschau gültig bleibt |
|
| Bind-Addresse (das Image setzt |
|
| Bind-Port |
Tests
docker run --rm cisco-iosxe-mcp python test_arg_validation.py
docker run --rm cisco-iosxe-mcp python test_reload.pyBeide sind offline – kein Gerätekontakt, keine Anmeldedaten erforderlich.
test_reload.py wiederholt die exakten Bytes, die ein echtes IOS-XE-Gerät für reload in 5, reload cancel und die Bestätigungsaufforderungen gesendet hat, einschließlich des Falls, dass die Speicherungsaufforderung nie erscheint.
Werkzeugreferenz
TOOLS.md enthält die werkzeugweise Referenz: Argumente, was jedes zurückgibt, welche Genehmigung benötigen und die Begründung für das Sperrdesign.
Lizenz
Apache-2.0. Siehe LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityAmaintenanceAn MCP server that allows LLMs to create, configure, validate, and explain Cisco Packet Tracer network topologies. It provides a comprehensive suite of tools for generating deployment scripts, CLI configurations, and automated network troubleshooting.129MIT

Itential MCP Serverofficial
AlicenseBqualityAmaintenanceMCP server for connecting LLMs to Itential Platform, enabling network automation, workflow orchestration, and platform monitoring.7635GPL 3.0- Alicense-qualityCmaintenanceMCP 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
- Flicense-qualityDmaintenanceMCP server for Cisco Catalyst SD-WAN Manager (vManage) that exposes REST API as tools for AI assistants to query and manage SD-WAN fabric, including device management, monitoring, templates, and policies.8
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/anderson-jason573/cisco-iosxe-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server