mcp-syncnology
Provides tools for controlling and monitoring a Synology NAS via the DSM Web API, including file operations, system information, storage utilization, backup tasks, download tasks, camera listing, and system logs.
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-syncnologywhat's the current CPU and memory 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.
mcp-syncnology
MCP server ที่เปิดให้ Hermes agent (หรือ MCP client อื่น ๆ) ควบคุม/ดูข้อมูล Synology NAS ผ่าน DSM Web API — ไม่ใช่ web scraping, เป็น API ทางการของ Synology ที่ล็อกอินด้วย username/password แล้วได้ session token (_sid) มาใช้เรียก endpoint อื่น ๆ ต่อ
โครงสร้าง
src/mcp_syncnology/
config.py # อ่าน env: SYNOLOGY_BASE_URL, SYNOLOGY_USERNAME, SYNOLOGY_PASSWORD, ...
client.py # SynologyClient: login/session + wrapper รอบ DSM API แต่ละตัว
server.py # FastMCP server + tool definitionsclient.py มี call(api, method, version, **params) กลางที่ resolve path/version จริงของแต่ละ API ผ่าน SYNO.API.Info เอง (ไม่ hardcode path) และ auto re-login ถ้า session หมดอายุ — เพิ่ม DSM API ตัวใหม่ได้ง่าย ๆ โดยเรียก self.call("SYNO.xxx", "method", ...)
Related MCP server: synology-office-mcp
ความปลอดภัย
ห้ามใส่รหัสผ่านจริงในโค้ดหรือแชทเด็ดขาด — เก็บไว้ใน
.env(ไฟล์นี้อยู่ใน.gitignoreแล้ว) เท่านั้นถ้า DSM account เปิด 2FA ไว้ ต้องใส่
SYNOLOGY_OTP_CODEต่อการ login หนึ่งครั้ง (code หมดอายุเร็ว) — แนะนำให้สร้าง local DSM account แยกสำหรับ automation นี้แล้วปิด 2FA เฉพาะ account นั้น หรือใช้ Application Password ถ้า DSM version รองรับTool
syncnology_delete_pathเป็น irreversible action ต้องเรียกด้วยconfirm=Trueเท่านั้น และควรให้ agent ยืนยันกับผู้ใช้ก่อนเรียกทุกครั้งถ้า NAS ใช้ self-signed cert ในเครือข่ายภายใน ให้ตั้ง
SYNOLOGY_VERIFY_SSL=falseใน.env— ห้ามปิดถ้าเข้าผ่านอินเทอร์เน็ตสาธารณะ
ติดตั้ง
cd D:/MCP/mcp-syncnology
pip install -e .
copy .env.example .envแก้ .env ให้เป็น IP/พอร์ต NAS จริง (เช่น https://192.168.1.10:5001) และ username/password ของ DSM
รันทดสอบ (stdio)
python -m mcp_syncnology.serverหรือทดสอบผ่าน MCP Inspector:
mcp dev src/mcp_syncnology/server.pyTools ที่มีให้แล้ว
Tool | ทำอะไร |
| list shared folder บน NAS |
| list ไฟล์/โฟลเดอร์ในพาธที่กำหนด |
| ดู metadata ของไฟล์/โฟลเดอร์ |
| สร้างโฟลเดอร์ใหม่ |
| ลบไฟล์/โฟลเดอร์ (ต้อง |
| ข้อมูลรุ่น/DSM version/uptime |
| CPU/RAM/network usage ปัจจุบัน |
| สถานะ storage pool/volume/disk |
| list Active Backup for Business task |
| สถานะ backup task ตาม task_id (filter จาก list, ไม่มี method status แยก) |
| list Download Station task |
| เพิ่ม download task ใหม่ (URL/magnet) |
| ลบ download task |
| list กล้องใน Surveillance Station |
| ดู system log ล่าสุด |
เพิ่ม tool ใหม่: เพิ่มเมธอดใน client.py ที่เรียก self.call("SYNO.xxx", "method", ...) แล้วห่อด้วย @mcp.tool() ใน server.py
ต่อกับ Hermes agent
Hermes เก็บ MCP server config ไว้ที่ ~/.hermes/config.yaml (Linux/DGX Spark) หรือ %LOCALAPPDATA%\hermes\config.yaml (Windows) ใต้ key mcp_servers: ค่า secret (SYNOLOGY_USERNAME/SYNOLOGY_PASSWORD) อ่านจาก .env ในโฟลเดอร์นี้โดยตรงเสมอ ไม่ต้องใส่ใน config ของ Hermes
Deploy บน DGX Spark (Linux) — ที่ Hermes รันจริง
git clone https://github.com/humyai99/mcp-syncnology.git
cd mcp-syncnology
python3 -m venv .venv
.venv/bin/python -m pip install -e .
cp .env.example .env # แก้ SYNOLOGY_BASE_URL/USERNAME/PASSWORD ให้เป็นค่าจริง
chmod +x run-hermes.shแล้วเพิ่มใน ~/.hermes/config.yaml:
mcp_servers:
mcp-syncnology:
command: bash
args:
- /path/to/mcp-syncnology/run-hermes.sh
enabled: trueWindows (ถ้ามี Hermes instance แยกบนเครื่องนี้ด้วย)
mcp_servers:
mcp-syncnology:
command: powershell.exe
args:
- -NoProfile
- -ExecutionPolicy
- Bypass
- -File
- D:\MCP\mcp-syncnology\run-hermes.ps1
enabled: trueหลังแก้ config ต้อง restart Hermes เพื่อโหลด MCP server ตัวใหม่
ทดสอบแล้วกับ NAS จริง
ผ่าน: login, system_info, utilization, storage_info, list_shared_folders, list_files, get_file_info, create_folder, delete_path, system_logs, list_backup_tasks, backup_task_status
syncnology_list_download_tasks/syncnology_list_camerasยังไม่ได้ทดสอบจริง เพราะ NAS ที่ใช้ทดสอบไม่ได้ติดตั้งแพ็กเกจ Download Station / Surveillance Station — โค้ดเรียก API ตามเอกสารทั่วไป แต่ยังไม่ยืนยันกับ NAS ที่มีแพ็กเกจเหล่านี้จริงรันด้วย
python scripts/smoke_test.py(read-only) หรือ--with-write(รวม create/delete โฟลเดอร์ทดสอบ) เพื่อตรวจสอบกับ NAS ของคุณเองอีกครั้ง เพราะพฤติกรรม DSM API บางอย่าง (เช่น version ของ method ที่ใช้ได้) ต่างกันไปตาม DSM version
ยังไม่ได้ทำ / ข้อจำกัดที่ควรรู้
ยังไม่รองรับ Application Password / OAuth ของ DSM 7+ (ถ้ามีจะปลอดภัยกว่า username/password ตรง ๆ)
syncnology_create_download_taskให้ NAS ไปดึงไฟล์จาก URL ใดก็ได้ — ควรจำกัดว่า agent เรียกได้จาก URL ที่ผู้ใช้ระบุเองเท่านั้น
Available Tools
15 toolssyncnology_backup_task_statusA
Get the status (incl. last_result) of a specific Active Backup for Business task by its task_id.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a read-only operation via 'Get' and mentions the 'last_result' field, but does not explicitly state the absence of side effects, error handling, or authorization 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?
The description is a single, front-loaded sentence with no unnecessary words or repetition. It earns its place entirely.
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 single-parameter status query with an output schema present, the description covers the core purpose. It does not explicitly state read-only behavior or point to list_backup_tasks for obtaining task_ids, but these are minor gaps given the surrounding 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 coverage is 0%, so the description must compensate. It clarifies that task_id identifies the target task ('by its task_id'), which is somewhat self-evident from the parameter name; it adds little beyond the schema and does not mention where to find the task_id.
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 clearly states the action ('Get'), the resource ('status of a specific Active Backup for Business task'), and the required identifier ('by its task_id'). This distinguishes it from sibling tools like syncnology_list_backup_tasks, which lists all tasks.
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 phrase 'specific Active Backup for Business task by its task_id' implies this tool should be used when a single task's status is needed and the task_id is known. It does not explicitly name alternatives or exclusions, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_create_download_taskA
Add a new Download Station task for the given URI (http/ftp/magnet link).
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It states the core action but omits potential asynchronous behavior, permission requirements, or error handling. This is adequate but leaves the agent to infer side effects.
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?
The description is a single sentence that front-loads the verb and resource, with no redundant or filler content. Every word contributes to clarity.
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 description covers the essential purpose and parameter format, and the presence of an output schema mitigates the need to detail return values. It could mention prerequisites like Download Station being enabled, but this is a minor gap given the tool's simplicity.
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 schema provides no description for the 'uri' parameter, but the tool description compensates by specifying accepted URI schemes (http/ftp/magnet link), giving necessary format context beyond the bare string type. This adds meaningful value.
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 clearly states the action ('Add a new Download Station task') and the target resource (a download task for the given URI), distinguishing it from sibling listing/deletion tools. The verb is specific and 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?
The description implies usage for initiating a download via URI, and the sibling tools are clearly different operations (list, delete). However, it does not explicitly state when to use this tool over alternatives or mention exclusions, missing the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_create_folderB
Create a new folder named name inside folder_path on the NAS.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| folder_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure, but it only states the basic creation action. It omits important traits like what happens if the folder already exists, whether parent directories are created, or any permissions required.
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?
The description is a single, clear sentence with no redundancy or filler content. It front-loads the key information and is easy to scan.
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 and an output schema exists, but the description lacks crucial context such as error behavior, idempotency, or whether parent paths are created automatically. This is a notable gap for an operation that could fail or have side effects.
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 description adds minimal semantics by associating `name` with the new folder's name and `folder_path` with the parent location. However, it does not clarify expected formats, path restrictions, or naming rules, and with 0% schema coverage, more detail would be helpful.
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 clearly states the action ('Create a new folder'), the resource (`name`), and the location (`folder_path` on the NAS). It distinguishes from sibling tools like delete_path or list_files by specifying a folder creation operation.
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 is provided on when to use this tool versus alternatives, such as before uploading files or in conjunction with other NAS operations. There is no mention of exclusions or recommended contexts beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_delete_download_taskB
Remove a Download Station task by its id.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action ('Remove') without disclosing permanence, error behavior, idempotency, or consequences for running tasks. This is insufficient for a destructive operation.
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?
Single sentence, front-loaded with the verb, and no redundant words. It is appropriately concise for the operation described.
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 one-parameter delete tool with an output schema, the essential purpose is present, but the description lacks usage guidance, behavioral caveats, and parameter context. It is minimally viable but has clear gaps.
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%, so the description must compensate. 'by its id' adds no meaning beyond the task_id field already defined in the input schema; it does not explain how to obtain the id or its format.
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 uses a specific verb ('Remove'), names the resource ('Download Station task'), and specifies the method ('by its id'). This clearly distinguishes it from sibling tools like delete_path (path-based) or list/create_download_task.
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 is given on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or related tools such as list_download_tasks or create_download_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_delete_pathA
Permanently delete a file or folder on the NAS. Irreversible.
Call with confirm=True only after the user has explicitly confirmed they want this specific path deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It clearly states the irreversible nature of the operation and the confirmation gate, which is critical safety information for a destructive tool. This is strong transparency, though it omits minor details like recursive folder deletion or error behavior.
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?
The description is two concise sentences, front-loading the action and its permanent consequence, followed by a direct safety instruction. Every sentence earns its place with no redundancy.
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 destructive delete tool with an output schema, the description is nearly complete: it covers purpose, irreversibility, and the necessary confirmation protocol. Missing details like permission requirements or path existence are non-essential given the tool's simplicity.
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?
Given 0% schema description coverage, the description meaningfully compensates by explaining that 'path' is the specific file/folder to delete and clarifying the role of 'confirm=True' (only after explicit user confirmation). It does not specify path format or other parameter details, but for this two-parameter tool, the added semantics are substantial.
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 clearly states it deletes a file or folder on the NAS, explicitly noting it is permanent and irreversible. This distinguishes it from sibling syncnology_delete_download_task by specifying the resource type (file/folder vs download task).
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?
Provides clear context: it should be called with confirm=True only after explicit user confirmation of the specific path. However, it does not explicitly contrast with alternative non-destructive tools like list_files or get_file_info, so it lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_get_file_infoA
Get metadata (size, timestamps, permissions) for a file or folder path on the NAS.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It communicates that the operation is read-only via 'Get' and lists the returned metadata, but it does not disclose error handling, permission requirements, or how pathological inputs (e.g., invalid paths) are handled.
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?
The description is a single, grammatically clean sentence that leads with the action, lists the key metadata, and specifies the target resource type. There is no redundant wording.
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 presumably covering the return fields, the description suffices for a simple single-parameter read tool. It covers purpose and parameter meaning, though edge-case behavior like errors or permission failures is not mentioned, leaving a minor gap.
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 schema provides only a bare 'path' string parameter with no description. The description adds that the path refers to a file or folder on the NAS, which gives context beyond the schema, but it lacks path format specifics, examples, or absolute/relative guidance.
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 uses a specific verb 'Get' with a clear resource 'metadata' and enumerates the exact metadata types (size, timestamps, permissions). It clearly distinguishes this from siblings like syncnology_list_files, which lists files, and system_info, which covers the NAS overall.
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 implies a straightforward use case—retrieve metadata for a known path—but does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites such as needing the path to already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_list_backup_tasksB
List Active Backup for Business tasks configured on the NAS.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavioral traits. It only says 'List... tasks', implying a read-only operation, but does not mention any edge cases, result details, pagination, or permissions. The description adds minimal behavioral context beyond the name.
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?
The description is a single, concise sentence that is front-loaded with the verb and resource. Every word earns its place, with no unnecessary filler.
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?
Given the tool's simplicity (0 parameters) and the presence of an output schema, the description is largely complete. It clearly identifies the resource, but could add a note about the return format or any filtering behavior if applicable. Overall, it is sufficient for a basic list operation.
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 has zero parameters, and the schema coverage is 100% trivially. Per rubric, 0 parameters warrants a baseline of 4. There is no parameter information needed beyond what the empty schema already shows.
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 uses a specific verb 'List' and resource 'Active Backup for Business tasks configured on the NAS', making the core purpose clear. It does not explicitly differentiate from sibling tool 'syncnology_backup_task_status', but the verb 'list' vs 'status' implies a distinction.
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 is provided on when to use this tool versus alternatives. It simply states what it does without mention of prerequisites, use cases, or exclusions (e.g., 'for status, use syncnology_backup_task_status').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_list_camerasA
List cameras configured in Surveillance Station.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It says 'list,' which inherently implies a read-only operation, but it does not disclose additional behavioral context such as authentication requirements, pagination, or rate limits. For a simple list tool, this basic level of transparency is adequate but not enriched.
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?
The description is a single, front-loaded sentence that conveys the essential purpose without any redundant information. Every word 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?
For a zero-parameter, read-only list tool with an output schema present, the description is completely sufficient. It does not need to explain return values since the output schema handles that, and there are no other complexity factors.
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 has zero parameters, so the input schema is empty. The description does not need to explain any parameters; the baseline of 4 applies because there is nothing to clarify.
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 uses the specific verb 'list' and clearly identifies the resource as 'cameras configured in Surveillance Station.' This distinguishes it from sibling tools like list_shared_folders and list_files, which target different resources.
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 clearly states it lists cameras in Surveillance Station, providing unambiguous context for when to use the tool. It does not explicitly mention alternatives or exclusions, but the resource is distinct enough that no such guidance is necessary for this simple list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_list_download_tasksA
List Download Station tasks and their transfer status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the read-only nature via the verb 'list' and mentions 'transfer status' as part of the output, but it does not explicitly state it is non-destructive or mention any authentication needs or edge cases. This is moderate transparency for a simple list operation.
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?
The description is a single concise sentence that focuses on the core function. It uses clear, direct language without any filler or repetition.
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?
Given the tool's low complexity (0 params) and the presence of an output schema, the description covers the main purpose adequately. It does not mention constraints like whether Download Station must be enabled or any limits, but for a simple list operation this is acceptable.
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 has no parameters (0 params, schema coverage 100%), so per the baseline rule for 0 parameters, the description does not need to explain parameter semantics. The description adds no parameter info but none is needed.
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 clearly states the action 'List' and the target 'Download Station tasks', also specifying it returns transfer status. This differentiates it from sibling tools like list_backup_tasks, which target backup tasks.
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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or when to prefer other list tools such as list_backup_tasks or list_files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_list_filesA
List files/folders under a path on the NAS, e.g. '/home' or '/shared_folder/subdir'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| folder_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly communicates that the operation lists files/folders, but does not disclose pagination behavior, error handling, hidden files, or recursive listing. The output schema is present, which mitigates some lack of detail, but behavioral traits beyond the basic action are absent.
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?
Single sentence with a clear front-loaded verb and concrete examples. No redundant language or filler.
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 a simple listing operation with an output schema, so the description is minimally acceptable. However, with no annotations and 0% schema coverage, the description leaves gaps around pagination usage and tool selection, making it only partially complete for the agent.
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 description provides path examples that clarify the folder_path parameter, but gives no meaning for limit or offset, despite the schema having 0% description coverage. The agent must infer pagination semantics from the parameter names and defaults, which is a notable gap for a paged listing tool.
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?
Specifically states the action (list) and resource (files/folders under a NAS path), with concrete examples. Clearly distinguishes from sibling tools like list_shared_folders (which lists top-level shares) and get_file_info (which targets a single file).
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 implies usage by showing path examples, but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. The intended use case is inferable, but the agent receives no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_storage_infoA
Get storage pool, volume, and disk health info from the NAS.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of disclosing behavior. It does specify that it returns storage pool, volume, and disk health info, which clarifies the scope of the read operation. However, it does not disclose potential caveats like rate limits, required permissions, or data granularity, leaving some ambiguity for a tool with no annotation support.
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?
The description is a single, concise sentence that front-loads the action and object. Every word contributes to the meaning, with no redundancy or wasted verbiage.
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?
Given the tool's simplicity (no parameters) and the presence of an output schema, the description is fairly complete. It identifies the key data types returned and is unambiguous relative to siblings. However, it lacks usage guidelines and broader behavioral context, which slightly reduces completeness.
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 input schema has zero parameters, so there is nothing for the description to explain. According to the rubric, a tool with no parameters receives a baseline score of 4. The description adds no parameter info, but none is needed.
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 clearly states the tool's purpose: retrieve storage pool, volume, and disk health info from the NAS. It uses a specific verb ('get') and names distinct resources, differentiating it from sibling tools like syncnology_system_info or syncnology_utilization.
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 explicit usage guidance or alternative tools are mentioned in the description. The intended use is implied by the name and description (retrieve storage health), but there is no explicit 'use this when...' or comparison to siblings. This is adequate but lacks clear context for selecting among related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_system_infoA
Get general Synology NAS system info (model, DSM version, serial, uptime).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'Get' implies a read-only operation, and the listed fields are concrete. However, it does not mention authentication requirements, the sensitivity of the serial number, or any potential side effects. It is adequate but minimal.
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?
The description is a single sentence of 12 words, front-loaded with the action and includes concrete examples. Every word adds value, with no redundancy or filler.
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 with no parameters and an output schema exists, so return values are covered by structured data. The description adequately covers the tool's scope and purpose, leaving no significant gaps for an agent to misinterpret.
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 are zero parameters, which earns the baseline of 4. No parameter explanation is needed since the tool takes no inputs. The description correctly omits parameter details.
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 clearly states a specific action ('Get') and resource ('general Synology NAS system info'), followed by explicit examples of the returned data (model, DSM version, serial, uptime). This distinguishes it from sibling tools that handle files, folders, backups, or tasks.
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 usage is implied: use when general system info is needed. However, there is no explicit when-not or alternative tool comparison. Sibling tool names suggest different domains, so an agent can infer the right tool, but the description itself offers no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_system_logsC
Get the most recent system log entries from the NAS.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read-only operation via the verb 'Get', but does not mention behavior such as the default count of entries returned, any throttling or pagination, or whether special permissions are required. The lack of detail beyond the basic action leaves the agent with limited understanding of side effects or constraints.
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?
The description is one short, clear sentence that conveys the essential purpose without any fluff or redundancy. It is front-loaded with the key information and wastes no 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?
Given the tool's simplicity (one optional parameter, output schema exists), the description is minimally adequate but still leaves gaps. It does not mention the count parameter or how to control the number of returned entries, and provides no context on when to use this tool versus siblings. The output schema may cover return values, but the description alone does not fully equip an agent to invoke it correctly in all scenarios.
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 description does not mention the sole parameter 'count' at all. The description adds no meaning beyond the schema's default value, failing to clarify what 'count' controls (e.g., number of entries to return). The parameter is left entirely to the schema, with no compensation from the description.
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 clearly states the verb 'Get' and the resource 'system log entries from the NAS', and includes the scope 'most recent' which adds specificity. It distinguishes itself from sibling tools like syncnology_system_info and syncnology_utilization by focusing on logs rather than general system metrics.
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 guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or situations where another tool would be more appropriate. The usage context is merely implied from the tool name, not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncnology_utilizationA
Get current CPU, memory, and network utilization of the NAS.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully explain behavioral traits. It states it retrieves 'current' utilization but gives no details about whether this is a read-only operation, the meaning of 'current' (instant vs. averaged), or any potential side effects. This is a minimal disclosure.
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?
The description is a single, clear sentence that is front-loaded with the action and resource. Every word adds value and there is no redundant or filler content.
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?
Given the tool's simplicity (zero parameters) and the presence of an output schema, the description is mostly sufficient. However, with no annotations, it could add context about what 'utilization' includes (e.g., percentages, time windows) or how the returned data is structured, so it is not perfectly 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?
The tool has zero parameters, so the schema trivially covers all inputs. The description does not need to add parameter details; the baseline for zero-parameter tools is 4.
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 uses a specific verb ('Get') and clearly identifies the resource ('CPU, memory, and network utilization of the NAS'). It distinguishes itself from sibling tools like system_info and storage_info by focusing specifically on utilization metrics.
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 provides no guidance on when to use this tool versus alternatives such as system_info or storage_info. There is no mention of use cases, prerequisites, or exclusions.
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.
15 tool updates
v0.1.0- First observed
syncnology_backup_task_status - First observed
syncnology_create_download_task - First observed
syncnology_create_folder - First observed
syncnology_delete_download_task - First observed
syncnology_delete_path - First observed
syncnology_get_file_info - First observed
syncnology_list_backup_tasks - First observed
syncnology_list_cameras - First observed
syncnology_list_download_tasks - First observed
syncnology_list_files - First observed
syncnology_list_shared_folders - First observed
syncnology_storage_info - First observed
syncnology_system_info - First observed
syncnology_system_logs - First observed
syncnology_utilization
TDQS
Scored across 15 tools
Each tool targets a distinctly different resource or action: file browsing vs system monitoring vs backup status vs download tasks vs camera listing vs logs. No two tools appear to overlap in purpose, making selection unambiguous.
All tools share the 'syncnology_' prefix and follow an action_noun pattern (list, get, create, delete). Minor deviations exist such as 'backup_task_status' and 'system_logs' instead of 'get_backup_task_status' and 'get_system_logs', but overall the naming is consistent and predictable.
15 tools is well within the ideal range for a server covering multiple NAS subdomains. Each tool serves a clear purpose, and the count is neither too sparse nor overwhelming.
The toolset covers core NAS operations—file listing/info/create/delete, system stats, backup task queries, and download management. However, gaps exist: no file upload/download content transfer, no backup task creation/modification, and camera support is limited to listing. These are notable but not fatal for many workflows.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Remote MCP server to read and manage your Atako AI agents, messages, files, and integrations.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for Synology NAS — modular, secure (2FA-ready), permission-tiered. File management and beyond.59 PyPI7Apache 2.0
- AlicenseAqualityDmaintenanceSelf-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.398 npm10MIT
- 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
- FlicenseNot gradedqualityBmaintenanceAn MCP server that exposes a Synology NAS through the official DSM WebAPI, covering File Station, Download Station, Synology Photos, Container Manager, and system management with curated tools and a generic bridge for other APIs.-