dsm-mcp
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_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:
Панель управления → Пользователь и группа → Создать пользователя, например
claude-svc.Предоставьте только необходимое: разрешение на приложение Container Manager и чтение системы/хранилища. Не включайте его в группу
administrators, если ваша версия DSM позволяет использовать Docker API без администратора; если требуется администратор, лучше используйте отдельную учётную запись из группы администраторов, используемую только здесь.Примечание: на момент написания служебная учётная запись должна быть членом группы администраторов, чтобы иметь доступ к конечным точкам Container Manager.
Отключите 2FA для этой учётной записи (демон не может вводить сменяющийся код). Если ваша политика требует 2FA, один раз зарегистрируйте доверенное устройство и поместите его токен в
DSM_DEVICE_ID.При желании ограничьте её локальной сетью (Панель управления → Безопасность → правила брандмауэра/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:
Пробросьте её (выделенный
cloudflaredили имя хоста на вашем существующем туннеле Jellyfin →http://dsm-mcp:8788), в идеале за Cloudflare Access.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
This server cannot be deployed
Maintenance
Related MCP Connectors
Host any HTTP API as a standard MCP server; auto-distribute to 12+ mainstream agent platforms.
Manage uptime monitors, incidents and status pages from any MCP client.
Agent-first web hosting: deploy sites, apps, databases and domains over MCP.
Remote MCP for 1,500+ APIs. Vault-managed credentials; OAuth or API key. Search, load, and execute.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceComprehensive Synology NAS management through MCP, enabling file operations, downloads, backups, Docker, photos, VMs, snapshots, and more across up to 9 NAS units.5MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseNot gradedqualityDmaintenanceAn 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
- FlicenseAqualityDmaintenanceMCP 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-