mcp-synology
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SYNOLOGY_HOST | Yes | NAS hostname or IP | |
| SYNOLOGY_PASSWORD | Yes | DSM password | |
| SYNOLOGY_USERNAME | Yes | DSM username |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_sharesA | List all shared folders on the NAS: the top-level folders every file path starts with ( |
| list_filesA | List the files and folders directly inside one folder (one level; subfolders' contents aren't listed). To find files anywhere below a folder by name, extension, size or date, use search_files. Folders show no size; for a folder's total, use get_dir_size. DSM sorts folders and files separately: ascending lists folders first, descending files first. A long listing is paged, and the reply says which offset is next. |
| list_recycle_binA | List what's in one shared folder's recycle bin: the files and folders deleted from that share. list_shares shows which shares have a bin; for files that weren't deleted, use list_files. Without pattern, only the bin's top level is listed, and DSM sorts folders and files separately, as in list_files. With pattern, the bin is searched, subfolders included (up to 200 folders and 5,000 items; the reply says when it stops early), and each match shows its path in the bin. Modified is the file's own time, not when it was deleted. |
| search_filesA | Search a folder and everything below it for files and folders by name, extension, size or modified date. For what's in one known folder, use list_files; for how much space a folder uses, use get_dir_size, not a search. With no filter, it returns everything under the folder, up to |
| get_file_infoA | Get detailed metadata for files or folders whose paths you know: size, owner, timestamps, permissions and real path on the volume. To see what's in a folder, use list_files; for a folder's total size, use get_dir_size. A path that doesn't exist is reported as not found. |
| get_dir_sizeA | Calculate the total size of a folder, including everything below it: total size, file count and folder count. This is the tool for 'how much space does X use' questions. Counts only what this DSM user can read: a subfolder it can't read is left out without notice. A very large tree can take minutes, and the call gives up after a timeout (120 s unless the server is configured otherwise). |
| download_fileA | Download a NAS file to a folder on this machine (where this server runs). A folder downloads as a ZIP of it, saved as |
| create_folderA | Create one or more folders, each given as a full path starting with its shared folder ( |
| renameA | Rename a file or folder in place. If the new name is already taken in that folder, DSM refuses and nothing is replaced. To move something to another folder, use move_files. |
| copy_filesA | Copy files or folders into a destination folder; a folder is copied with everything in it, and the sources stay in place. To move instead, use move_files. |
| move_filesA | Move files or folders into a destination folder; a folder moves with everything in it, and the sources are removed. To keep the sources, use copy_files. |
| delete_filesA | Delete files or folders. A folder is deleted with everything in it ( |
| upload_fileA | Upload one file from this machine (where this server runs) to a NAS folder; a local folder can't be uploaded. An existing NAS file of the same name is not replaced unless |
| restore_from_recycle_binA | Restore deleted files or folders from one shared folder's recycle bin. Check what's there first with list_recycle_bin: every path must be in that share's bin, or nothing is restored. Without |
| file_taskA | Follow up on a delete, copy, move or restore that is still running on the NAS. Those tools hand off long operations and return a handle such as |
| list_downloadsA | List download tasks in the Download Station queue. Returns a table with id, title, type (bt/http/ftp/nzb), status, size, progress%, download and upload speed, ETA, and completion time. Paged (25 by default); the footer gives the true total and the next offset. A status filter or sort covers the whole queue, not just one page: sort_by=completed with limit=1 gives the most recently finished task. Accounts that are not Download Station managers see only their own tasks (the output says so), so an empty list does not mean the NAS is idle. |
| get_download_infoA | Get detailed information for a specific download task: detail (status, destination, URI), transfer (size downloaded/uploaded, speed, peers), files (per-file selection for BT), trackers (BT only), peers (BT only). Use list_downloads first to find the task_id. For totals across all tasks, use get_download_stats; for settings, use get_download_config. |
| get_download_statsA | Get current Download Station throughput statistics: total download and upload speed across all tasks, plus eMule download/upload speed when the eMule service is enabled. For per-task speeds use list_downloads. |
| get_download_configA | Get Download Station global configuration: default destination, BT/HTTP/FTP/NZB/eMule max speeds, eMule and auto-unzip state. For accounts that are not Download Station managers DSM returns a per-user view (labeled as such), not the NAS-wide settings. Use get_schedule for the weekly plan. |
| get_scheduleA | Get the Download Station schedule: whether it is enabled, the limited-speed (alt) download/upload rates, and the weekly plan as a 7-day × 24-hour grid where each hour is full speed, limited, or no download. The weekly plan needs a Download Station manager/admin account; otherwise only the flags are shown. |
| create_downloadA | Create one or more download tasks, from URIs or from a local .torrent / .nzb file. |
| delete_downloadA | Remove one or more download tasks. A deleted task can't be restored (its source URL is gone with it), so name the tasks and confirm with the user before deleting. Files from finished tasks are always kept. For unfinished tasks the partial data is discarded (irreversible); don't rely on |
| pause_downloadA | Pause one or more download tasks. When some of the tasks can be paused, an already-paused or finished one is refused for its id (error 405) or shown as |
| resume_downloadA | Resume one or more paused download tasks. An active or finished task is refused for that id (error 405), while the others are resumed. list_downloads with status_filter= |
| edit_downloadA | Edit task parameters. Currently supports |
| set_download_configA | Set Download Station global configuration. All parameters are optional: only the fields you pass are updated. The rate fields require a Download Station manager/admin account: DSM silently ignores them from other accounts, so the tool refuses them. Any user can set |
| set_scheduleA | Set the Download Station schedule; get_schedule shows the current one. All parameters are optional: only what you pass is updated. |
| get_system_infoA | Get everything DSM reports about the NAS. Every account gets the model, serial number, DSM version, RAM, uptime, the NAS's local time and its code page, and the temperature where the NAS has a sensor. A DSM administrator account also gets the CPU, time zone with the current UTC offset, NTP server, firmware date, DSM's update-ready and crash flags, eSATA and attached devices, the network-card flag on DSM 7.2.2 and later, and redundant power on models that report it; any other account gets a line saying so. Use this to identify the NAS, check its basic health or tell the time on it. For live CPU, memory, disk and network load, use get_resource_usage. |
| get_resource_usageA | Get live resource utilization: CPU load, memory usage, disk I/O, and network throughput. Needs a DSM administrator account; any other account gets permission_denied. Use this to check if the NAS is under heavy load before starting expensive work on it. For the model, firmware, temperature and uptime, use get_system_info. |
| list_photosA | List or search photos and videos in Synology Photos, newest first by default, with the total. folder, person and tag combine with the date, type, rating and favorite filters; album, place, concept and keyword each work alone. Each row has the item's id, filename, taken time, type, size and folder; pass the ids to get_photo for full details or to download_photos to save the files. For files outside Photos, use File Station's list_files when that module is enabled. |
| list_photo_collectionsA | List one type of Synology Photos collection with ids and item counts: albums, albums shared with you, people, tags, places, concepts or folders. Use it to find the ids and names that list_photos filters by. Paged; name narrows the list by substring. |
| get_photoA | Get full details for Synology Photos items by id: filename, folder, taken time, size, resolution, rating, favorite (Photos 1.9.1+), description, tags, people, GPS location and address, and camera details, plus the full EXIF table with exif=true. Use it when list_photos' one-line rows aren't enough. IDs that don't exist are listed as not found. |
| download_photosA | Download Synology Photos items by id to a folder on this machine: the original files or JPEG previews, one file per item, named after the original. Only writes inside the allowed local folders, and never replaces an existing file unless overwrite=true. For files outside Photos, use File Station's download_file when that module is enabled. |
| photo_albumA | Create or change a Synology Photos album: create one (normal, or smart: filled automatically from a condition), rename it, add or remove items, set its cover, copy it, or replace a smart album's condition. The photos themselves never move. Personal space albums only. To delete albums use delete_photo_albums; to share one, photo_share_link. |
| photo_share_linkA | Share a Synology Photos album by link, change the link's public access, password, expiry and members, or stop sharing. A password or an expiry needs public view or download: Photos drops them on a link without public access, so they're refused there. Stopping keeps the link, and sharing again brings it back with its settings reset. Personal space albums only. |
| photo_folderA | Create or rename a folder in Synology Photos, or set its cover photo. A name the parent folder already has is refused. To copy or move folders use copy_photos / move_photos; to delete, delete_photo_folders. For folders outside Photos, use File Station's create_folder and rename when File Station write is enabled, or ask the user to do it in DSM. |
| tag_photosA | Add or remove tags on Synology Photos items. Photos writes tags into the original files and re-indexes them, so file dates and sizes change. A tag disappears once no item has it, so to delete a tag remove it from every item that has it (list_photos tag=...); to rename, add the new name to those items, then remove the old one. |
| edit_photoA | Edit Synology Photos items: rating, description, taken time (set or shift), rotation and favorite (Photos 1.9.1+). Pass only the fields to change; they apply to every id given. Photos writes these into the original files, so file dates and sizes change. Location can't be edited; for tags use tag_photos. |
| edit_personA | Change one person (a face-recognition group) in Synology Photos: rename them, hide or unhide them in the people list, or set their cover photo. To combine groups that are the same person, use merge_people. |
| photo_requestA | Manage Synology Photos photo requests: links that let anyone with the link upload files into one of your Photos folders. action: create (returns the link), list (every request with its passphrase and link), update, or delete (its link stops working). |
| merge_peopleA | Merge people (face-recognition groups) in Synology Photos that are the same person: every person in merge joins target, which keeps its id, and the merged people are gone. If any person isn't found, nothing is merged. This can't be undone, so confirm with the user first. To rename or hide one person, use edit_person. |
| delete_photo_albumsA | Delete Synology Photos albums (normal or smart) and their share links. The photos in them stay where they are, but the albums' selections, conditions and links can't be recovered. Confirm with the user first. To only take items out of an album, use photo_album action=remove; to delete the photos themselves, delete_photos. |
| upload_photosA | Upload photos or videos from this machine into a Synology Photos folder, optionally adding them to an existing album. Only reads files inside the allowed local folders. Starts no new file after the configured task timeout (30 s by default, at most 45 s) and lists the files not tried, to pass to another call. Photos indexes new items over the next seconds to minutes; until then their taken dates and previews may be missing. |
| copy_photosA | Copy Synology Photos items and/or whole folders into another folder, in the same space or the other one. Waits up to the configured task timeout (30 s by default); a longer copy keeps running on the NAS and the reply gives a handle for photo_task. With on_conflict=overwrite it replaces files at the destination. |
| move_photosA | Move Synology Photos items and/or whole folders into another folder of the same space, or from the personal space into Shared Space (Photos can't move out of Shared Space: copy, then delete). Waits up to the configured task timeout (30 s by default); a longer move keeps running on the NAS and the reply gives a handle for photo_task. With on_conflict=overwrite it replaces files at the destination. |
| photo_taskA | Follow up on a Synology Photos copy, move or delete that is still running. With a handle (photos:): action=status shows progress; action=stop stops it (it may then be partly done). Without a handle: lists this user's copy, move and delete tasks. action=clear removes finished tasks from that list. Don't poll in a loop: check when the user asks, or before doing something that depends on the result. |
| delete_photosA | Delete Synology Photos items (the files themselves) by id. They go to the recycle bin of the share that holds the space if it has one, otherwise they're gone. A large delete keeps running on the NAS and the reply gives a handle for photo_task. Confirm with the user first. To only take items out of an album, use photo_album remove. |
| delete_photo_foldersA | Delete folders in Synology Photos with everything in them (files and subfolders). They go to the recycle bin of the share that holds the space if it has one, otherwise they're gone. A large delete keeps running on the NAS and the reply gives a handle for photo_task. Confirm with the user first. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 48 tools
Most tools target clearly distinct actions and resources, and the descriptions include useful cross-references (e.g. list_files vs search_files vs get_dir_size; delete_photos vs delete_photo_albums vs delete_photo_folders). However, with 48 tools there is still some overlap an agent must resolve, such as copy_photos vs copy_files, photo_task vs file_task, and get_download_stats vs get_resource_usage vs get_download_info.
The set is overwhelmingly snake_case and uses a predictable verb_noun pattern (get_*, list_*, create_*, delete_*, copy_*, move_*, upload_*, download_*, edit_*, set_*). The main deviations are grouped noun-first tools like photo_album, photo_folder, photo_share_link, file_task and photo_task, plus the bare rename, but these remain readable and mostly consistent with resource grouping.
48 tools is too many for one MCP server and exceeds the practical range where an agent can reliably select among them. The server bundles three large domains (File Station, Download Station, and Synology Photos), each with many similar-sounding operations, which would be better split into separate servers or reduced with more action-parameterized tools.
The surface is extensive and covers core lifecycles well: file CRUD/search/upload/download/recycle bin, download task creation/pause/resume/deletion/config/schedule, and Photos listing/editing/album/folder/people/request operations. Some gaps remain, such as finer Download Station per-file controls, File Station permission/compression operations, and richer photo sharing beyond album links, but agents can work around most of them.