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 Server
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 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