Skip to main content
Glama

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

dsm_health, dsm_api_discover, dsm_raw_call

Sistema

dsm_system_info, dsm_storage, dsm_utilization

Contenedores

dsm_docker_containers, dsm_docker_container, dsm_docker_action*, dsm_docker_logs, dsm_docker_projects

* = 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:

  1. Panel de control → Usuario y grupo → Crear un usuario, por ejemplo, claude-svc.

  2. Concede solo lo necesario: permiso de la aplicación Container Manager y lectura de sistema/almacenamiento. Mantenlo fuera de administrators si 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.

  3. 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.

  4. 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 call

Ejecutar sin Docker (desarrollo):

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

Exponerlo a Claude

Endpoint: https://<tu-hostname>/mcp. Igual que arr-mcp:

  1. Haz un túnel (un cloudflared dedicado, o un hostname en tu túnel Jellyfin existente → http://dsm-mcp:8788), idealmente detrás de Cloudflare Access.

  2. Claude → Configuración → Conectores → conector personalizado → la URL /mcp, con Authorization: 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_call es 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 entorno

  • Dockerfile / docker-compose.yml — contenedor + túnel opcional

  • config.example.env — copia a .env

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables managing Docker containers and Compose apps on a QNAP NAS via the Container Station API, including starting, stopping, restarting, and inspecting containers and applications.
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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