z-cli
This server provides a CLI and MCP-based interface for managing files, directories, and storage pools on a zspace NAS, exposing all capabilities to AI assistants via the Model Context Protocol.
File & Directory Management: List, create, rename, copy, move, and delete (to recycle bin) files and folders, with auto-rename on conflict.
File Search (
search_files): Search by name, type, size, and time, with filters for directory-only, hidden files, shared-only, and pagination/sorting.Recent Files (
list_recent_files): Retrieve a paginated list of recently accessed files.Storage Pool Info (
get_pool_info,get_pool_names): View storage pool details and name mappings.General HTTP Requests (
make_request): Send GET, POST, PUT, DELETE, or PATCH requests to any URL, with optional headers and JSON body.AI Assistant Integration: All functionality is exposed via a Model Context Protocol (MCP) server for use with AI assistants.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@z-clilist files in /sata12/my/data"
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.
概述
z-cli 是 zspace 私有云 NAS 的命令行工具,支持 CLI 和 MCP Server 两种使用方式。通过 MCP 协议接入 AI 助手后,可以用自然语言操控 NAS 上的文件和存储资源。
Related MCP server: mcp-dev-tools
功能特性
文件操作 — 列表、创建、重命名、移动、复制、删除(回收站)
目录管理 — 创建文件夹,支持冲突自动重命名
文件搜索 — 按名称/类型/大小/时间搜索,支持分页
存储池查询 — 查看存储池信息和名称映射
最近文件 — 获取最近访问文件列表
MCP Server — 通过 Model Context Protocol 暴露所有能力给 AI 助手
双模式运行 — 开发模式
./dev(热更新)与生产模式zcli
接入 Agent 示例
将 z-cli 的 MCP Server 接入 AI 助手(如 opencode、Claude Code)后,用户可以通过自然语言直接操控 NAS。
下图为自研的 NAS 助手 Agent z-agent 的演示:

快速上手
前置条件
macOS / Windows(认证模块从 zspace 桌面客户端本地数据目录读取凭据)
Python >= 3.10
zspace 桌面客户端已安装、登录,并保持在后台运行
安装
python -m venv .venv
source .venv/bin/activate
# Windows: .venv\Scripts\Activate.ps1
pip install -e .
# 验证
zcli poolCLI 模式
# 存储池
zcli pool
zcli poolname
# 文件操作
zcli list /sata12/my/data
zcli mkdir /sata12/my/data 新建文件夹
zcli create /sata12/my/data/文件.txt
zcli rename /sata12/my/data/旧名称 新名称
zcli copy /sata12/my/data/a /sata12/my/data/b
zcli move /sata12/my/data/a /sata12/my/data/sub/
zcli remove /sata12/my/data/无用文件.txt
# 搜索与最近文件
zcli search 关键词
zcli recent
# 启动 MCP Server
zcli mcpMCP 模式
推荐方式:pipx 全局安装
pipx install -e /path/to/zspace-cli然后在 AI 工具(如 opencode、Claude Code)中配置:
{
"mcp": {
"zspace-cli": {
"type": "local",
"command": ["zcli", "mcp"],
"enabled": true
}
}
}备选方式:项目虚拟环境
{
"mcp": {
"zspace-cli": {
"type": "local",
"command": [".venv/bin/python", "-m", "zspace", "mcp"],
"enabled": true
}
}
}注意:macOS 可能对
.venv下的文件自动设置隐藏标志,导致 Python 3.8+ 跳过__editable__的.pth文件(CPython #113659)。如果遇到ModuleNotFoundError: No module named 'zspace'错误,运行以下命令修复:xattr -rc .venv chflags -R 0 .venv
项目结构
z-cli/
├── .github/workflows/ # CI 配置
├── .claude/ # Claude 技能配置
├── src/zspace/
│ ├── api/ # NAS API 层
│ │ ├── fields.py # 字段映射
│ │ ├── file.py # 文件操作 API
│ │ └── pool.py # 存储池 API
│ ├── commands/ # CLI 子命令
│ │ ├── base.py # Command 基类
│ │ └── ... # 每个命令一个文件
│ ├── mcp/ # MCP 服务器
│ │ ├── base.py # McpTool 基类
│ │ └── tools/ # 每个工具一个文件
│ ├── auth.py # 登录凭据读取
├── tests/ # 测试
├── dev # 热更新运行脚本
├── Makefile # 常用开发命令
├── CHANGELOG.md # 变更日志
└── CONTRIBUTING.md # 贡献指南CLI 命令参考
命令 | 功能 | 示例 |
| 查看存储池信息 |
|
| 查看存储池名称映射 |
|
| 检查与本地代理的连通性 |
|
| 列出目录文件 |
|
| 创建文件夹 |
|
| 创建文件 |
|
| 读取文本文件内容 |
|
| 重命名 |
|
| 复制 |
|
| 移动 |
|
| 删除(回收站) |
|
| 搜索文件 |
|
| 最近文件 |
|
| 管理 AI skills(install/uninstall) |
|
| 启动 MCP Server |
|
MCP 工具列表
工具 | 功能 |
| 查看存储池信息 |
| 查看存储池名称映射 |
| 检查与本地代理的连通性 |
| 列出目录文件 |
| 创建文件夹 |
| 创建文件 |
| 读取文本文件内容 |
| 删除文件/文件夹(移至回收站) |
| 重命名 |
| 复制 |
| 移动 |
| 搜索文件 |
| 最近文件 |
存储池路径规则
访问文件路径格式为 /<pool_name>/my/data,其中 pool_name 是 pool 接口返回的 name 字段(如 sata12、sata14),不是 id 或系统挂载点。
配置
变量 | 说明 |
| 覆盖 zspace 本地代理地址,用于跨网络访问 |
开发
# 安装开发依赖
pip install -e ".[dev]"
# 热更新模式(改源码即生效)
./dev pool
# 代码检查
make lint
# 运行测试
make test致谢
本项目基于 skyzhao1223/zspace-cli 的构思与想法,重新实现并调整了架构。
许可证
Available Tools
13 toolscheck_connectivityA
检查与 zspace NAS 本地代理的连通性(TCP + HTTP),适用于诊断连接问题
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | 超时秒数,默认 5 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It mentions TCP and HTTP but does not explain whether the operation is read-only, what consequences it has, or what response to expect. It is adequate but not detailed.
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, efficient sentence that conveys the purpose quickly. It could be slightly more structured but remains concise and 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?
Given the tool's simplicity and lack of output schema, the description is moderately complete. It explains the purpose and protocol but could mention the output format or success criteria for better 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?
Schema description coverage is 100%, so baseline is 3. The description does not add any information about the timeout parameter beyond what the schema provides.
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 (check connectivity), the specific resource (zspace NAS local proxy), and the protocol scope (TCP + HTTP). It effectively distinguishes from sibling tools which are all file operations.
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 explicitly says it is suitable for diagnosing connection issues, providing clear context. However, it does not exclude alternative scenarios or mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_itemC
复制 zspace NAS 上的文件或文件夹,支持个人空间和团队空间路径
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 目标路径,支持个人空间和团队空间路径 | |
| paths | Yes | 要复制的文件/文件夹路径列表,支持个人空间和团队空间路径 | |
| rename | No | 冲突时是否自动重命名(0/1),默认为 0 | 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It mentions path support but omits behavioral details like overwrite behavior, permissions, or error handling. The rename parameter hints at conflict handling but isn't explained.
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, no redundancy. Efficiently communicates core functionality and path constraints.
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?
No output schema and no explanation of return values, success/failure indicators, or preconditions. For a copy operation with 3 parameters, more context is needed.
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 100%, so baseline is 3. Description adds no new info beyond schema; it repeats the path support. Parameter descriptions in schema are adequate.
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 copies files/folders on zspace NAS and mentions support for personal and team space paths. It distinguishes from siblings like move_item by implying copy, but could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like move_item or create_file. Lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_fileC
在 zspace NAS 上创建文件,同时支持个人空间(/sata12/my/data)和团队空间(/sata12/public)路径
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 文件完整路径,支持个人空间和团队空间路径 | |
| rename | No | 冲突时是否自动重命名(0/1),默认为 0 | 0 |
| content | No | 文件内容文本(可选) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It fails to disclose key behaviors: whether existing files are overwritten, if intermediate directories are created, or required permissions. The rename parameter suggests conflict handling but description doesn't explain the default 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?
Single sentence is concise and front-loads the primary action and scope. However, it could benefit from a slightly more structured breakdown of key behaviors.
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 3 parameters and no output schema, description omits critical context: error handling, return format, conflict behavior, and type of content accepted (text/binary). Incomplete for safe agent usage.
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 100%, so baseline is 3. Description does not add meaning beyond schema: path support is already described in schema. No extra details on rename logic or content 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?
Description clearly states the tool creates files on a NAS and specifies accepted path prefixes (personal and team spaces). This differentiates from create_folder by resource type, though not explicitly. Overall, purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like create_folder or copy_item. Context (e.g., conflict resolution) is implied through parameters but not explained. No 'when not to use' or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderB
在 zspace NAS 上创建新文件夹,同时支持个人空间(/sata12/my/data)和团队空间(/sata12/public)路径
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 要创建的文件夹名称 | |
| parent | Yes | 父目录路径,如 /sata12/my/data,支持个人空间和团队空间 | |
| rename | No | 冲突时是否自动重命名,默认 0 | 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations available, and the description lacks details on behavioral traits such as conflict handling, parent directory existence, permissions, or 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?
Single sentence, efficient and front-loaded with core action; no unnecessary 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 output schema and no annotations, the description is too brief, missing return values, error conditions, and usage context for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3 is appropriate; the description repeats path type information but adds little beyond 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 verb 'create', the resource 'folder on zspace NAS', and specifies support for both personal and team space paths, distinguishing it from file creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like copy_item or create_file, nor any prerequisites or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_itemC
删除 zspace NAS 上的文件或文件夹,支持个人空间和团队空间路径
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | 要删除的文件/文件夹路径列表(移至回收站),支持个人空间和团队空间路径 | |
| show_hidden | No | 是否包含隐藏文件 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It doesn't mention that items are moved to recycle bin (only in parameter description), nor any authorization needs or confirmation requirements. The agent might incorrectly assume permanent deletion.
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, 13 Chinese characters, no fluff. Every word is meaningful. Ideal conciseness for a straightforward delete operation.
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?
No output schema, no annotations. Description doesn't mention return values (e.g., success, error handling) or what happens with non-existent paths. For a simple tool this is insufficient; agent lacks info on outcome.
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 100%, so baseline 3. Parameter descriptions add meaning (paths: list, move to trash; show_hidden: boolean). Main description adds nothing beyond schema, but schema already adequately describes parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it deletes files/folders on zspace NAS, supporting personal and team space paths. However, it omits that deletion is to recycle bin (only mentioned in parameter description). Verb 'delete' is clear and resource is specific, but could be more precise about the recycling behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like move_item or create_file. No prerequisites or context about when it's appropriate to delete items. The description lacks any usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pool_infoB
查看 zspace NAS 存储池信息
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 only states 'view', implying read-only, but discloses no behavioral traits such as whether the data is cached, authoritative, or any potential side effects. The description is too minimal for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose with zero waste. For a zero-parameter informational tool, this level of conciseness is optimal.
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 lack of output schema and annotations, the description is somewhat vague ('storage pool information'). It does not specify what information is returned (e.g., capacity, usage, status), which may leave the agent uncertain about the tool's output. However, for a simple info retrieval with no inputs, it is minimally 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 input schema has no parameters and schema description coverage is 100%, so baseline 3 applies. The description adds no additional param meaning because there are none to explain. It is adequate given the absence of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'view zspace NAS storage pool information', specifying the verb 'view' and the resource 'storage pool info'. It effectively distinguishes from the sibling 'get_pool_names' which likely returns only names, making the purpose distinct.
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 the sibling 'get_pool_names' or any other tool. There is no mention of prerequisites or context, leaving the agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pool_namesB
获取存储池名称映射(pool key → display name)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only states the output (key→display name mapping) but does not mention whether it's read-only, performance characteristics, error handling, or that it returns all pools. The description is too minimal for full transparency.
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, efficient sentence with no fluff. It front-loads the action and outcome, making it quick to parse.
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 has no parameters, no output schema, and is simple, the description provides the core information (mapping retrieval). It explains the output format adequately. Slight deduction for not stating scope (e.g., 'all pools') but overall complete for 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 input schema has 0 parameters with 100% schema description coverage, so the description need not add param details. However, it could explain the return structure more explicitly (e.g., 'returns a dictionary') but the current description 'pool key → display name' implies a mapping sufficiently. Baseline 4 reduced to 3 due to lack of extra 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 tool retrieves a mapping from pool key to display name, using a specific verb (获取) and resource (存储池名称映射). It is distinct from sibling tools which are file operations, so no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. While the tool's purpose is straightforward, the description does not mention use cases, prerequisites, or context for invocation, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesA
列出 zspace NAS 指定目录下的文件与子文件夹。设置 team=true 可列出团队空间文件
| Name | Required | Description | Default |
|---|---|---|---|
| num | No | 每页条目数,默认 100 | 100 |
| path | Yes | 目录路径。个人空间如 /sata12/my/data,团队空间如 /sata12/public | |
| team | No | 是否列出团队空间文件,默认 false | |
| order | No | 排序方向,默认 desc(仅个人空间) | desc |
| start | No | 分页起始偏移,默认 0 | 0 |
| sortby | No | 排序字段,默认 mtime_linux(仅个人空间) | mtime_linux |
| show_hidden | No | 是否显示隐藏文件,默认 0(仅个人空间) | 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the tool is a read operation (listing) and highlights the team space distinction, but does not mention behavior such as pagination limits, recursion depth, or error handling. The lack of annotation makes the transparency adequate but not thorough.
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: two short sentences that convey the core purpose and a key parameter. No unnecessary words or repetition. It is front-loaded with the primary action.
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 7 parameters, no output schema, and moderate complexity, the description covers the essential usage (directory path, team flag). However, it lacks information about return format, pagination behavior, or how to interpret results. Still, it is reasonably complete for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. The description adds no extra semantic value beyond what the schema provides (only mentions 'path' and 'team' implicitly). Baseline score of 3 is appropriate.
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 lists files and subfolders in a specified directory on zspace NAS, with a specific note about the 'team' parameter to switch to team space. This is a concrete verb+resource pairing that distinguishes it from siblings like 'search_files' or 'list_recent_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 implies usage for listing directory contents and mentions the team parameter, but it does not provide guidance on when to use this tool over alternatives like 'search_files' or 'list_recent_files'. No explicit context for exclusion or when-not-to-use is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recent_filesC
获取 zspace NAS 上最近访问的文件列表
| Name | Required | Description | Default |
|---|---|---|---|
| num | No | 每页条目数,默认为 100 | 100 |
| scope | No | 查询范围(1=个人空间最近文件, 2=团队空间最近文件),默认为 1 | 1 |
| start | No | 分页起始偏移,默认为 0 | 0 |
| show_hidden | No | 是否显示隐藏文件(0/1),默认为 0 | 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does not disclose what 'recently accessed' means (e.g., time frame), sorting order, or whether it includes hidden files by default. Minimal behavioral context is provided.
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, very concise and front-loaded. However, it lacks structured guidance for an agent, such as examples or elaboration, making it merely adequate.
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 4 parameters and lack of output schema, the description is incomplete. It does not explain pagination behavior, return format, or the difference between personal and team scope, leaving significant gaps 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?
Schema coverage is 100%, so the parameters are adequately described in the schema. The description does not add any new meaning beyond the existing parameter descriptions 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 clearly states that the tool lists recently accessed files on zspace NAS, which is a specific verb and resource. However, it does not differentiate from sibling tools like 'list_files' or 'search_files', so the purpose is clear but lacks distinctiveness.
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. There is no mention of when not to use it or comparisons to siblings such as search_files or list_files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_itemC
移动或重命名 zspace NAS 上的文件或文件夹,支持个人空间和团队空间路径
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 目标路径,支持个人空间和团队空间路径 | |
| paths | Yes | 要移动的文件/文件夹路径列表,支持个人空间和团队空间路径 | |
| rename | No | 冲突时是否自动重命名(0/1),默认为 0 | 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must bear full burden. It mentions support for personal/team spaces but fails to disclose critical behaviors like how conflicts are handled (aside from the rename parameter default), whether moves are atomic, or what permissions are 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 wasted words. It is appropriately concise for a simple tool, though it could benefit from slightly more structure or detail.
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 absence of an output schema and annotations, the description is incomplete. It does not explain return values, conflict resolution beyond the rename parameter, or any side effects. For a tool with three parameters, more context is needed.
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 100%, so the baseline is 3. The description does not add meaning beyond the schema's parameter descriptions; it only restates the overall purpose. No additional semantics are provided for individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool moves or renames files/folders on zspace NAS, specifying the resource and action. However, it does not differentiate from sibling tools like rename_item or copy_item, which could cause confusion since it includes both move and rename functionality.
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 rename_item or copy_item. Agents are left to infer based on the tool name alone, with no 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.
read_fileA
读取 zspace NAS 上文本文件的内容(仅限文本文件,非文本文件返回错误),支持个人空间和团队空间路径
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 文件完整路径,支持个人空间和团队空间路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It reveals that the tool is read-only, supports specific path types, and errors on non-text files. This is adequate for a simple read operation, though it could mention output format or encoding.
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 efficiently conveys all necessary information without waste. It is front-loaded with the core purpose.
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 one parameter and no output schema, the description provides sufficient context: purpose, file type restrictions, and path scope. It could benefit from mentioning encoding or file size limits, but overall it is complete for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond what the schema already provides. It confirms that path supports personal/team spaces, which is already in the schema description. No additional semantic details about path format or constraints are added.
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 (read), the resource (text files on zspace NAS), and the scope (personal and team space paths). It also distinguishes itself from siblings by specifying text files only, which differentiates it from tools like list_files 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 clear constraints: only text files are supported, and non-text files return an error. This gives the agent guidance on when to use the tool. However, it does not explicitly state when not to use it or suggest alternatives like search_files for locating files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_itemB
重命名 zspace NAS 上的文件或文件夹,支持个人空间和团队空间路径
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 文件/文件夹的完整路径,如 /sata12/my/data/旧名称,支持个人空间和团队空间 | |
| newname | Yes | 新名称(仅名称,不包含路径) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only mentions path type support, but does not disclose destructive nature, permissions needed, or behavior on failure. Insufficient 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?
Single sentence with no unnecessary words. Front-loaded with action and scope. Could benefit from slight structuring but very efficient.
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?
Lacks details on success/failure behavior, naming constraints, or cross-space limitations. With no output schema and no annotations, the description leaves significant gaps for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds minor context about personal/team space paths, but mostly repeats schema info. Baseline 3 for high 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?
Description clearly states verb 'rename' and resource 'files or folders on zspace NAS', including support for personal and team space paths. Distinguishes from sibling tools like copy, move, and delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like copy_item or move_item. Lacks context for specific scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesB
在 zspace NAS 上搜索文件,同时支持个人空间(/sata12/my/data)和团队空间(/sata12/public)路径
| Name | Required | Description | Default |
|---|---|---|---|
| num | No | 每页条目数 | 30 |
| name | Yes | 搜索关键词 | |
| ftype | No | 文件类型筛选 | |
| start | No | 分页起始偏移 | 0 |
| is_dir | No | 是否仅目录 | |
| max_size | No | 最大文件大小(字节) | 0 |
| min_size | No | 最小文件大小(字节) | 0 |
| order_by | No | 排序方式 (0=名称, 1=修改时间, 2=大小) | 0 |
| file_path | No | 搜索范围路径,如 /sata12/my/data,支持个人空间和团队空间 | /sata12/my/data |
| shared_only | No | 仅搜索共享文件 | 0 |
| show_hidden | No | 是否显示隐藏文件 | 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It implies read-only search but does not explicitly state safety, pagination behavior, or authentication needs. Missing important behavioral traits beyond what is obvious.
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, efficient sentence that is front-loaded and clear. It is concise 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 the tool has 11 parameters, no output schema, and no annotations, the description is too minimal. It does not explain pagination, sorting, filtering, or return format, leaving the agent to infer from the schema alone.
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 100%, so parameters are already documented in the schema. The description adds context about supported paths (personal and team space), which complements the 'file_path' parameter description. However, it adds little beyond that.
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 searches files on the zspace NAS, specifying both personal and team space paths. This verb+resource description distinguishes it from sibling tools like list_files (which lists) and create_file (which creates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., list_files, read_file). The description does not mention when not to use it or provide context for choosing among siblings.
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. Dates show when Glama detected each change.
10 tool updates
v0.5.0- Changed
copy_item2 fields changed- changed
Input schema / properties / paths / descriptionPrevious value: -"要复制的文件/文件夹路径列表"New value: +"要复制的文件/文件夹路径列表,支持个人空间和团队空间路径" - changed
Input schema / properties / to / descriptionPrevious value: -"目标路径"New value: +"目标路径,支持个人空间和团队空间路径"
- Changed
create_file1 field changed- changed
Input schema / properties / path / descriptionPrevious value: -"文件完整路径"New value: +"文件完整路径,支持个人空间和团队空间路径"
- Changed
create_folder1 field changed- changed
Input schema / properties / parent / descriptionPrevious value: -"父目录路径,如 /sata12/my/data"New value: +"父目录路径,如 /sata12/my/data,支持个人空间和团队空间"
- Changed
delete_item1 field changed- changed
Input schema / properties / paths / descriptionPrevious value: -"要删除的文件/文件夹路径列表(移至回收站)"New value: +"要删除的文件/文件夹路径列表(移至回收站),支持个人空间和团队空间路径"
- Changed
list_files5 fields changed- changed
Input schema / properties / order / descriptionPrevious value: -"排序方向,默认 desc"New value: +"排序方向,默认 desc(仅个人空间)" - changed
Input schema / properties / path / descriptionPrevious value: -"目录路径,如 /sata12/my/data"New value: +"目录路径。个人空间如 /sata12/my/data,团队空间如 /sata12/public" - changed
Input schema / properties / show_hidden / descriptionPrevious value: -"是否显示隐藏文件,默认 0"New value: +"是否显示隐藏文件,默认 0(仅个人空间)" - changed
Input schema / properties / sortby / descriptionPrevious value: -"排序字段,默认 mtime_linux"New value: +"排序字段,默认 mtime_linux(仅个人空间)" - added
Input schema / properties / teamAdded value: +{ + "default": false, + "description": "是否列出团队空间文件,默认 false", + "type": "boolean" +}
- Changed
list_recent_files1 field changed- changed
Input schema / properties / scope / descriptionPrevious value: -"查询范围(1=最近文件),默认为 1"New value: +"查询范围(1=个人空间最近文件, 2=团队空间最近文件),默认为 1"
- Changed
move_item2 fields changed- changed
Input schema / properties / paths / descriptionPrevious value: -"要移动的文件/文件夹路径列表"New value: +"要移动的文件/文件夹路径列表,支持个人空间和团队空间路径" - changed
Input schema / properties / to / descriptionPrevious value: -"目标路径"New value: +"目标路径,支持个人空间和团队空间路径"
- Changed
read_file1 field changed- changed
Input schema / properties / path / descriptionPrevious value: -"文件完整路径"New value: +"文件完整路径,支持个人空间和团队空间路径"
- Changed
rename_item1 field changed- changed
Input schema / properties / path / descriptionPrevious value: -"文件/文件夹的完整路径,如 /sata12/my/data/旧名称"New value: +"文件/文件夹的完整路径,如 /sata12/my/data/旧名称,支持个人空间和团队空间"
- Changed
search_files1 field changed- changed
Input schema / properties / file_path / descriptionPrevious value: -"搜索范围路径,如 /sata12/my/data"New value: +"搜索范围路径,如 /sata12/my/data,支持个人空间和团队空间"
2 tool updates
v0.3.0- Added
check_connectivity - Added
read_file
1 tool update
v0.2.0- Removed
make_request
12 tool updates
v0.1.0- First observed
copy_item - First observed
create_file - First observed
create_folder - First observed
delete_item - First observed
get_pool_info - First observed
get_pool_names - First observed
list_files - First observed
list_recent_files - First observed
make_request - First observed
move_item - First observed
rename_item - First observed
search_files
TDQS
Most tools have clearly distinct purposes (create, read, list, search, copy, move, rename, delete, connectivity check, pool info). The only minor overlap is between 'get_pool_info' and 'get_pool_names', which are related but distinguishable.
All tool names follow a consistent verb_noun pattern in lowercase snake_case (e.g., create_file, list_files, check_connectivity), making it easy for an agent to infer the action and target.
With 13 tools, the server covers all essential file management operations and some diagnostic functions without being overwhelming. The number is well-scoped for a NAS CLI server.
The tool set covers most common operations (create, read, list, search, copy, move, rename, delete, folder creation, recent files, pool info). However, there is no tool to write or update file content, which is a notable gap for file management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Egnyte's remote MCP server for secure AI access, search, upload and file management in your account.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Tigris MCP Server seamlessly connects AI agents to Tigris bucket and object management.
The CustomGPT.ai MCP server is a fully managed, RAG-powered endpoint that connects large language models with private knowledge bases and external data sources. It provides tools for retrieval-augmented generation queries (send_message), data ingestion (upload_file), and source listing, enabling AI agents to query private documents like PDFs with high accuracy and real-time citations.
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server for ZeroDrive file management. It enables AI assistants like Claude to interact with ZeroDrive cloud storage through a standardized interface.28134MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for file and directory operations with enterprise-grade security, enabling autonomous AI development workflows.-
- FlicenseCqualityCmaintenanceAn MCP server that exposes the Huawei Cloud CLI as a single tool for AI assistants to discover and execute commands interactively via --help navigation, with built-in safety for destructive operations.91-
- AlicenseAqualityAmaintenanceAI-powered MCP server for TrueNAS SCALE storage operations with governance and safety features, enabling management of pools, datasets, snapshots, disks, alerts, and services.25MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/philipxiaoxi/z-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server