mcp-server-synology
Provides tools for interacting with a Synology NAS via the DSM WebAPI, covering File Station (browse, read, write, archive, share), Download Station, Synology Photos, Container Manager, and system management (info, resource usage, storage, power control), plus a generic bridge to any DSM API.
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., "@mcp-server-synologylist files in Downloads"
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.
mcp-server-synology
An MCP server that exposes a Synology NAS through the official DSM WebAPI.
It covers File Station, Download Station, Synology Photos, Container Manager and DSM system management with purpose-built tools, and reaches everything else through a guarded generic bridge to the raw DSM WebAPI.
Why the generic bridge exists
DSM exposes several hundred APIs and Synology publicly documents only a fraction of them. Shipping one tool per API is neither possible nor useful, so this server takes a two-layer approach:
Curated tools for the things you actually do every day. They validate input, resolve DSM's asynchronous background tasks, translate numeric error codes into sentences, and enforce the path allowlist.
list_dsm_apis+call_dsm_apifor everything else: Surveillance Station, Hyper Backup, certificates, users and groups, the firewall, Synology Drive, task scheduler, and any API a future DSM version adds.
The bridge is not a privilege escalation. Every call still runs as the DSM account you configured and is bounded by that account's permissions. It is gated behind a separate switch only because it bypasses the path allowlist and the read-only heuristics the curated tools apply.
Related MCP server: mcp-synology
Tools
File Station — browse and read
Tool | Purpose |
| Discover the shared folders the account can reach |
| List a folder with paging, sorting and extension filters |
| Size, timestamps, owner and permissions for specific items |
| Indexed DSM search by name, extension, size or modified time |
| Read a text file inline, size-capped and binary-safe |
| Recursive size and item count of folders |
| MD5 of a file without downloading it |
File Station — write, archive and share
Tool | Purpose |
| Create folders, optionally with parents |
| Upload text or base64 content to a file |
| Rename in place |
| Relocate or duplicate, waiting for completion |
| Permanent delete, separately gated |
| Create a ZIP or 7z archive, optionally encrypted |
| Extract ZIP, 7z, RAR, TAR or GZ |
| Inspect an archive without extracting it |
| Public link with optional expiry and password |
| Audit and revoke public links |
Download Station
Tool | Purpose |
| All tasks with progress and speed |
| Full detail for specific tasks |
| Queue HTTP, FTP or magnet downloads |
| Pause, resume or remove tasks |
| Version, throughput and schedule |
Synology Photos
Tool | Purpose |
| Albums in the personal or shared space |
| Photos and videos with EXIF, location and tags |
| Navigate the Photos folder tree |
| Search by subject, place, person or filename |
Container Manager
Tool | Purpose |
| Containers with state, CPU and memory |
| Ports, mounts, environment, network |
| Start, stop or restart |
| Stored images and their size |
System
Tool | Purpose |
| Model, DSM version, serial, uptime, temperature |
| Live CPU, memory, disk I/O and network |
| Volumes, disks, free space and SMART health |
| Which DSM packages exist and are running |
| Shared folder configuration and encryption |
| Who is connected and over which protocol |
| Reboot or shut down the NAS |
Generic bridge
Tool | Purpose |
| Discover every API this DSM exposes |
| Invoke any DSM WebAPI method |
Security model
The server assumes it is being driven by an AI client, so the defaults are the safe ones and every dangerous capability is opt-in.
Layer 1 — the DSM account. Create a dedicated non-administrator user in DSM and grant it only the shared folders it needs. Nothing this server does can exceed what that account is allowed to do. Never point it at an admin account.
Layer 2 — the policy switches. Independent of DSM permissions:
Setting | Default | Effect |
|
| Every mutating tool is hidden and refused |
|
| Deletion refused even when writes are on |
|
| No reboot, shutdown or container control |
|
|
|
| empty | Restrict File Station to specific folders |
| empty | Always-blocked folders |
|
| Cap on inline file reads |
Paths are validated before every File Station call. Traversal segments are rejected outright rather than resolved, because a resolved path can still escape an allowlist through a symlink on the NAS.
Tools that can never succeed under the current policy are hidden from the tool list rather than advertised and then refused, so the model does not keep retrying them.
Layer 3 — the transport. Set SYNOLOGY_MCP_TOKEN and every HTTP client
must send Authorization: Bearer <token>.
Suggested rollout
Read-only. Defaults as shipped. Confirm the tools see what you expect.
Scoped writes. Set
SYNOLOGY_READONLY=falseandSYNOLOGY_ALLOWED_PATHSto one or two working folders.Operations. Enable delete, system control or the generic bridge only once you trust the setup.
Configuration
Copy .env.example to .env and fill it in. SYNOLOGY_URL, SYNOLOGY_USER
and SYNOLOGY_PASSWORD are required; everything else has a safe default.
If DSM uses a self-signed certificate, set SYNOLOGY_INSECURE_TLS=true. This
is scoped to this client's connection pool rather than disabling TLS
verification for the whole process.
Running
Docker Compose
cp .env.example .env
$EDITOR .env
docker compose up -d --build
docker compose logs -fThe container binds to 127.0.0.1:3020 by default so only a local reverse
proxy can reach it. Override with SYNOLOGY_HOST_BIND and
SYNOLOGY_HOST_PORT.
Local stdio
npm install
npm run build
SYNOLOGY_MCP_TRANSPORT=stdio node dist/index.jsReaching a NAS that sits behind your home router
A hosted MCP server cannot dial into a home LAN directly. Rather than
port-forwarding DSM to the public internet, put both machines on a private
overlay network and point SYNOLOGY_URL at the overlay address:
Tailscale — install on the NAS and the host running this server, then use the NAS's tailnet address. Simplest option, no router changes.
WireGuard — a manual tunnel if you already run one.
frp / Cloudflare Tunnel — a reverse tunnel initiated from the NAS.
Only the MCP server needs to reach DSM. DSM itself stays unexposed.
Endpoints
Path | Purpose |
| MCP Streamable HTTP endpoint |
| Liveness, active sessions, exposed tool count, active policy |
/healthz reports the policy in force, so the running security posture is
auditable without reading the container environment.
Behaviour worth knowing
Session renewal. DSM invalidates sessions on idle timeout, duplicate login and reboot. The client detects codes 106, 107 and 119, re-authenticates once and replays the call, so this never surfaces as a tool failure.
API discovery. Endpoint paths and version ranges are read from
SYNO.API.Infoat runtime and cached, so the same build works across DSM 6 and DSM 7 and against APIs that moved between CGI handlers.Background tasks. Copy, move, delete, compress, extract, folder size and checksum all run asynchronously on the NAS. Each tool polls to completion instead of returning a task id, and reports partial progress if the timeout elapses.
Error messages. DSM returns numeric codes inside a 200 OK body, and the same number means different things per API family. Codes are translated against the correct table and phrased as something you can act on.
Reference
Built against Synology's published File Station API, Download Station API
and DSM Login Web API guides, plus runtime discovery via SYNO.API.Info.
License
MIT
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
- Alicense-qualityDmaintenanceA comprehensive MCP server providing 35 tools for monitoring and managing multiple Syncthing file synchronization instances. It enables users to track sync status, manage device connections, and modify folder configurations through natural language commands.Last updated1MIT
- AlicenseAqualityCmaintenanceMCP server for Synology NAS — modular, secure (2FA-ready), permission-tiered. File management and beyond.Last updated5Apache 2.0
- AlicenseAqualityBmaintenanceSelf-hosted MCP server that exposes Synology Drive, Spreadsheet, MailPlus, and Calendar as structured tools for AI agents, enabling file, spreadsheet, email, and calendar management via natural language.Last updated3958MIT
- AlicenseBqualityAmaintenanceMonitor and manage a Synology DSM 7 NAS from any MCP client — and build live dashboards right inside the chat.Last updated713MIT
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
A basic MCP server to operate on the Postman API.
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/Mrquj/mcp-server-synology'
If you have feedback or need assistance with the MCP directory API, please join our Discord server