wd-mycloud-mcp
Provides tools for browsing, reading, writing, moving, copying, deleting, and searching files on Western Digital MyCloud Home devices, supporting local network (SMB) and remote access via REST API and SFTP.
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., "@wd-mycloud-mcplist files in the Public share"
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.
wd-mycloud-mcp
An MCP (Model Context Protocol) server that exposes Western Digital MyCloud Home file operations to AI assistants (Claude Desktop, etc.) — works both on local network and over the internet.
Features
Browse, read, write, move, copy, delete files on WD MyCloud
Three connection modes with automatic fallback:
SMB (local network) — fastest, direct mount
REST API (remote) — auto-login via WD cloud account, no browser needed
SFTP — fallback when SSH is available
Auto-mounts SMB share on first use (macOS)
Token auto-refresh — stays logged in without manual intervention
Path traversal protection on all operations
File search by name query
Related MCP server: MCP Google Drive Server
Requirements
macOS (uses
mount_smbfsfor SMB mode)Python 3.11+
uv (recommended) or pip
WD MyCloud Home device
Installation
git clone https://github.com/dy-le/wd-mycloud-mcp.git
cd wd-mycloud-mcp
# Install with uv
uv sync
# Or with pip
pip install -e .Configuration
Environment variables
Variable | Default | Description |
|
| Hostname or IP of device (use IP, not |
|
| SMB share name |
|
| SMB username |
| (empty) | SMB password |
|
| Local SMB mount point |
| (empty) | WD account email (for remote access) |
| (empty) | WD account password (for remote access) |
Tip: Use the device's IP address for
WD_MYCLOUD_HOSTinstead of the.localhostname to avoid mDNS resolution issues.
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"wd-mycloud": {
"command": "/path/to/.venv/bin/wd-mycloud-mcp",
"env": {
"WD_MYCLOUD_HOST": "192.168.1.100",
"WD_MYCLOUD_SHARE": "YourShare",
"WD_MYCLOUD_USER": "youruser",
"WD_MYCLOUD_PASSWORD": "yourpass",
"WD_MYCLOUD_MOUNT": "/Users/you/.wd-mycloud/mnt",
"WD_MYCLOUD_CLOUD_EMAIL": "you@email.com",
"WD_MYCLOUD_CLOUD_PASSWORD": "yourcloudpass"
}
}
}
}Remote access (away from home)
When not on the local network, the server automatically authenticates with the WD cloud service using WD_MYCLOUD_CLOUD_EMAIL and WD_MYCLOUD_CLOUD_PASSWORD. Tokens are cached at ~/.wd-mycloud/token.json and refreshed automatically before expiry.
If direct login is unavailable, you can install the included Chrome extension (chrome-extension/) to capture a token manually by visiting home.mycloud.com.
Available Tools
Tool | Description |
| List files and directories |
| Read a text file |
| Create or overwrite a text file |
| Delete a file |
| Delete a directory |
| Create a directory |
| Move or rename |
| Copy a file |
| Search by filename |
| Get file/directory metadata |
| Show current mode and auth status |
| Force re-authentication |
Release notes
v1.1.0
Remote API mode: auto-login with WD cloud email/password, no Chrome extension required
Token refresh: access tokens are refreshed automatically using stored refresh token
Correct WD API endpoints sourced from open-source reference implementations:
File listing:
GET /sdk/v2/filesSearch/parents?ids={parentId}(ids=rootfor root)File download:
GET /sdk/v3/files/{id}/content(v3 endpoint)Delete:
DELETE /sdk/v2/files/{id}Move/rename:
PATCH /sdk/v2/files/{id}Create folder:
POST /sdk/v2/files(multipart/related)Write file:
POST /sdk/v2/files/resumable(resumable upload)
ID-based navigation with in-memory path→ID cache
Auth0 config auto-discovered from
https://config.mycloud.com/config/v1/configFixed SMB: URL-encode credentials with special characters (e.g.
@in password)Fixed mount point: use user-owned path instead of
/Volumes/to avoid permission errors
v1.0.0
Initial release: SMB-only local network access
Acknowledgements
This project references and was informed by the following open-source works:
mnencia/mchfuse (Go) — correct Auth0 login flow (
password-realmgrant type), token refresh, file API paths (/v2/,/v3/), multipart/related upload format, and PATCH for move/renamesbencoding/WD-Bridge (Node.js) —
filesSearch/parents?ids=parameter,ids=rootfor root listing, service URL discoverysbencoding/wdfs (C++) — device proxy URL discovery via
device/v1/user/{sub}, remote access architectureeverappz/MyCloudHomeSDKObjc (Objective-C) — complete API surface reference including resumable upload, token fields (
id_token,access_token,refresh_token), and file metadata schema
License
Apache 2.0
Available Tools
12 toolsconnection_statusA
Show current connection mode and authentication status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 'Show,' but does not describe output format, prerequisites, or any side effects. This is minimal but acceptable for a simple status tool.
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, compact sentence (9 words) that is front-loaded with the action verb 'Show.' Every word serves a purpose, and there is 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?
For a zero-parameter, no-output-schema, no-annotations status tool, the description adequately conveys the tool's purpose and read-only nature. It lacks explicit return-value details, but the simplicity of the tool makes the description reasonably 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 input schema has zero parameters, leaving nothing for the description to explain. The baseline for a 0-parameter schema is 4, and the description appropriately adds no parameter-specific information.
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 'Show' and clearly identifies the resource as 'current connection mode and authentication status,' distinguishing it from sibling tools like login and file operations. It is direct and unambiguous about what the tool does.
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 that the tool should be used to check connection and authentication status, but provides no explicit guidance about when to use it versus get_info or login, and mentions no alternatives or exclusions. Usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copyA
Copy a file by reading and re-uploading (WD API has no server-side copy).
Args: source: Relative source path. destination: Relative destination path.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| destination | 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 present, so the description carries the burden. It discloses that copying is performed by reading and re-uploading, which implies network usage and potential slowness, but it does not discuss behavior on existing destinations, permissions, or error cases. The mechanism is useful but limited.
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 concise and well-structured: a clear purpose statement followed by a compact argument list. Every sentence contributes value, and the key information is front-loaded.
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 copy tool, the description covers the mechanism and parameters. However, it omits error handling and overwrite semantics, though an output schema exists. With no annotations, the description is adequate but not exhaustive.
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. It clearly defines both 'source' and 'destination' as relative paths, giving meaning to the parameters beyond their names. This is sufficient for a simple two-parameter 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?
The description clearly states the action 'Copy a file' and identifies the resource. It also explains the mechanism (reading and re-uploading) because the WD API lacks server-side copy, which distinguishes it from a conceptual move or direct server-side copy.
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 the tool is used for copying a file but does not explicitly state when to use it over alternatives like 'move' or when not to use it. It provides rationale for the implementation but lacks direct comparison to sibling tools or usage exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_directoryA
Create a directory on WD MyCloud.
Args: path: Relative path for the new directory.
| 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 must disclose behavioral traits. It only says 'Create a directory' and provides an argument description; it omits any details about error handling, idempotency, permissions, or whether parent directories are created. This leaves an agent without critical behavioral expectations.
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 highly concise and front-loaded, stating the action first and then the single parameter. Every line earns its place, with no redundant 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?
Despite having an output schema, the description is incomplete for a mutating tool with no annotations. It fails to mention expected behaviors like failure if the directory exists, whether intermediate paths are created, or permission requirements. The single parameter is well covered, but the overall context is too sparse for an agent to invoke the tool confidently in varied situations.
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 only defines 'path' as a string without any description. The tool description adds essential meaning by clarifying that path is a 'Relative path for the new directory,' which is crucial for correct invocation and not inferable from 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?
The description clearly states the tool's purpose: 'Create a directory on WD MyCloud.' It uses a specific verb ('create') and resource ('directory on WD MyCloud'), which distinguishes it from sibling tools like list_directory or delete_directory.
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 use this tool versus alternatives, nor any mention of prerequisites or exclusions. The description only states the action, leaving usage context entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_directoryA
Delete a directory on WD MyCloud.
Args: path: Relative path to the directory. recursive: If True, delete directory and all contents.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| recursive | No |
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 disclose behavior. It explains that recursive deletion removes contents, but omits critical safety details such as irreversibility, permission requirements, and behavior when the directory is non-empty and recursive=False. This is a significant gap 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?
The description is concise and front-loaded with the primary purpose, followed by a clear and necessary Args section. Every sentence provides value, and there is no redundancy or 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?
For a simple deletion tool, it covers the core action and parameters, but lacks essential edge-case behavior such as failure modes for non-empty directories without recursive, reversibility, or permission errors. Given the presence of an output schema, return values need not be described, but behavioral completeness is only adequate.
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's properties have no descriptions (0% schema coverage), but the description compensates by explaining that path is a relative path and recursive controls deletion of contents. This adds meaningful semantics beyond the bare schema types and defaults.
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 'Delete a directory on WD MyCloud' clearly identifies the operation (delete) and resource (directory), distinguishing it from sibling tool delete_file. The recursive parameter adds clarity about deletion scope.
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 deleting directories but does not explicitly mention when to prefer it over alternatives like delete_file, nor does it state prerequisites or exclusions. The recursive argument provides some context but no explicit 'when to use vs. 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.
delete_fileA
Delete a file on WD MyCloud.
Args: path: Relative path to the file.
| 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?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'Delete a file' without addressing the destructive nature, irreversibility, permissions required, or behavior on missing files or directories, which is a significant gap for a mutation tool.
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 appropriately sized—one sentence followed by an Args block—with no filler. It is front-loaded with the core action and immediately explains the parameter.
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 delete operation with one parameter and an output schema, the description covers the basics but omits behavioral details such as error handling, whether the operation is permanent, or what happens if the path is a directory. It is adequate but minimal.
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's 'path' parameter has no description, so the tool description adds essential meaning by specifying 'Relative path to the file'. This clarifies that the path is relative and points to a file, compensating well for the 0% schema coverage.
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 states 'Delete a file on WD MyCloud' with a specific verb and resource, clearly identifying the action and target. It distinguishes from sibling tools like delete_directory by specifying 'file' and the device.
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 deleting files but offers no explicit guidance on when to use this tool versus alternatives like delete_directory. No exclusions or prerequisites are mentioned, leaving the context to be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_infoA
Get metadata about a file or directory on WD MyCloud.
Args: path: Relative path from the share root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states it 'gets metadata', implying a read-only operation, but does not mention error handling (e.g., nonexistent path), permissions, or what specific metadata fields are returned. This lack of detail is a gap, especially since no output schema exists to fill it.
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 extremely concise: one sentence for the purpose plus a parameter definition. It is front-loaded with the core action and includes only necessary information, with 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?
Given no annotations and no output schema, the description is too minimal to be fully complete. It identifies the tool's purpose and parameter, but it does not describe the return format or any error behavior. For a simple metadata getter, this is a moderate gap — the agent can select it correctly but may not know what to expect in the response.
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 string parameter 'path' with no description (0% coverage). The description adds essential meaning by specifying that path is a 'relative path from the share root', which is crucial for constructing valid inputs. This fully compensates for the sparse schema, though it is brief.
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 'metadata about a file or directory on WD MyCloud'. This distinguishes it from sibling tools like read_file (content) and list_directory (list entries).
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 context is implied: use this tool when you need metadata rather than file content or directory listings. However, there is no explicit guidance on when not to use it or which alternative to choose; the agent must infer based on the tool name and descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryA
List files and directories at the given path on WD MyCloud.
Args: path: Relative path from the share root. Defaults to root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | 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. It discloses the path parameter is relative from share root and defaults to root, which adds behavioral context. However, it doesn't mention any limitations like non-recursive listing or output format beyond what the output schema covers.
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 followed by a clear parameter definition. Every word earns its place with no fluff.
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 one-parameter tool with an output schema, the description covers purpose and parameter semantics adequately. However, it lacks usage differentiation from sibling tools, which is a moderate gap in an agent's ability to select it correctly among similar listings and search 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 description explicitly explains the only parameter 'path' as a relative path from share root and states the default behavior to root. This fully compensates for the 0% schema description coverage.
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' with a clear resource 'files and directories' at a given path on WD MyCloud. This clearly distinguishes it from sibling tools like read_file or search_files.
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 search_files. It only states what the tool does without explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginA
Force re-authentication with WD cloud (use if you get auth errors).
| 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 the burden. It implies a state change ('force re-authentication') but does not disclose potential side effects like invalidating the current session or requiring user interaction. It adds some context but lacks behavioral detail.
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, well-structured sentence that front-loads the action and includes a practical usage tip. 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 simple 0-param tool with an output schema, the description covers the essential 'what' and 'when' adequately. However, it could mention the impact on the current session or how it relates to 'connection_status', a slight 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 tool has 0 parameters and the schema coverage is 100%, so the baseline of 4 applies. The description adds no parameter details, but none are 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 ('Force re-authentication') with a specific resource ('WD cloud'). It distinguishes itself from siblings by focusing on authentication, whereas siblings are file operations and status checks.
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 explicit guidance on when to use: 'use if you get auth errors.' This gives clear context, though it doesn't mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moveA
Move or rename a file or directory on WD MyCloud.
Args: source: Relative source path. destination: Relative destination path.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| destination | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the full burden. It only states the operation and arguments, without disclosing behaviors such as overwriting, error conditions, permission requirements, or whether the move is atomic. This lack of detail limits the agent's ability to predict 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 concise and to the point, with a one-sentence purpose followed by a clear argument list. Every sentence adds value, and there is no superfluous 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?
The tool is simple and the description covers the core function and parameters. However, it lacks details about edge cases such as what happens if the destination exists, whether it can overwrite, or any error handling. Given an output schema exists, return values are covered, but behavioral completeness is still limited.
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. It adds that 'source' and 'destination' are 'Relative source path' and 'Relative destination path', which gives some meaning beyond the schema titles. However, it does not clarify what the paths are relative to or mention that renaming is achieved via destination, leaving some ambiguity.
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 ('Move or rename') and the resource ('a file or directory on WD MyCloud'). This distinguishes it from sibling tools like copy, delete, and read_file because it specifically addresses relocating or renaming items.
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 naming the operation (move/rename), which clearly indicates when this tool should be used compared to siblings like copy or delete. However, it does not explicitly mention alternatives or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileA
Read the text content of a file on WD MyCloud.
Args: path: Relative path to the file from the share root.
| 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?
With no annotations provided, the description alone must convey behavioral traits, but it only states the basic read operation. It does not disclose error behavior for missing files, permission restrictions, encoding assumptions, or limitations to certain file types beyond 'text content'.
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 very concise and front-loaded, with a one-sentence purpose followed by the parameter explanation. Every word contributes useful information; there is 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?
For a simple single-parameter read tool, this is minimally adequate: purpose and path semantics are clear, and the output schema covers return values. However, it lacks important behavioral context such as error handling and file type expectations, and it provides no guidance on when to use it relative to sibling 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?
Although the schema only defines 'path' as a string, the description adds essential meaning: the path is relative to the share root and identifies a file. This clear semantic clarification compensates for the 0% schema description coverage and helps the agent construct valid inputs.
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 ('Read') and resource ('text content of a file') with a clear scope (WD MyCloud), which immediately distinguishes it from sibling tools like list_directory or write_file. It is not a tautology and plainly states the tool's function.
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 about when to use this tool versus alternatives, such as when to prefer list_directory or get_info. The only usage hint is the path input being relative to the share root, which pertains to parameter usage rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesA
Search for files by name on WD MyCloud.
Args: query: Search term (filename or partial name) path: Relative directory to search in. Defaults to share root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| query | 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 must carry the full behavioral disclosure burden. It only states that it searches by name and describes parameters, but fails to mention whether the search is recursive, case-sensitive, or read-only. No output format or error behavior is disclosed.
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 extremely concise, with a single opening sentence and a clean Args block. Every sentence earns its place, and there is no redundancy or fluff.
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 search tool, the description is minimally complete, but it omits critical behavioral details like recursion and case sensitivity. The output schema exists, covering return structure, but the lack of behavioral transparency and usage context makes it incomplete.
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%, but the 'Args' section adds meaningful interpretation: query is 'filename or partial name' and path is 'relative directory' with a default. This compensates well for the schema's lack of descriptions, though it could clarify wildcard or matching behavior.
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: 'Search for files by name on WD MyCloud.' It uses a specific verb and resource, and naturally distinguishes itself from siblings like list_directory and read_file by focusing on name-based search.
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 (search by name) but provides no explicit guidance on when to choose this tool over alternatives, nor any exclusions. The presence of sibling tools such as list_directory suggests alternative use cases, but no comparison is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileA
Write text content to a file on WD MyCloud (creates or overwrites).
Args: path: Relative path to the file. content: Text content to write.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | 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 provided, the description carries the full burden of behavioral disclosure. It does transparently state the destructive overwrite potential ('creates or overwrites'), but lacks context on prerequisites, side effects on parent directories, return values, or failure modes.
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 concise and front-loaded with the core action. The Args section is cleanly separated and adds necessary parameter context without excessive wording. Every sentence 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 simple 2-parameter tool, the description covers purpose and parameters. However, it does not explain behavior like whether parent directories are created automatically, what happens if the path is invalid, or what the output schema contains. With an output schema present, not detailing return values is acceptable, but other operational details are missing.
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 has 0% description coverage, so the description must compensate. It does by providing brief explanations: path is a relative path and content is text. However, these are minimal and leave ambiguity (e.g., relative to which root, encoding, size limits).
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 writes text content to a file and explicitly mentions create/overwrite behavior. It distinguishes itself from sibling tools like read_file and delete_file with a specific verb and resource.
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 its use—when you need to write a file—but provides no explicit guidance on when to prefer it over alternatives or any exclusions. It does not mention when not to use this tool.
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.
12 tool updates
v0.1.0- First observed
connection_status - First observed
copy - First observed
create_directory - First observed
delete_directory - First observed
delete_file - First observed
get_info - First observed
list_directory - First observed
login - First observed
move - First observed
read_file - First observed
search_files - First observed
write_file
TDQS
Scored across 12 tools
Each tool targets a distinct operation (metadata, listing, reading, writing, deleting, moving, copying, searching, connection management). No two tools overlap in purpose; file vs directory deletion are clearly separated.
Most tools follow a consistent verb_noun pattern (list_directory, read_file, write_file, delete_file, create_directory, search_files), but a few use bare verbs (move, copy, login) or noun phrases (connection_status), creating minor inconsistency.
12 tools is well-scoped for a cloud NAS file server, covering file, directory, and connection management without redundancy or bloat.
Core file/directory operations are covered (list, read, write, delete, create, move, copy, search, metadata), but directory copy is unsupported (copy only works for files), which is a minor gap.
Maintenance
Related MCP Connectors
Browse and manage files in your Moxt AI workspace from any MCP client.
Persistent file storage for AI agents via MCP and curl. Upload, download, and version files.
Connect AnyFile to AI clients to manage files, share links, file requests, and analytics.
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
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.198MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Google Drive, supporting file operations like list, search, read, create, update, delete, share, and manage permissions.7844 npm4MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to safely interact with the file system through a set of tools for reading, writing, deleting, copying, moving files, and managing directories.-
- AlicenseNot gradedqualityCmaintenanceProvides file system access and operations, enabling AI assistants to read, write, list, search, and manage files and directories through a standardized interface.1MIT