Skip to main content
Glama

dsm-mcp

Сервер Model Context Protocol для Synology DSM и Container Manager. Он позволяет MCP-клиенту (Claude) просматривать NAS и управлять его контейнерами напрямую через Synology Web API — без браузера и без входа в DSM/2FA при каждом запросе. Сервер входит один раз с выделенной служебной учётной записью и сам поддерживает сессию, что фактически и есть та самая «неистекающая сессия», которая вам нужна: Claude больше не аутентифицируется повторно.

Компаньон для arr-mcp. Та же форма (Python, streamable-HTTP, bearer-аутентификация), другой порт (8788) и клиент, специфичный для Synology.

Инструменты

Область

Инструменты

Обнаружение/здоровье

dsm_health, dsm_api_discover, dsm_raw_call

Система

dsm_system_info, dsm_storage, dsm_utilization

Контейнеры

dsm_docker_containers, dsm_docker_container, dsm_docker_action*, dsm_docker_logs, dsm_docker_projects

* = записывающее действие (запуск/остановка/перезапуск контейнера). dsm_raw_call может вызывать любой метод DSM, включая записывающие, — это запасной выход для тех частей API DSM, которые различаются в зависимости от версии.

Об API DSM (прочтите это)

Веб-API Synology управляется обнаружением и зависит от версии/модели. Каждый инструмент в момент вызова определяет правильный путь CGI и версию через SYNO.API.Info, поэтому инструменты для системы/хранилища/загрузки надёжны. Методы Docker/Container Manager менее последовательно документированы в разных версиях DSM — если dsm_docker_logs, dsm_docker_projects или параметры действия не совпадают с вашим DSM, запустите dsm_api_discover (запрос SYNO.Docker или all), чтобы увидеть точно, что предоставляет ваш NAS, а затем управляйте им через dsm_raw_call. Ничто не захардкожено так, чтобы это нельзя было обойти вживую.

Related MCP server: Synology_MCP

Служебная учётная запись (сделайте это в первую очередь)

Не подключайте сюда своего основного администратора. В DSM:

  1. Панель управления → Пользователь и группа → Создать пользователя, например claude-svc.

  2. Предоставьте только необходимое: разрешение на приложение Container Manager и чтение системы/хранилища. Не включайте его в группу administrators, если ваша версия DSM позволяет использовать Docker API без администратора; если требуется администратор, лучше используйте отдельную учётную запись из группы администраторов, используемую только здесь.

    • Примечание: на момент написания служебная учётная запись должна быть членом группы администраторов, чтобы иметь доступ к конечным точкам Container Manager.

  3. Отключите 2FA для этой учётной записи (демон не может вводить сменяющийся код). Если ваша политика требует 2FA, один раз зарегистрируйте доверенное устройство и поместите его токен в DSM_DEVICE_ID.

  4. При желании ограничьте её локальной сетью (Панель управления → Безопасность → правила брандмауэра/IP), поскольку MCP-сервер находится в локальной сети, и только туннель является публичным.

Настройка

cp config.example.env .env
# edit .env: DSM_URL, the service account + password, a strong MCP_AUTH_TOKEN.
# HTTPS with the self-signed cert? use :5001 and set DSM_VERIFY_SSL=false

docker compose up -d --build
docker logs -f dsm-mcp        # confirm it starts; auth runs on the first tool call

Запуск без Docker (для разработки):

pip install -r requirements.txt
set -a; source .env; set +a
python server.py

Предоставление доступа Claude

Конечная точка: https://<ваш-хост>/mcp. То же, что и для arr-mcp:

  1. Пробросьте её (выделенный cloudflared или имя хоста на вашем существующем туннеле Jellyfin → http://dsm-mcp:8788), в идеале за Cloudflare Access.

  2. Claude → Настройки → Коннекторы → пользовательский коннектор → URL /mcp, с Authorization: Bearer <MCP_AUTH_TOKEN>.

Замечания по безопасности

  • Этот сервер может перезапускать контейнеры и читать внутренние данные системы, и он аутентифицируется как пользователь DSM. Держите учётную запись с минимальными привилегиями, ограничьте отключение 2FA только этой учётной записью в локальной сети и всегда защищайте конечную точку bearer-токеном (а в идеале — Cloudflare Access).

  • Учётные данные хранятся только в .env (исключён из git/docker). MCP-клиент никогда их не видит — он видит только результаты инструментов.

  • Не предоставляются инструменты удаления учётных записей, изменения настроек DSM или разрушительные инструменты для томов/пулов. dsm_raw_call по замыслу мощный; относитесь к аутентификации конечной точки соответственно.

Файлы

  • server.py — MCP-сервер + инструменты (streamable-HTTP + bearer-аутентификация)

  • dsm_client.py — клиент Synology Web API (обнаружение, вход, обновление сессии)

  • config.py — создаёт клиент из переменных окружения

  • Dockerfile / docker-compose.yml — контейнер + опциональный туннель

  • config.example.env — скопируйте в .env

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Synology NAS services including DSM, File Station, Calendar, Note Station, Contacts, Chat, Download Station, and Container Manager through a modular MCP interface with configurable safety modes.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes a Synology NAS through the official DSM WebAPI, covering File Station, Download Station, Synology Photos, Container Manager, and system management with curated tools and a generic bridge for other APIs.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    MCP server enabling AI agents to manage and monitor Synology NAS via official DSM API, including file operations, system stats, backups, downloads, and camera lists.
    15
    -