dsm-mcp
dsm-mcp
Un servidor de Model Context Protocol para Synology DSM y Container Manager. Permite que un cliente MCP (Claude) inspeccione el NAS y gestione sus contenedores directamente a través de la API web de Synology — sin navegador y sin inicio de sesión/2FA de DSM por solicitud. El servidor inicia sesión una vez con una cuenta de servicio dedicada y mantiene la sesión activa por sí mismo, lo que es efectivamente la "sesión sin caducidad" que querías: Claude nunca se vuelve a autenticar.
Complemento de arr-mcp. Misma forma (Python, HTTP transmisible, autenticación bearer), un
puerto diferente (8788) y un cliente específico de Synology.
Herramientas
Área | Herramientas |
Descubrimiento/salud |
|
Sistema |
|
Contenedores |
|
* = acción de escritura (iniciar/detener/reiniciar un contenedor). dsm_raw_call puede invocar
cualquier método de DSM, incluidos los de escritura — es la vía de escape para las partes de la
API de DSM que varían según la versión.
Acerca de la API de DSM (lee esto)
La API web de Synology está impulsada por descubrimiento y depende de la versión/modelo. Cada
herramienta resuelve la ruta CGI y la versión correctas en el momento de la llamada mediante SYNO.API.Info, por lo que
las herramientas de sistema/almacenamiento/utilización son robustas. Los métodos de Docker/Container Manager
están menos documentados de manera consistente en las versiones de DSM — si
dsm_docker_logs, dsm_docker_projects o los parámetros de una acción no coinciden con tu
DSM, ejecuta dsm_api_discover (consulta SYNO.Docker o all) para ver exactamente qué
expone tu NAS y luego manéjalo con dsm_raw_call. Nada está codificado de forma que no se pueda
solucionar en vivo.
Related MCP server: Synology_MCP
Cuenta de servicio (haz esto primero)
No apuntes esto a tu administrador principal. En DSM:
Panel de control → Usuario y grupo → Crear un usuario, por ejemplo,
claude-svc.Concede solo lo necesario: permiso de la aplicación Container Manager y lectura de sistema/almacenamiento. Mantenlo fuera de
administratorssi tu versión de DSM permite la API de Docker sin administrador; si requiere administrador, prefiere una cuenta separada del grupo de administradores usada solo aquí.Nota: Al momento de escribir esto, la cuenta de servicio debe ser miembro del grupo de administradores para poder acceder a los endpoints de container manager.
Desactiva 2FA en esta cuenta (un demonio no puede escribir un código rotatorio). Si tu política exige 2FA, inscribe un dispositivo de confianza una vez y coloca su token en
DSM_DEVICE_ID.Opcionalmente, restringe la cuenta a la LAN (Panel de control → Seguridad → reglas de firewall / IP), ya que el servidor MCP está en la LAN y solo el túnel es público.
Configuración
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 callEjecutar sin Docker (desarrollo):
pip install -r requirements.txt
set -a; source .env; set +a
python server.pyExponerlo a Claude
Endpoint: https://<tu-hostname>/mcp. Igual que arr-mcp:
Haz un túnel (un
cloudflareddedicado, o un hostname en tu túnel Jellyfin existente →http://dsm-mcp:8788), idealmente detrás de Cloudflare Access.Claude → Configuración → Conectores → conector personalizado → la URL
/mcp, conAuthorization: Bearer <MCP_AUTH_TOKEN>.
Notas de seguridad
Esto puede reiniciar contenedores y leer internos del sistema, y se autentica como un usuario de DSM. Mantén la cuenta con privilegios mínimos, mantén el 2FA desactivado limitado a solo esa cuenta de LAN, y siempre coloca el endpoint detrás del token bearer (y idealmente Cloudflare Access).
Las credenciales viven solo en
.env(ignorado por git/docker). El cliente MCP nunca las ve — solo ve resultados de herramientas.No se exponen herramientas de eliminación de cuentas, mutación de configuraciones de DSM, ni herramientas destructivas de volúmenes/pools.
dsm_raw_calles potente por diseño; trata la autenticación del endpoint en consecuencia.
Archivos
server.py— servidor MCP + herramientas (HTTP transmisible + autenticación bearer)dsm_client.py— cliente de la API web de Synology (descubrimiento, inicio de sesión, refresco de sesión)config.py— construye el cliente a partir de variables de entornoDockerfile/docker-compose.yml— contenedor + túnel opcionalconfig.example.env— copia a.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-