keenetic
Keenetic-router-plugin
Ein Plugin (MCP-Server + Skill), das einem KI-Agenten die Verwaltung eines Keenetic-Routers über RCI ermöglicht — dieselbe API, die auch die Weboberfläche des Routers nutzt. Es arbeitet direkt im lokalen Netzwerk, ohne Cloud. Der MCP-Server ist eigenständig und funktioniert mit jedem MCP-Client (z. B. Codex), der Skill (Domänenwissen über Keenetic für die KI) — nur in der Plugin-Umgebung von Claude Code.
Getestet mit KeeneticOS 5.0.12. Bei einem anderen Modell/anderer Firmware können einzelne RCI-Pfade abweichen — führen Sie vor Beginn der Arbeit npm run smoke aus (read-only, ändert nichts am Router).
Was die KI mithilfe dieses Plugins kann — und was nicht
Lesen — ohne Bestätigung, jederzeit:
Firmware-Version, WAN-Status, Liste der Schnittstellen, verbundene Geräte, Wi-Fi-Clients, Port-Weiterleitungen, Routen, DHCP-Reservierungen, VPN-Interfaces, vollständiger Export der Konfiguration (export_config).
Änderungen — nur wenn die KI explizit confirm: true übergibt:
Ändern des Wi-Fi-Passworts, Aktivieren/Deaktivieren des Zugangspunkts, Hinzufügen/Entfernen von Port-Weiterleitungen, Hinzufügen/Entfernen von Routen, Anbinden/Lösen eines Netzwerks an einem bereits konfigurierten VPN-Tunnel, paketweises Anwenden von Routen aus einer .bat-Datei. Ohne confirm: true wird der Aufruf abgelehnt. Man kann die KI bitten, den Aufruf zunächst mit dryRun: true auszuführen — sie zeigt dann, was genau auf den Router gesendet würde, ohne dabei etwas zu Erwachsen – ohne dass etwas angewendet wird.
Gefährliche Operationen — erfordern zusätzlich ALLOW_DESTRUCTIVE=true in der Serverkonfiguration:
Neustart des Routers. Solange das Flag nicht gesetzt ist, kann der Router auch mit confirm: true nicht per KI neu gestartet werden.
Was das Plugin grundsätzlich nicht kann (nicht implementiert): VPN-Tunnel von Grund auf neu anlegen (WireGuard/OpenVPN/IPsec), Zurücksetzen auf die Werkseinstellungen, Firmware aktualisieren.
Jeder write-/destructive-Aufruf (angewendet, abgelehnt oder mit Fehler fehlgeschlagen) wird in audit.log geschrieben.
Related MCP server: AsusWRT MCP Server
Installation
Voraussetzung: Node.js 20+.
Klonen Sie das Projekt und installieren Sie die Abhängigkeiten:
npm install npm run buildKopieren Sie
.env.examplein.envin diesem Ordner und füllen Sie es aus:ROUTER_HOST=192.168.1.1 # LAN-адрес роутера (в свойствах сети — "основной шлюз") ROUTER_PORT=80 ROUTER_LOGIN=имя_пользователя ROUTER_PASSWORD=пароль_пользователя ALLOW_DESTRUCTIVE=false # true — разрешить reboot_routerStatt der
.envlassen sich dieselben Werte auch über--envbei der Registrierung des Servers übergeben — siehe unten.Prüfen Sie die Verbindung (read-only, ändert nichts am Router):
npm run smokeFalls eine Anfrage einen Fehler zurückgibt, weicht der RCI-Pfad für Ihr Modell/Ihre Firmware ab — korrigieren Sie ihn in
src/capabilities/*.ts, bevor Sie mit der KI arbeiten.
Verbindung zu Claude Code
Als Plugin (empfohlen — direkt mit Skill):
claude --plugin-dir "<путь-к-проекту>"Für eine dauerhafte Verbindung (bzw. nicht nur für eine Session) verwenden Sie /plugin install, sobald das Projekt in einem Git-Repository oder lokalen Marketplace liegt.
Nur Server, ohne Skill:
claude mcp add --transport stdio --scope user keenetic -- node "<путь-к-проекту>/dist/index.js"Wenn Sie keine .env angelegt haben, fügen Sie die Anmeldedaten direkt hier ein:
claude mcp add --transport stdio --scope user \
--env ROUTER_HOST=192.168.1.1 --env ROUTER_LOGIN=имя_пользователя --env ROUTER_PASSWORD=его_пароль \
keenetic -- node "<путь-к-проекту>/dist/index.js"Verbindung prüfen: claude mcp list, claude mcp get keenetic oder /mcp innerhalb einer Session.
Danach können Sie im Dialog zum Beispiel schreiben: „Wann zeigst du die mit dem Router verbundenen Geräte“ oder „Ändere das Passwort des Gäste-Wi-Fi“.
Verbindung zu Codex
In ~/.codex/config.toml:
[mcp_servers.keenetic]
command = "node"
args = ["<путь-к-проекту>/dist/index.js"]Sicherheit
Das Guard-Modell (confirm/dryRun/ALLOW_DESTRUCTIVE) schützt vor zufälligen oder arbeitsunfällig Aktionen der KI. Es schützt nicht das Router-Passwort selbst — wenn .env oder die Konfiguration in falsche Hände gerät, könnte man sich mit diesem Passwort direkt am Router anmelden, unter Umgehung des Routers und aller dieser Beschränkungen.
export_configist formal read-only, gibt aber Geheimnisse in offener bzw. schwach obfuskierter Form zurück (Passwort-Hashes, WPA-PSK, WireGuard-Parameter) — dieselben Informationen, die in der Weboberfläche hinter der Schaltfläche „Speichern“ stehen, nur eben jetzt im Chat mit der KI. Das Tool weist die KI an, Sie vor dem Aufruf darauf hinzuweisen.Legen Sie einen separaten Benutzer für den Dienst der Website im Router an (System → Benutzer) und verwenden Sie nicht
admin, wenn möglich. Hinweis: Einige Funktionen, insbesondereset_wifi_password/set_wifi_enabled, funktionieren auf diesen Keenetic nur mitadmin— wenn benötigt, verwenden Sieadmin, aber mit einem neuen, eindeutigen Passwort.Öffnen Sie RCI/Web-Admin nicht für das Internet — aktivieren Sie keinen Remote-Zugriff, kein KeenDNS mit Zugriff auf Verwaltung keine Port-Weiterleitung auf die Web-Admin-Oberfläche des Dienstes für dieses Konto. Standardmäßig ist Keenetic von außen ohnehin geschlossen.
Beschränken Sie den Zugriff auf
.envauf der Anwendungsserver (OS)(chmod 600 .envmacOS/Linux oder Dateieigenschaften → „Sicherheit“ on Windows). Die Datei ist bereits in.gitignoreeingetragen.Verwenden Sie ein langes, eindeutiges Passwort, das nicht mit Ihren anderen Passwörtern übereinstimmt.
Entwicklung
npm run dev # запуск сервера напрямую через tsx, без сборки
npm test # unit-тесты (без обращения к реальному роутеру)
npm run smoke # live read-only проверка на реальном роутере из .envVersionen und Releases
Die Projektversion (package.json, .claude-plugin/plugin.json) wird bei jedem Push auf master automatisch erhöht — GNUHUB Actions startet semantic-release, das die Versionsnummer anhand der Commit-Text (Angular-Konvention) bestimmt:
fix: ...→ Patchfeat: ...→ Minorfeat!: .../BREAKING CHANGE: ...im Commit-Body → Majorchore:,docs:,refactor:,test:usw. sagen wir — kein Release
Die Version erhöhen oder bearbeiten wir nicht von Hand — sie leitet sich vollständig aus der Commit-Historie ab.
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
- AlicenseAqualityFmaintenanceEnables AI agents to manage OpenWRT routers remotely via SSH, supporting system monitoring, network management, OpenThread Border Router configuration, and package management through natural language commands.1914MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to monitor and securely manage AsusWRT and AsusWRT-Merlin routers via SSH with allowlisted commands, supporting read-only monitoring and controlled mutations.471MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage TP-Link routers by listing clients, checking status, controlling Wi-Fi, and rebooting via natural language.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP agents to control Keenetic routers via plain language, providing network monitoring, device management, and safe configuration changes with backup and read-only options.10216MIT
Related MCP Connectors
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Curated knowledge API for AI agents - skill packs, semantic search, validated patterns.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
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/Kykyryky23/Keenetic-router-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server