ZSpace NAS MCP
ZSpace NAS MCP
90 个 MCP tool + 7 个 skill,让 Claude/Cursor 直接操作极空间 NAS。
你只需要其中一部分
这个仓库包含 3 个独立组件,按需取用。不需要 clone 全部:
你是 | 你需要 | 不需要 |
MCP 用户(想让 Claude Code 操作 NAS) |
| Skill / Dashboard / RAG |
Skill 用户(想用自动化工作流) | 复制 | MCP 源码 / Dashboard / RAG |
RAG 用户(想要语义搜索) |
| Skill / Dashboard |
开发者(想加新 tool/skill) | clone 整个仓库 | — |
MCP 用户(3 步装上)
# 1. 安装 Python 包
git clone <repo> && cd zspace-mcp-poc
pip install -e . # 或用 ./start.sh deps
# 2. 配置连接
cp zspace/.env.example .env && vi .env # 填 NAS_HOST/USER/PASSWORD
# 3. 接入 Claude Code
./start.sh mcp-cfg # 打印配置 → 粘到 mcp.json
# 重启 Claude Code,90 tool 自动出现首次验证: python skills/nas-setup/scripts/check.py
Skill 用户(复制到你的项目)
# 把需要的 skill 复制到你的 Claude Code 项目
cp -r skills/nas-setup ~/your-project/skills/
# 前提: 你的项目也已配置 MCP(上一步)skill 在 skills/ 目录下,Claude Code 在该目录启动时自动发现。
当前 7 个 skill: nas-setup(前置) rag-manager(RAG管理) media-organizer media-naming ios-memo-bak label-manager file-organizer
RAG 用户(Docker 部署到 NAS)
cd rag-server
docker compose up -d # image: coracoo/cherry:nas_rag
# 详细: rag-server/README.md所有可选组件
组件 | 安装方式 | 用途 |
MCP(必须) |
| 90 tool,Claude Code 连 NAS |
Skill | 复制到 | 7 个工作流,Agent 自动触发 |
RAG docker |
| 语义搜索,部署在 NAS 上 |
Dashboard |
| Web UI,iPhone 备忘录入口 |
MCP HTTP transport |
| 局域网/远程 MCP 客户端,Bearer 鉴权,端口 8765 |
百度网盘 |
| OAuth 登录后再用 28 个 znetdisk tool |
用户对 Claude Code 说话 ← 自然语言
↓
┌─ Skill 层(skills/) ──────────────┐
│ nas-setup / rag-manager / media-organizer│ ← LLM 触发词 → 自动加载 SKILL.md
│ media-naming / ios-memo-bak / label-mgr │ ← 组合多个 MCP tool 完成复杂流程
│ file-organizer │
└──────────────────┬───────────────────────┘
↓ MCP 协议(stdio,JSON-RPC 2.0)
┌─ MCP 层(zspace/mcp_server/) ────────────────────┐
│ 90 个 tool(按域分文件) │ ← Claude Code mcp.json 配置后自动发现
│ tools/{files,storage,zvideo,notebook, │ ← 每个 tool = 1 个 NAS API 端点封装
│ znetdisk,proxy,rag,...} │
└──────────────────┬───────────────────────┘
↓ HTTP(nas/)
┌─ 协议层(nas/,顶层共享包) ──────────────────────┐
│ auth.py RSA 登录 + device_id 选择 │ ← Python 库,Skill 和 MCP 都复用
│ client.py NasClient(token 自动续) │
└──────────────────┬───────────────────────┘
↓ HTTP
┌─ ZSpace NAS ─────────────────────────────┐
│ :5055 主 API(文件/影视/记事本/网盘...) │
│ :8000 RAG docker(语义搜索,可选) │
└──────────────────────────────────────────┘三者关系: Skill 是"做什么"(工作流) → MCP 是"怎么做"(单步操作) → nas/ 是"怎么连"(协议)。新用户只需配 MCP,skill 自动生效。
必须 & 可选
组件 | 必须? | 说明 |
| ✅ 必须 | NAS 连接信息(NAS_HOST/USER/PASSWORD) |
| ✅ 必须 | MCP stdio 服务,Claude Code 连它 |
| ✅ 推荐 | 首次跑,验证 env + 登录 + 可选组件 |
| 可选 | RAG 语义搜索。不装也能用 86 个 tool,只是 semantic_search 不可用 |
| 可选 | Web 管理界面(iPhone 备忘录入口等) |
MCP HTTP transport | 可选 |
|
百度网盘 OAuth | 可选 | 28 个 znetdisk tool 需要先登录 |
安装
git clone <repo>
cd zspace-mcp-poc
# 1. 配置连接(必须)
cp zspace/.env.example .env
vi .env # 填 NAS_HOST / NAS_USER / NAS_PASSWORD
# 2. 装 Python 依赖(必须)
./start.sh deps
# 3. 接入 Claude Code(必须)
./start.sh mcp-cfg # 打印配置片段,粘到 ~/.config/claude-code/mcp.json
# 重启 Claude Code → 90 个 tool 自动出现
# 4. 首次验证
python skills/nas-setup/scripts/check.py
# 输出 ✅✅✅ 即可
# 5. (可选) RAG 语义搜索
cd rag-server && docker compose up -d # 需要 NAS docker daemon
# 6. (可选) Web Dashboard
./start.sh dashboard # http://localhost:15050使用示例
用户在 Claude Code 里说: "给一年级教材打《一年级》标签"
Agent 内部执行流程:
nas-setup skill 自动加载 → check.py 验证 .env/登录/RAG
→ semantic_search("一年级 教材") → MCP tool → POST NAS RAG daemon
→ 返回 3 个匹配 {path, snippet, distance}
→ Agent 过滤 distance < 1.0 的
→ save_file_label("一年级", "path1,path2") → MCP tool → NAS API
→ MCP 客户端弹 UI 让用户批准
→ ✅ 完成文件路由
zspace-mcp-poc/
├── nas/ NAS 协议层(顶层共享包,skill/dashboard/mcp 都直接依赖)
│ ├── auth.py RSA 公钥 + device_id 自动选择
│ ├── proto.py URL 公共参数
│ └── client.py NasClient(token 自动续)
│
├── zspace/mcp_server/ MCP Server(入口 python -m zspace.mcp_server)
│ ├── __main__.py -m 入口
│ ├── main.py FastMCP 入口
│ └── tools/ 按域分文件
│ ├── files.py 文件读写 + 标签
│ ├── storage.py 存储池/硬件/SMART/监控
│ ├── zvideo.py 极影视
│ ├── notebook.py 记事 (17)
│ ├── znetdisk.py 网盘
│ ├── proxy.py 远程访问
│ ├── shares.py 共享/下载
│ ├── media.py 音乐/相册
│ └── rag.py RAG 语义搜索
│
├── dashboard/app/ Web Dashboard(入口 python -m dashboard.app)
│ ├── __main__.py -m 入口
│ ├── main.py FastAPI + Session
│ └── routes/
│ ├── shortcut.py iPhone 备忘录 → NAS 入口
│ ├── dashboard.py WebUI
│ └── files.py,notebook.py,zvideo.py 文件/记事本/影视 CRUD
│
├── rag-server/ RAG docker 服务(在 NAS 独立部署,作为文件索引)
│ ├── app/server.py /search /reindex /index /unindex /status
│ ├── Dockerfile + docker-compose.yml
│ └── README.md REST 协议(端点表)
│
├── skills/ 7 个自动化 skill
│ ├── nas-setup/ 前置:验证 env/登录/可选组件
│ ├── rag-manager/ RAG 语义搜索索引管理(门控/重建/增量)
│ ├── ios-memo-bak/ iPhone 备忘录 → 极空间记事本
│ ├── media-organizer/ 极影视分类审计
│ ├── media-naming/ 影视文件命名正向校验
│ ├── label-manager/ 标签管理
│ └── file-organizer/ 文件库诊断
│
├── pyproject.toml 包定义(pip install -e .)
├── docs/API.md NAS 全端点速查
├── docs/MCP.md 90 tool 详细文档
└── start.sh 一键启动(deps/mcp/dashboard/mcp-cfg)MCP Tool 清单(90)
文件 & 存储池 & 监控(20)
Tool | 读/写 | 用途 |
| 读 | 列目录 |
| 读 | 单文件元数据 |
| 读 | 最近访问 |
| 读 | 按类型统计 |
| 读 | 存储池 & 磁盘 |
| 读 | 硬件槽位 |
| 读 | SMART 磁盘健康 |
| 读 | NAS 综合状态 |
| 读 | SSH 实时性能 |
| 读 | 当前用户 |
| 写 | 新建目录 |
| 写 | 重命名 |
| 写 | 移动 |
| 写 | 复制 |
| ⚠️ 删除 | 不可逆,不进回收站 |
极影视(9)
Tool | 读/写 | 用途 |
| 读 | 分类列表(含 is_enable/is_system) |
| 读 | 影片浏览 |
| 读 | 源目录 |
| 读 | 单个分类状态 |
| 写 | 新建分类 |
| 写 | 重命名分类(classification_id + new_name) |
| 写 | 关联源目录(带 is_enable=0 拒绝) |
记事本(17)
Tool | 读/写 | 用途 |
| 读 | 浏览 & 搜索 |
| 读 | 分类树 |
| 读 | 统计 & 配置 |
| 读 | 历史版本 |
| 写 | CRUD |
| 写 | 置顶/标签/移动 |
| 写 | 分类管理 |
百度网盘(28)— 需要 OAuth 登录
分组 | Tool | 用途 |
auth |
| OAuth oob 登录 |
file |
| 云盘文件管理 |
task |
| 传输任务 |
sync |
| NAS ↔ 云盘双向同步 |
autobackup |
| 自动备份 |
share |
| ⭐ 分享链接转存 |
fail |
| 失败列表 |
共享 & 下载 & 远程访问(11)
Tool | 用途 |
| 共享服务状态 |
| 下载 & 分享 |
| zos 云代理 |
音乐 & 相册(3)
Tool | 用途 |
| 歌曲列表 |
| 相册列表 |
| 相册内容 |
RAG 语义搜索(3)— 需要 rag-server docker
Tool | 用途 |
| 自然语言搜文件内容 |
| 重建索引 |
| 索引概况 |
Skill 清单(7)
Skill | 触发词 | 用途 |
| 首次配置、验证连接 | 前置:验证 env/登录/可选组件(RAG) |
| RAG 索引、reindex | RAG 语义搜索索引生命周期管理 |
| iPhone 备忘录同步 | 一键配置 iPhone Shortcut → NAS 记事本 |
| 极影视整理、frds 拆分 | 只读审计分类/源目录/影片抽样 |
| 影视命名、水印/PT名、合集拆分 | 文件系统命名正向合规扫描 |
| 打标签、按标签找 | 标签 CRUD + 反向查询 |
| 重复文件、孤儿文件 | 文件库只读诊断 |
接入标准
MCP Client(mcp.json)
{
"mcpServers": {
"zspace-nas": {
"command": "/path/to/.venv/bin/python",
"args": ["-m", "zspace.mcp_server"],
"cwd": "/path/to/zspace-mcp-poc",
"env": {
"NAS_HOST": "192.168.x.x",
"NAS_USER": "<phone>",
"NAS_PASSWORD": "<password>",
"NAS_DEVICE_ID": "<32 hex>"
}
},
"zspace-nas-http": {
"url": "http://192.168.x.x:8765/mcp",
"headers": {
"Authorization": "Bearer <MCP_HTTP_TOKEN from NAS .env>"
}
}
}
}(本地 Claude Code 用 zspace-nas stdio 条目;局域网/远程 MCP 客户端用 zspace-nas-http HTTP 条目,两个互不干扰,NAS 端跑 ./start.sh mcp-http 后启用)
环境变量
变量 | 必填 | 说明 |
| ✅ | NAS IP |
| ✅ | 手机号 |
| ✅ | 密码 |
| 推荐 | 32 字符,复用已登记设备绕短信验证 |
| 可选 | perf_snapshot 需要 |
| 可选 | 默认 57922 |
| 可选 | RAG daemon 地址,默认 |
写操作安全规则
destroy 类(
remove/notebook_delete) 不进回收站,MCP 客户端弹 UI 让用户批准状态校验(
link_folder_to_classification) 目标分类 is_enable=0 时直接拒绝标签覆盖(
save_file_label) 覆盖式,打新标签前先file_info看现有标签
RAG docker 部署(可选)
cd rag-server
docker compose up -d # image: coracoo/cherry:nas_rag
# 首次跑 reindex
curl -X POST http://nas:8000/reindex -H 'Content-Type: application/json' \
-d '{"scope":"files","full":true}'REST API 详见 rag-server/README.md(端点表)。
文档
文档 | 内容 |
| NAS 全端点速查(12 域,~900 行) |
| 90 tool 参数/返回/端点映射 |
| RAG REST 协议(端点表) |
| iPhone Shortcut 配置图解 |
License
MIT — 详见 LICENSE。欢迎 PR/Issue/Star。
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/coracoo/zspace_skill'
If you have feedback or need assistance with the MCP directory API, please join our Discord server