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 Server
Служебная учётная запись (сделайте это в первую очередь)
Не подключайте сюда своего основного администратора. В 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 installed
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
- AlicenseNot gradedqualityCmaintenanceEnables managing Docker containers and Compose apps on a QNAP NAS via the Container Station API, including starting, stopping, restarting, and inspecting containers and applications.16MIT
- AlicenseBqualityAmaintenanceMonitor and manage a Synology DSM 7 NAS from any MCP client — and build live dashboards right inside the chat.713MIT
- 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 gradedqualityCmaintenanceEnables 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
Related MCP Connectors
Agent-first web hosting: deploy sites, apps, databases and domains over MCP.
MCP server for AI access to Swagger by SmartBear.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
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/dogeared/dsm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server