Skip to main content
Glama
hifishhe

Synology Docker MCP Server

by hifishhe

Synology Docker MCP Server

(Scrollen Sie nach unten für die englische Version / English version below)

🇨🇳 中文说明 (Chinesische Version)

Dies ist ein Model Context Protocol (MCP) Server, der speziell für Synology NAS entwickelt wurde. Er dient dazu, Docker-Container und Docker-Compose-Projekte im Synology Container Manager direkt über Large Language Models zu verwalten, zu konfigurieren und zu debuggen.

✨ Kernfunktionen und Highlights

  • Sichere Verwaltung via SSH: Direkte Kommunikation mit Ihrem Synology NAS über SSH, sichere Ausführung nativer Befehle und vollständiger Verzicht auf das Risiko, Docker-TCP-Schnittstellen nach außen freizugeben.

  • Auto-Privilege Escalation (Automatische Privilegieneskalation): Automatische Injektion von Anmeldedaten zur stillen Ausführung von sudo, wodurch die bei Synology-Administratorkonten häufig auftretenden Permission Denied-Berechtigungshürden bei der Ausführung von Docker-Befehlen gelöst werden.

  • Perfekte Kompatibilität mit dem Synology Container Manager: Native Unterstützung und erzwungene Verwendung von docker-compose -p-Tags, um sicherzustellen, dass Projekte, die über diesen MCP-Server gestartet oder aktualisiert werden, perfekt mit der webbasierten Projektoberfläche von Synology synchronisiert bleiben (Beibehaltung des grünen Status-Punkts).

  • Umfassendes Toolset:

    • synology_docker_ps: Alle laufenden Container anzeigen.

    • synology_docker_logs: Container-Logs abrufen und verfolgen.

    • synology_docker_manage: Starten, Stoppen, Neustarten oder Entfernen von Containern steuern.

    • synology_project_list: Automatische Suche und Erkennung aller Projekte im Verzeichnis /volume1/docker/.

    • synology_project_manage: Native Ausführung von Pull-, Up-, Down- oder Restart-Befehlen für Projekte.

    • synology_read_file / synology_write_file: Remote-Lesen oder Ändern von .env- und docker-compose.yml-Konfigurationsdateien.

🔒 Sicherheitsprotokoll (v1.1.0)

Schwachstelle

Lösung

Shell-Expansion bei Sonderzeichen im Passwort ($/Backticks)

echo "..." durch printf '%s\n' '...' ersetzt, um Shell-Expansion zu vermeiden

Befehlsinjektion (Containername/Projektname/Pfad-Konkatenation)

Alle Benutzereingaben werden vor der Befehlskonkatenation mit shQuote() in einfache Anführungszeichen gesetzt

Nicht validierter action-Parameter

Whitelist-Validierung auf Code-Ebene, unabhängig vom Schema-Enum

Pfad-Traversal (/etc/shadow etc.)

synology_read_file / synology_write_file auf NAS_DOCKER_DIR beschränkt, Pfade mit .. werden abgelehnt

tail-Parameter-Injektion

Erzwingung positiver Ganzzahlen, Obergrenze 10000, Standardwert 100

SSH-Verbindung ohne Timeout

readyTimeout: 30000 hinzugefügt

🚀 Schnelleinstieg und Konfiguration

  1. Synology SSH-Dienst aktivieren: Gehen Sie zu Systemsteuerung -> Terminal & SNMP und aktivieren Sie SSH-Dienst aktivieren.

  2. Umgebungsvariablen und Anmeldedaten konfigurieren: Kopieren Sie die .env.example aus dem Projekt, benennen Sie sie in .env um und geben Sie Ihre NAS-Verbindungsinformationen ein:

    NAS_HOST=192.168.1.xxx
    NAS_PORT=22
    NAS_USER=your_admin_account
    NAS_PASSWORD=your_admin_password
    NAS_DOCKER_DIR=/volume1/docker
  3. Abhängigkeiten installieren und bauen:

    npm install
    npm run build
  4. MCP-Client verbinden (z. B. Claude Desktop oder Cursor): Fügen Sie den folgenden Inhalt zur MCP-Konfigurations-JSON Ihres Clients hinzu:

    {
      "mcpServers": {
        "synology-docker": {
          "command": "node",
          "args": [
            "--env-file=e:\\Dev\\Synology Docker MCP\\.env",
            "e:\\Dev\\Synology Docker MCP\\build\\index.js"
          ]
        }
      }
    }

🇬🇧 Englische Version

Dies ist ein Model Context Protocol (MCP) Server, der speziell für die Verwaltung, Konfiguration und das Debugging von Docker-Containern und Docker-Compose-Projekten auf Synology NAS-Geräten entwickelt wurde.

✨ Funktionen & Highlights

  • SSH-basierte Verwaltung: Kommuniziert direkt über SSH mit Ihrem Synology NAS und gewährleistet die sichere Ausführung nativer Befehle, ohne den Docker-TCP-Socket freigeben zu müssen.

  • Auto-Privilege Escalation: Injiziert automatisch Anmeldedaten, um sudo im Hintergrund auszuführen und die bei Synology-Administratorkonten üblichen Permission Denied-Probleme zu umgehen.

  • Kompatibilität mit dem Synology Container Manager: Native Unterstützung für docker-compose -p, wodurch sichergestellt wird, dass Projekte, die über diesen MCP-Server gestartet oder aktualisiert werden, perfekt mit der GUI des Synology Container Managers übereinstimmen (Beibehaltung der grünen Statusanzeige).

  • Umfassendes Toolset:

    • synology_docker_ps: Alle laufenden Container anzeigen.

    • synology_docker_logs: Container-Logs streamen.

    • synology_docker_manage: Container starten, stoppen, neu starten oder entfernen.

    • synology_project_list: Projekte entdecken, die in /volume1/docker/ gemappt sind.

    • synology_project_manage: Docker-Compose-Projekte nativ per Pull, Up, Down oder Restart verwalten.

    • synology_read_file / synology_write_file: .env- und docker-compose.yml-Konfigurationen remote bearbeiten.

🔒 Sicherheitshärtung (v1.1.0)

Schwachstelle

Lösung

Shell-Expansion bei Passwort ($, Backticks)

echo "..." durch printf '%s\n' '...' ersetzt, um Shell-Expansion zu verhindern

Befehlsinjektion (Container-/Projektname/Pfad-Konkatenation)

Alle Benutzereingaben werden vor der Shell-Konkatenation mit shQuote() umschlossen

Nicht validierter action-Parameter

Whitelist-Validierung auf Code-Ebene, unabhängig vom Schema-Enum

Pfad-Traversal (z. B. Lesen von /etc/shadow)

synology_read_file / synology_write_file auf NAS_DOCKER_DIR beschränkt; Pfade mit ..-Segmenten werden abgelehnt

tail-Parameter-Injektion

Erzwingung positiver Ganzzahlen, Obergrenze 10000, Standardwert 100

SSH-Verbindung hängt unendlich

readyTimeout: 30000 hinzugefügt

🚀 Einrichtungsanleitung

  1. SSH auf dem Synology NAS aktivieren: Gehen Sie zu Systemsteuerung -> Terminal & SNMP und aktivieren Sie SSH-Dienst aktivieren.

  2. Anmeldedaten konfigurieren: Kopieren Sie .env.example nach .env und geben Sie Ihre NAS-Verbindungsdetails ein:

    NAS_HOST=192.168.1.xxx
    NAS_PORT=22
    NAS_USER=your_admin_account
    NAS_PASSWORD=your_admin_password
    NAS_DOCKER_DIR=/volume1/docker
  3. Abhängigkeiten installieren & bauen:

    npm install
    npm run build
  4. Mit MCP-Client verbinden (z. B. Claude Desktop / Cursor): Fügen Sie Folgendes zu Ihrer MCP-Konfigurations-JSON hinzu:

    {
      "mcpServers": {
        "synology-docker": {
          "command": "node",
          "args": [
            "--env-file=e:\\Dev\\Synology Docker MCP\\.env",
            "e:\\Dev\\Synology Docker MCP\\build\\index.js"
          ]
        }
      }
    }
Install Server
A
license - permissive license
B
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/hifishhe/Synology-Docker-MCP'

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