mcp-synology
Provides tools for monitoring and inspecting a Synology NAS running DSM 7. It can query system health, storage volumes and disk health, network configuration, installed packages and updates, hardware and power settings, Cloud Sync progress and logs, Task Scheduler tasks and run history, Log Center logs, DSM notifications, and files and shared folders. It is read-only by default, with optional write permission to pause and resume Cloud Sync connections.
Click on "Deploy 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-synologyIs my cloud sync finished, and how long is left?"
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-synology
Ask your AI assistant about your Synology NAS. This is an MCP server that lets Claude (or any MCP client) check your NAS's health, storage, Cloud Sync progress, scheduled tasks, logs and files, in plain language.
"Is my cloud sync finished? How long is left?" "Did last night's backup task succeed?" "Any disk or RAID warnings this month?" "Who failed to log in over SSH last week?" "What's in /media/film?"
It is read-only by default. Actions that change anything are switched off unless you turn them on.
Requirements
A Synology NAS running DSM 7. Developed and tested against DSM 7.3; other DSM 7 releases are untested.
uv, which provides
uvxand fetches Python and everything else automatically.A DSM user account. See Choosing an account.
Related MCP server: Synology_MCP
Setup
You need four details: your NAS's address, the DSM port, and a username and password.
The port is the one you use to open DSM in a browser: 5001 for HTTPS by default, or 5000 for HTTP. If you changed it, it's under Control Panel → Login Portal → DSM.
Claude Code
claude mcp add synology \
-e SYNOLOGY_HOST=192.168.1.10 \
-e SYNOLOGY_PORT=5001 \
-e SYNOLOGY_USER=your-user \
-e SYNOLOGY_PASSWORD='your-password' \
-- uvx --from git+https://github.com/danjam/mcp-synology mcp-synologyAdd -s user to make it available in every project. Run /mcp inside Claude Code to check that it connected.
Claude Code, per project (.mcp.json)
To share the server with everyone working in a project, put a .mcp.json file in the project root. Claude Code expands ${VAR} from your environment, so credentials stay out of the file:
{
"mcpServers": {
"synology": {
"command": "uvx",
"args": ["--from", "git+https://github.com/danjam/mcp-synology", "mcp-synology"],
"env": {
"SYNOLOGY_HOST": "192.168.1.10",
"SYNOLOGY_PORT": "5001",
"SYNOLOGY_PERMISSION": "read",
"SYNOLOGY_USER": "${SYNOLOGY_USER}",
"SYNOLOGY_PASSWORD": "${SYNOLOGY_PASSWORD}"
}
}
}
}Set SYNOLOGY_USER and SYNOLOGY_PASSWORD in your shell profile. Claude Code asks you to approve a project's servers the first time.
Claude Desktop and other MCP clients
Add this to your client's MCP configuration (for Claude Desktop: Settings → Developer → Edit Config):
{
"mcpServers": {
"synology": {
"command": "uvx",
"args": ["--from", "git+https://github.com/danjam/mcp-synology", "mcp-synology"],
"env": {
"SYNOLOGY_HOST": "192.168.1.10",
"SYNOLOGY_PORT": "5001",
"SYNOLOGY_USER": "your-user",
"SYNOLOGY_PASSWORD": "your-password"
}
}
}
}Restart the client after saving.
Self-signed certificate
If your NAS uses DSM's default self-signed certificate rather than one from a certificate authority, connecting fails with a certificate verification error. Add:
SYNOLOGY_VERIFY_SSL=0This skips the certificate check. Only do that on a network you trust.
Settings
Setting | Default | What it does |
| (required) | NAS IP address or hostname |
| (required) | DSM username |
| (required) | DSM password |
|
| DSM port |
|
|
|
|
|
|
|
|
|
Permissions
Level | What the assistant can do |
| Look only. Nothing on the NAS is changed. |
| Also pause and resume Cloud Sync connections. |
Tools above your chosen level are hidden from the assistant entirely, so it can't call them by mistake. A destructive level is reserved for future tools that delete data or shut the NAS down. It needs both SYNOLOGY_PERMISSION=destructive and SYNOLOGY_ALLOW_DESTRUCTIVE=1, and no tools use it yet.
Choosing an account
Task Scheduler, Log Center and notifications show system-wide information, including tasks that run as root. They have been tested only with an account in the
administratorsgroup. With a regular account they may fail or show less.Two-factor authentication isn't supported. An account with 2FA enabled can't log in. If you use 2FA on your own account, create a separate account for the assistant.
A dedicated account also makes the assistant's sign-ins easy to tell apart from yours in DSM's connection log.
What it can see
Area | You can ask about |
System | Model, DSM version, uptime, temperature, CPU and memory load, disk and network activity |
Storage | Volume usage and free space, drive health (status, SMART, temperature) |
Network | Hostname, gateway, DNS servers, and each network port's IP address, MAC, link speed and MTU |
Packages | Installed packages, whether each is running, and available updates from Package Center, including third-party sources you've added such as SynoCommunity (flagging security releases) |
Hardware & power | Disk hibernation timers, recent disk wake-ups, hibernation debug mode, fan mode, power schedule, restart after power loss, Wake-on-LAN and UPS |
Cloud Sync | Each connection's status, files still to sync, cloud quota, sync folders, a speed and time-remaining estimate, live transfers, and the full sync log (filter by upload, download or delete, or by file name) |
Task Scheduler | Every scheduled task with its schedule, next run and last result, and the run history of any task, e.g. "did my nightly task succeed every night this week?" |
Log Center | System log (hardware, disks, network, updates), connection log (sign-ins and failed logins) and SMB file-access log, filtered by severity, keyword and date range |
Notifications | DSM's desktop notifications, e.g. security advisories and available updates |
Files | Shared folders, folder listings and file details, with sizes and dates |
Times are shown in the NAS's own time zone, with the zone named in each answer.
Troubleshooting
Error | Fix |
| Set the listed settings in your MCP client's configuration. |
| Check the username and password. Repeated failures can trigger DSM's auto-block (Control Panel → Security → Protection). |
| The account uses 2FA, which isn't supported; use an account without it. |
| DSM's auto-block has blocked your computer. Unblock it under Control Panel → Security → Protection. |
| Self-signed certificate: set |
| Wrong host or port, or HTTPS/HTTP mismatch. Use the port you use in the browser, and set |
Limitations
Task Scheduler shows each run's result (success or exit code) but not its output. DSM 7.3 doesn't expose that through its API.
Filtering logs by severity reads up to 20,000 entries per request, so rare entries in a very large log may take several requests to reach.
DSM doesn't report whether a disk is spun down right now. You can see when disks last woke up, and the hibernation settings.
The hibernation debug log itself isn't readable through DSM's API, only whether debug mode is on.
Only one NAS per server entry. Add another entry with a different name for a second NAS.
Acknowledgements
Built on synology-api and the official MCP Python SDK.
License
MIT. See LICENSE.
Available Tools
16 toolscloudsync_activityBRead-only
Cloud Sync live activity: files transferring right now (with progress) and the latest completed changes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context — that it surfaces in-progress transfers with progress and recent completed changes — but omits details like auth needs, rate limits, or how the limit interacts with the two result sets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. The resource is named first and the two result categories follow immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only activity tool with an output schema and annotations covering safety, the description is nearly complete on purpose. However, it leaves the boundary with cloudsync_status and cloudsync_logs unresolved, which matters for tool selection in a crowded sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the single parameter 'limit' is never mentioned in the description. Its name is intuitive, but it is unclear whether the limit applies to in-progress transfers, completed changes, or both, so the description does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope — live Cloud Sync activity covering in-progress transfers with progress and latest completed changes. It does not name or differentiate from sibling tools like cloudsync_status or cloudsync_logs, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The phrase 'live activity' implies real-time monitoring, but the description never mentions alternatives or conditions that select this tool over cloudsync_status or cloudsync_logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudsync_logsARead-only
Cloud Sync log history for one connection, newest first: what was uploaded, downloaded or deleted, and errors. Filter by action or keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| action | No | any | |
| offset | No | ||
| conn_id | Yes | ||
| keyword | No | case-sensitive substring of the path |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior not in the annotations: results are ordered 'newest first' and include deletions and errors. It does not mention pagination behavior despite limit/offset parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the resource and scope before the return content and filtering. No filler, nothing repeated from the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is rightly omitted, and the annotations cover the safety profile. The description completes the picture on ordering and content, with only minor gaps around pagination and the required conn_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must carry weight. It does explain the intent of the action and keyword filters ('what was uploaded, downloaded or deleted', 'keyword'), but conn_id, limit and offset get no semantic help, and the enumerable action values are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (Cloud Sync log history) scoped to one connection, and enumerates the content: uploads, downloads, deletes and errors. This distinguishes it from siblings like cloudsync_status and cloudsync_activity, though it never names those siblings to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trailing clause 'Filter by action or keyword' implies when the tool is useful, but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as cloudsync_activity or logcenter_logs for related log data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudsync_statusARead-only
Cloud Sync overview (Dropbox, Google Drive, OneDrive, S3, ...): per connection status, files left, cloud quota, sync tasks, throughput and ETA. Start here for "is the sync done / how long left".
| Name | Required | Description | Default |
|---|---|---|---|
| estimate_rate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, covering the safety and scope profile. The description adds real value by disclosing the breadth of data returned (multi-provider, per-connection, quota, ETA), but says nothing about cost, latency, refresh cadence, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: the first front-loads the resource and the data inventory, the second front-loads the use case. No filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value formatting need not be restated, and the description correctly focuses on scope plus the decision cue for when to call it. Only the undocumented estimate_rate flag keeps it from being fully complete for an agent with no prior context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter estimate_rate (boolean, default true) is never explained. The description's mention of "throughput and ETA" hints at what rate estimation affects, but it does not define the flag or how setting it false changes the response. With only one optional parameter the practical impact is limited.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (Cloud Sync overview) and enumerates exactly what the tool returns: per-connection status, files left, quota, tasks, throughput and ETA. The provider list (Dropbox, Google Drive, OneDrive, S3) further scopes it and separates it from siblings like cloudsync_activity and cloudsync_logs, which are narrower log/activity views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Start here for 'is the sync done / how long left'" is an explicit entry-point recommendation that tells the agent which question this tool answers and implies it precedes the detail-oriented siblings. It falls short of naming an alternative or a when-not condition, so it stops at clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dsm_notificationsBRead-only
DSM desktop notifications, newest first (e.g. Security Advisor, package and DSM updates). Titles are DSM message ids; params are their values.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds the return ordering (newest first) and the unusual shape note that titles are DSM message ids and params are their values, which is genuinely extra context; it says nothing about volume, pagination, or retention limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler, and the core content (what is listed, newest first) is front-loaded before the shape detail. The id/params sentence is terse but somewhat cryptic, slightly reducing clarity for the space it occupies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one optional param, an output schema that carries return shape, and annotations that carry safety. The description covers what is returned and ordering, but leaves limit behavior and any filtering/recency scope unexplained, so it is adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (limit, default 20, range 1-200) with 0% schema description coverage, so the schema documents only its type and bounds. The phrase 'newest first' indirectly tells the agent that limit truncates from the newest end, but no meaning is added about what the limit applies to or how to page deeper.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (DSM desktop notifications) and states the ordering (newest first) plus concrete content examples (Security Advisor, package and DSM updates). It implicitly distinguishes itself from the sibling log tools (logcenter_logs, cloudsync_logs) by scoping to desktop notifications, though it never explicitly contrasts them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and no exclusions. With siblings like logcenter_logs and cloudsync_logs that also surface messages, an agent gets no signal about which one answers a given question, and nothing indicates whether filtering or paging is expected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filestation_infoCRead-only
Size, modified time and real volume path for specific files or folders.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, covering the safety profile. The description adds only a scope phrase ('specific files or folders') and gives no behavioral context such as what happens for nonexistent paths, whether paths are absolute or DSM-relative, or whether missing entries are omitted or errored.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no filler, and the most useful information (what metadata is returned) is front-loaded. It is a sentence fragment rather than a structured description, which slightly limits readability but not economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required parameter) and an output schema exists, so the description need not enumerate return values; it sensibly names the fields returned. However, it omits path format conventions and any usage framing, leaving the agent to guess how to construct the input and when this tool is the right choice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'paths' parameter, so the description must carry the load but does not: it never says paths are an array of multiple path strings, what format they take, or whether wildcards are accepted. Saying 'specific files or folders' only hints that both file and folder paths are valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the concrete payload (size, modified time, real volume path) and the target resource (specific files or folders), so an agent knows this is a metadata lookup rather than a listing. The verb is implicit ('info') and it never names filestation_list or filestation_list_shares, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no indication of when to prefer this over filestation_list, and no note on prerequisites such as the shares needing to be mounted. The agent must infer usage purely from the output fields mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filestation_listBRead-only
List a folder's contents with size and modified time.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | folder path, e.g. "/media/film" | |
| limit | No | ||
| offset | No | ||
| pattern | No | glob, e.g. "*.jpg" | |
| sort_by | No | name | |
| sort_direction | No | asc |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that results include size and modified time; it says nothing about pagination behavior despite limit/offset parameters, nor about failure modes for invalid paths.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the action is front-loaded. It is efficient, though its brevity is partly under-specification rather than ruthless editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and annotations cover safety. However, for a 6-parameter listing tool with 33% schema coverage, the description omits pagination semantics and sorting behavior, leaving gaps an agent would need before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% across 6 parameters: only path and pattern are documented (and pattern's glob meaning is better explained in the schema). The description explains none of limit, offset, sort_by, or sort_direction, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('a folder's contents') and hints at returned fields (size, modified time). It does not name or differentiate itself from siblings like filestation_list_shares, so an agent must infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as filestation_list_shares or filestation_info, and no stated prerequisites (e.g. path format, permissions). The only clue is the path example buried in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hardware_powerBRead-only
Disk hibernation timers (internal and USB disks), hibernation debug settings, recent disk wake-ups from the system log, fan mode, power-on/off schedule, restart after power loss, Wake-on-LAN and UPS status. DSM does not report whether a disk is currently spun down.
| Name | Required | Description | Default |
|---|---|---|---|
| wake_events | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the bar is lower, and the description adds a genuinely useful negative capability: DSM does not report whether a disk is currently spun down. That tells the agent not to chase a value that will never be returned, which is real behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no padding: a dense feature inventory followed by the caveat. It is front-loaded on scope, and the trailing limitation sentence earns its place, though the comma-separated inventory is slightly harder to scan than a structured list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the feature enumeration is arguably redundant with the return structure and the description is not obligated to explain return values. What is missing for an aggregating multi-section tool is any selection guidance and any parameter documentation, leaving it adequate but thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter wake_events is never named or explained. The phrase 'recent disk wake-ups from the system log' gestures at the parameter's subject but gives no hint that it is a count, that it defaults to 10, or that 0 is the floor — an agent cannot tell whether 0 means 'none' or 'unbounded'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the concrete resources covered (hibernation timers, fan mode, power schedule, WoL, UPS status), which makes the tool's domain clear and separates it from siblings like storage_status and system_utilization. It never states a verb ('retrieves'/'sets'), so the agent has to infer this is a read, but the resource scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no alternative named; the agent is not told whether this belongs alongside storage_status or system_utilization. The only usage-adjacent content is the caveat that DSM does not report whether a disk is spun down, which is a scope limitation rather than a selection cue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logcenter_logsBRead-only
DSM Log Center, newest first. system: hardware, disk/RAID, network link, updates, services. connection: sign-ins and failed logins (DSM, SSH, SMB, NFS...). smb: SMB file operations (who, IP, path).
| Name | Required | Description | Default |
|---|---|---|---|
| log | No | system | |
| level | No | any | |
| limit | No | ||
| since | No | "24h", "7d", "30m" or "YYYY-MM-DD[ HH:MM]" (NAS local time) | |
| until | No | same formats as since; a bare date includes that whole day | |
| offset | No | ||
| keyword | No | substring of the message (smb: of the path) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint, destructiveHint, and openWorldHint, so the safety profile is covered. The description adds the meaningful ordering behavior (newest first), which is not in the annotations or schema, but says nothing about pagination semantics, volume limits, or that openWorld means log content is untrusted/user-influenced data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short fragments, front-loaded with the resource and ordering. Terse and scannable, though the category clauses are compressed to the point of near-telegraphic style.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values need not be explained, and annotations cover safety. However, with seven parameters, two enums, and zero required fields, the description should at least clarify default behavior (system log, level any, 50 entries) and how since/until interact with offset for paging. Category definitions alone leave invocation details thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43%, so since/until and keyword have help text but log, level, limit, and offset do not. The description compensates by enumerating the values of the log parameter and describing what each category contains (hardware, sign-ins, SMB paths), which is genuine added meaning beyond the bare enum. level, limit, and offset remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (DSM Log Center) and the ordering (newest first), and the three log categories clearly enumerate what can be retrieved. It does not name an alternative log tool, but among the siblings the only close one is cloudsync_logs, whose distinction (cloud sync vs. DSM system logs) is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given. The description does not say how this differs from cloudsync_logs, dsm_notifications, or taskscheduler_runs, so an agent must infer routing from category names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_configARead-only
Network setup (static configuration): hostname, default gateway, DNS servers, and each interface's IP/subnet, MAC, link status, negotiated speed/duplex and MTU. Live throughput is in system_utilization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds meaningful context beyond that by clarifying the data is a static configuration snapshot rather than a live reading and by scoping which interface attributes are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and its scope, followed by the single most useful redirection. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation; the description instead supplies the scoping (static config vs live metrics) that an agent needs to pick correctly among the status siblings. Complete for a zero-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. Nothing in the description is needed to explain parameter usage, and it introduces no misleading parameter-like wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (static network configuration) and enumerates exactly what it covers: hostname, gateway, DNS, per-interface IP/subnet, MAC, link status, speed/duplex, MTU. The parenthetical '(static configuration)' disambiguates it from live-metric tools, and it explicitly names the sibling system_utilization as the place for throughput.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear routing signal: use system_utilization for live throughput, this tool for static configuration. There is no explicit statement of when this tool is preferred over e.g. system_info or hardware_power, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
packagesARead-only
Installed packages with version, running/stopped status and available updates (new version, and whether it is a security release), checked against Package Center's catalogue and any third-party feeds configured there. Packages in neither (system components, manual installs) show update_to "not in catalogue".
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: updates are validated against Package Center's catalogue plus configured third-party feeds, and it explains the edge case where update_to is reported as 'not in catalogue'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler; the scope (installed packages + fields) is front-loaded before the catalogue-checking caveat. The second sentence is information-rich but runs long, which slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only status tool with an output schema already defining the return shape and annotations covering the safety profile, the description covers everything needed: what is listed, where update data comes from, and how the 'not in catalogue' case is represented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description sensibly spends its budget explaining the returned fields and their provenance instead of parameter syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely (installed packages) and the exact fields returned: version, running/stopped status, and available updates including security-release flags. This clearly separates it from siblings like storage_status or cloudsync_status, though it uses a noun phrase rather than an explicit verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource ('installed packages'), so an agent can infer this is the tool for package state. However, there is no explicit when-to-use guidance, no statement of prerequisites, and no routing to or away from any alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storage_statusBRead-only
Disk and volume health: volume usage and free space; drive model, status, SMART, temperature.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description contributes the scope of reported metrics, but says nothing about auth requirements, cost, or freshness of the data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the broad category front-loaded ahead of the metric list. Slightly telegraphic (colon-separated fragments) but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described here, and with zero parameters there are no input semantics to cover. The description adequately frames what diagnostics this read-only tool surfaces for its complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; baseline 4 applies. It does not need to explain inputs at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (disk/volume health) and enumerates the concrete data it exposes: usage, free space, drive model, status, SMART, temperature. That lets an agent separate it from siblings like system_utilization and hardware_power, though it reads as a noun phrase with no explicit verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to call this versus system_utilization, system_info, or hardware_power, and no prerequisites or exclusions. The agent must infer usage purely from the topic label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_infoARead-only
NAS hardware and DSM version: model, CPU, RAM, uptime, temperature, crash/upgrade flags, USB devices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safe-read profile needs no restating. The description adds the field inventory, which is useful scope context, but says nothing about permissions, rate limits, or how the data is refreshed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the resource and then lists contents without a word of filler. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values, and annotations cover the safety profile. The field list gives enough scope for an agent to know what it will receive, with only minor gaps around caching/refresh behaviour.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline for this dimension is 4. There is nothing for the description to clarify about inputs, and the enumerated fields relate to outputs rather than parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (NAS hardware and DSM version) and enumerates exactly which fields it returns: model, CPU, RAM, uptime, temperature, crash/upgrade flags, USB devices. It is clear what the tool does, though it does not explicitly differentiate itself from siblings like system_utilization or hardware_power.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative sibling is named. The usage is only implied by the resource name, leaving the agent to infer how this differs from system_utilization or hardware_power.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_utilizationARead-only
Live load: CPU %, load average, memory, per-disk and per-network-interface throughput.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds meaningful context that this is live/current load rather than historical or aggregated data, but says nothing about sampling behavior, cost, or whether values are point-in-time vs averaged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key qualifier 'Live' front-loaded and an enumerated metric list. Every clause carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and with no parameters there is no input to document. Annotations cover safety, so the only real gap is the absence of guidance on how this relates to sibling status tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it does not confuse matters by implying optional filters that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact metrics returned (CPU %, load average, memory, per-disk and per-network-interface throughput) and the word 'Live' signals a real-time snapshot. It distinguishes this from static siblings like system_info, though it omits an explicit verb like 'retrieve' and never names those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives such as system_info, storage_status, or network_config, all of which overlap in subject matter. The agent must infer that this is the real-time monitoring tool and the others are static configuration/state tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskscheduler_runsARead-only
Run history of one scheduled task, newest first: start time, duration and exit result. Also shows the task's action (the command, for script tasks).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| task_id | Yes | from taskscheduler_tasks |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. On top of that the description discloses useful behavior: results are ordered 'newest first', and that the action/command field only applies to script tasks. It does not mention pagination or rate behavior, but it clears the lower bar set by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly written sentence with the core deliverable front-loaded ('Run history of one scheduled task, newest first') and a useful secondary clause about the action field. No filler or restated boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed, and the tool's complexity is low with just two parameters. The description covers subject, ordering and content well; the only real gap is any hint about limiting result size, which is minor for a read-only history lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: task_id is documented as coming 'from taskscheduler_tasks', but 'limit' (default 10, max 200) carries no description. The prose says nothing about limiting or paging, so it fails to compensate for the coverage gap, and 'newest first' does not explain how to fetch older entries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns the run history of one scheduled task, with the fields returned named (start time, duration, exit result, action). It is clearly distinct from the sibling taskscheduler_tasks (which lists tasks), though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description says the history is for 'one scheduled task', so the agent can infer it needs a task_id from the task list. There is no explicit when-to-use statement, no mention of the taskscheduler_tasks sibling, and no guidance on when to prefer taskscheduler_runs over logcenter_logs or cloudsync_logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taskscheduler_tasksARead-only
DSM Task Scheduler: every scheduled and event-triggered task (including root's) with schedule, next run and the last run's result and duration. Use to confirm a nightly job (e.g. a backup) succeeded.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful scope disclosure — that root's tasks are included, i.e. privileged entries will appear in the results. It says nothing about auth requirements or result volume, so it is a modest addition rather than a rich one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: the first defines the resource and payload, the second front-loads the practical use case. No filler, no repetition of the title, and the scope statement comes before the guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, a full annotation set and an output schema that carries the return structure, the description only needs to establish scope and intent — which it does. The missing piece is disambiguation from taskscheduler_runs, which an agent choosing between the two task-scheduler tools would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies. The description correctly avoids inventing filtering arguments that the empty schema does not support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (every scheduled and event-triggered task, including root's) and enumerates what each entry carries: schedule, next run, last run result and duration. That is far more than a restated name. It stops short of differentiating itself from the sibling taskscheduler_runs, which an agent would likely confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete selecting scenario — 'Use to confirm a nightly job (e.g. a backup) succeeded' — which tells the agent when this tool is the right call. It offers no exclusions, prerequisites, or pointer to taskscheduler_runs for run-level history, so it falls short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v0.1.0- First observed
cloudsync_activity - First observed
cloudsync_logs - First observed
cloudsync_status - First observed
dsm_notifications - First observed
filestation_info - First observed
filestation_list - First observed
filestation_list_shares - First observed
hardware_power - First observed
logcenter_logs - First observed
network_config - First observed
packages - First observed
storage_status - First observed
system_info - First observed
system_utilization - First observed
taskscheduler_runs - First observed
taskscheduler_tasks
TDQS
Scored across 16 tools
Most tools target clearly distinct resources: system_utilization vs system_info vs storage_status are well separated, and taskscheduler_tasks vs taskscheduler_runs are distinct. The main risk is the cloudsync trio (status/activity/logs) and the filestation pair (list_shares vs list), though the descriptions resolve these by scope (overview vs live vs history; top-level vs folder contents).
All names use lowercase snake_case with a consistent <domain>_<subject> pattern (cloudsync_status, taskscheduler_runs, filestation_list_shares). Minor deviation: 'packages' has no domain prefix and verb-style varies (status/utilization/info), but overall it is predictable and readable.
16 tools is slightly heavy but justified by the breadth of NAS domains covered (cloud sync, storage, system, scheduler, logs, network, packages, power, file station). Each tool maps to a real distinct area, so nothing is obviously redundant or trivial.
The surface is thorough for monitoring/inspection but read-only: no tools to create/update scheduled tasks, manage cloud sync connections, or perform file operations (upload/download/delete) despite filestation listing tools existing. Coverage of the observation domain is good, but write/lifecycle operations are notable gaps.
Maintenance
Related MCP Connectors
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
Connect Exact Online to your AI assistant via MCP. Manage Exact Online with natural language.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to manage Synology NAS devices with file operations (create, delete, move, search) and Download Station control through secure authentication and session management.132 PyPI228MIT
- 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
- FlicenseAqualityBmaintenanceMCP 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-
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to inspect Synology NAS system, storage, and utilization, and manage Docker containers via the Synology Web API with automatic session handling.-