Skip to main content
Glama
hifishhe

Synology Docker MCP Server

by hifishhe

Synology Docker MCP Server

(Прокрутите вниз для английской версии / Scroll down for English version)

🇨🇳 中文说明 (Китайская версия)

Это сервер Model Context Protocol (MCP), специально разработанный для Synology NAS. Он предназначен для прямого управления, настройки и отладки контейнеров Docker и проектов Docker Compose в Synology Container Manager с помощью больших языковых моделей.

✨ Основные функции и преимущества

  • Безопасное управление через SSH: Прямое взаимодействие с вашим Synology NAS через SSH, безопасное выполнение нативных команд, что полностью исключает риски, связанные с открытием Docker TCP-интерфейса.

  • Автоматическое повышение привилегий (Auto-Privilege Escalation): Автоматическая подстановка учетных данных для скрытого выполнения sudo, что идеально решает проблему Permission Denied, с которой часто сталкиваются администраторы Synology при выполнении команд docker.

  • Полная совместимость с Synology Container Manager: Нативная поддержка и принудительное использование тегов docker-compose -p, что гарантирует, что проекты, запущенные или обновленные через этот MCP-сервер, будут идеально синхронизированы с веб-интерфейсом Synology (сохраняя статус «зеленой точки»).

  • Комплексный набор инструментов:

    • synology_docker_ps: Просмотр всех запущенных контейнеров.

    • synology_docker_logs: Получение и отслеживание логов контейнеров.

    • synology_docker_manage: Управление запуском, остановкой, перезапуском или удалением контейнеров.

    • synology_project_list: Автоматический поиск и обнаружение всех проектов в директории /volume1/docker/.

    • synology_project_manage: Нативное выполнение команд Pull, Up, Down или Restart для проектов.

    • synology_read_file / synology_write_file: Удаленное чтение или изменение конфигурационных файлов .env и docker-compose.yml.

🔒 Журнал усиления безопасности (v1.1.0)

Уязвимость

Решение

Раскрытие спецсимволов пароля ($/обратные кавычки)

Замена echo "..." на printf '%s\n' '...' для предотвращения раскрытия оболочкой

Инъекция команд (имя контейнера/проекта/путь)

Все пользовательские данные оборачиваются в shQuote() перед конкатенацией

Непроверенный параметр action

Проверка по «белому списку» на уровне кода, независимо от schema enum

Обход пути (например, /etc/shadow)

synology_read_file / synology_write_file ограничены директорией NAS_DOCKER_DIR, пути с .. отклоняются

Инъекция параметров tail

Принудительное использование положительного целого числа, лимит 10000, по умолчанию 100

Отсутствие таймаута SSH-соединения

Добавлен readyTimeout: 30000

🚀 Быстрый старт

  1. Включите службу SSH на Synology: Перейдите в Панель управления -> Терминал и SNMP и установите флажок Включить службу SSH.

  2. Настройте переменные окружения: Скопируйте .env.example в .env и введите данные для подключения к вашему NAS:

    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. Установите зависимости и выполните сборку:

    npm install
    npm run build
  4. Подключитесь к MCP-клиенту (например, Claude Desktop или Cursor): Добавьте следующее содержимое в JSON-файл конфигурации MCP вашего клиента:

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

🇬🇧 English Version

This is a Model Context Protocol (MCP) server specifically designed to manage, configure, and debug Docker containers and Docker Compose projects on Synology NAS devices.

✨ Features & Highlights

  • SSH-Based Management: Communicates with your Synology NAS directly via SSH, ensuring secure execution of native commands without needing to expose the Docker TCP socket.

  • Auto-Privilege Escalation: Automatically injects credentials to run sudo silently, bypassing the Permission Denied issues commonly faced by Synology administrator accounts.

  • Synology Container Manager Compatibility: Native support for docker-compose -p, ensuring that projects started or updated via this MCP server perfectly align with the Synology Container Manager GUI (maintaining the green status indicator).

  • Comprehensive Toolset:

    • synology_docker_ps: View all running containers.

    • synology_docker_logs: Stream container logs.

    • synology_docker_manage: Start, stop, restart, or remove containers.

    • synology_project_list: Discover projects mapped in /volume1/docker/.

    • synology_project_manage: Pull, up, down, or restart Docker Compose projects natively.

    • synology_read_file / synology_write_file: Edit .env and docker-compose.yml configurations remotely.

🔒 Security Hardening (v1.1.0)

Vulnerability

Fix

Password shell expansion ($, backticks)

Replaced echo "..." with printf '%s\n' '...' to prevent shell expansion

Command injection (container/project name/path concatenation)

All user inputs wrapped with shQuote() before shell concatenation

Unvalidated action parameter

Code-level whitelist enforced independently of schema enum

Path traversal (e.g. reading /etc/shadow)

synology_read_file / synology_write_file restricted to NAS_DOCKER_DIR; paths with .. segments rejected

tail parameter injection

Enforced positive integer, capped at 10000, defaults to 100

SSH connection hangs indefinitely

Added readyTimeout: 30000

🚀 Setup Instructions

  1. Enable SSH on Synology NAS: Go to Control Panel -> Terminal & SNMP and check Enable SSH service.

  2. Configure Credentials: Copy .env.example to .env and fill in your NAS connection details:

    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. Install Dependencies & Build:

    npm install
    npm run build
  4. Connect to MCP Client (e.g. Claude Desktop / Cursor): Add the following to your MCP configuration JSON:

    {
      "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