dsm-mcp
Provides tools for interacting with Synology DSM's Web API, enabling AI agents to monitor system health, storage, and utilization, and manage Docker containers (list, inspect, start/stop/restart, view logs) on a Synology NAS.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
dsm-mcp
A Model Context Protocol server for Synology DSM and Container Manager. It lets an MCP client (Claude) inspect the NAS and manage its containers directly over the Synology Web API — no browser, and no per-request DSM login/2FA. The server logs in once with a dedicated service account and keeps the session alive itself, which is effectively the "non-expiring session" you wanted: Claude never re-authenticates.
Companion to arr-mcp. Same shape (Python, streamable-HTTP, bearer auth), a
different port (8788), and a Synology-specific client.
Tools
Area | Tools |
Discovery/health |
|
System |
|
Containers |
|
* = write action (start/stop/restart a container). dsm_raw_call can invoke
any DSM method, including writes — it's the escape hatch for the parts of DSM's
API that vary by version.
About DSM's API (read this)
Synology's Web API is discovery-driven and version/model-dependent. Each tool
resolves the correct CGI path and version at call time via SYNO.API.Info, so the
system/storage/utilization tools are robust. The Docker/Container Manager
methods are less consistently documented across DSM releases — if
dsm_docker_logs, dsm_docker_projects, or an action's params don't match your
DSM, run dsm_api_discover (query SYNO.Docker or all) to see exactly what
your NAS exposes, then drive it with dsm_raw_call. Nothing is hardcoded that
can't be worked around live.
Related MCP server: Synology_MCP
Service account (do this first)
Don't point this at your main admin. In DSM:
Control Panel → User & Group → Create a user, e.g.
claude-svc.Grant only what's needed: Container Manager app permission, and read of system/storage. Keep it out of
administratorsif your DSM version allows the Docker API without admin; if it requires admin, prefer a separate admin-group account used only here.Note: As of this writing, the service account must be a member of the administrators group to be able to access the container manager endpoints
Disable 2FA on this account (a daemon can't type a rotating code). If your policy enforces 2FA, enroll a trusted device once and put its token in
DSM_DEVICE_ID.Optionally restrict it to the LAN (Control Panel → Security → firewall / IP rules), since the MCP server sits on the LAN and only the tunnel is public.
Setup
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 callRun without Docker (dev):
pip install -r requirements.txt
set -a; source .env; set +a
python server.pyExposing it to Claude
Endpoint: https://<your-hostname>/mcp. Same as arr-mcp:
Tunnel it (dedicated
cloudflared, or a hostname on your existing Jellyfin tunnel →http://dsm-mcp:8788), ideally behind Cloudflare Access.Claude → Settings → Connectors → custom connector → the
/mcpURL, withAuthorization: Bearer <MCP_AUTH_TOKEN>.
Security notes
This can restart containers and read system internals, and it authenticates as a DSM user. Keep the account least-privileged, keep 2FA-off scoped to only that LAN account, and always put the endpoint behind the bearer token (and ideally Cloudflare Access).
Credentials live only in
.env(git/docker-ignored). The MCP client never sees them — it only sees tool results.No account-deletion, no DSM settings-mutation, no volume/pool destructive tools are exposed.
dsm_raw_callis powerful by design; treat the endpoint's auth accordingly.
Files
server.py— MCP server + tools (streamable-HTTP + bearer auth)dsm_client.py— Synology Web API client (discovery, login, session refresh)config.py— builds the client from env varsDockerfile/docker-compose.yml— container + optional tunnelconfig.example.env— copy to.env
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Linux server administration over OAuth MCP: shell, Docker, systemd, files and monitoring.
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.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceComprehensive 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.1MIT
- 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-