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.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dsm-mcpcheck NAS storage usage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 Server
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
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