minas-webdav
Discovered★ 4Xiaomi Smart Storage (MINAS) WebDAV control toolkit — CLI, probe, local proxy, agent skill & MCP server (Apache-2.0)
minas-webdav
小米智能存储(Xiaomi Smart Storage / MINAS)WebDAV 控制工具箱——不挂盘、不依赖 Samba,直接通过设备的 HTTPS WebDAV 端点(:5000)控制整个 /pool0/data 存储池。
三条能力线:
| 入口 | 作用 |
|---|---|
python -m minas_webdav <cmd> | 文件 CLI:列目录、统计、上传下载、移动复制、删除 |
python -m minas_webdav probe | 协议能力探测:读写全链路 + 认证 + 锁 |
python -m minas_webdav proxy | 本机反向代理(127.0.0.1:8899),供 Windows net use 挂 N 盘 |
安装
pipx install minas-webdav # CLI(推荐)
pip install "minas-webdav[mcp]" # 需要 MCP server 时加 extra
要求 Python ≥ 3.10。除 [mcp] extra 外无第三方依赖(只用标准库)。
不装也可以:PYTHONPATH=. python3 -m minas_webdav --help。
前置条件
配套环境、设备版本与兼容性说明见 docs/ENVIRONMENT.md(Windows 11 / Python 3.10+ / 小米智能存储官方客户端 1.0.8.170 / mcp 2.x;NAS 服务面:nginx/1.24.0 + DAV:1,2)。
- NAS 与本机同一局域网(默认
192.168.1.100:5000) - 官方客户端已登录过(证书在
%LOCALAPPDATA%\minasCert\) - 凭据文件在仓库外:
%LOCALAPPDATA%\minasCred\credentials.env
MINAS_USER=...
MINAS_PASS=...
- 非机密配置:复制
minas_webdav/minas_config.example.json为minas_webdav/minas_config.json(已 gitignore),填入真实host/cn
快速开始
# 列目录(JSON 输出适合 agent)
python -m minas_webdav ls /pool0/data --json
# 存储池容量
python -m minas_webdav df
# 上传 / 下载(中文路径直接写)
python -m minas_webdav put ./local.txt "/pool0/data/agent操作区/a.txt"
python -m minas_webdav get "/pool0/data/agent操作区/a.txt" ./back.txt
# 整理
python -m minas_webdav mkdir /pool0/data/work
python -m minas_webdav mv /pool0/data/a.txt /pool0/data/work/a.txt
python -m minas_webdav cp /pool0/data/a.txt /pool0/data/a-copy.txt
python -m minas_webdav rm /pool0/data/work -r # 递删前务必确认!
# 能力探测(写测试用唯一路径,自动清理)
python -m minas_webdav probe
# 本地代理(供挂 N 盘 / Explorer 使用)
python -m minas_webdav proxy
也可 pip install -e . 后直接用 minas-webdav / minas-webdav-proxy / minas-webdav-probe 命令。
挂 N 盘(可选)
.\scripts\挂载NAS为N盘.ps1 # 自动拉起代理 + net use N:
.\scripts\删除N盘文件.ps1 <路径> # 删掉资源管理器删不动的文件
命令一览
| 命令 | 作用 |
|---|---|
ls stat tree find | 浏览(--max-depth 防全盘递归) |
du df | 目录体积 / 存储池容量 |
get put cat | 传输 / 查看文本 |
mkdir mv cp rm | 整理(rm -r 需用户确认) |
退出码:0 成功 · 1 错误 · 2 不存在 · 3 认证/网络。
项目结构
minas_webdav/
config.py # 配置与凭据加载(minas_config.json + credentials.env)
cli.py # 文件 CLI
probe.py # 能力探测
proxy.py # 本机反向代理(WebClient 兼容调优)
scripts/ # 挂 N 盘 / 清理脚本 + rclone.zip
docs/ # webdav-surface.md 协议实测结论
协议要点(详见 docs/webdav-surface.md)
Host/SNI 必须用设备 CN(nas.<uid>.<hash>),不能裸用 IPPROPFIND Depth: infinity被拒(403),递归必须逐层Depth: 1MOVE/COPY的Destination用百分号编码的纯路径;IP 形式的 URL 会 400- 无认证访问返回 451;Basic 即可,mTLS 可选
安全约束
- 凭据与设备 CN 不进 Git(
.gitignore已挡minas_config.json/*.env) - 不写日志、不打印密码;不碰 SSH/Docker/固件
- 递归删除、批量动照片/备份目录前必须征得用户同意
Agent 接入
本项目同时提供两种 agent 接入方式(设计见 docs/agent-integration-design.md):
| 方式 | 位置 | 说明 |
|---|---|---|
| Skill | 仓库 skill/ → 拷到 ~/.config/mimocode/skills/minas-webdav/ | SKILL.md 触发 + 调本 CLI;全局可用 |
| MCP | mcp_server.py + mimocode.jsonc 注册 minas-webdav | 14 个 nas_* 工具(stdio);nas_rm 递归必须 confirm=true |
安装 Skill(MiMoCode):
Copy-Item -Recurse skill "$HOME\.config\mimocode\skills\minas-webdav"
注册 MCP(任意 MCP 客户端,stdio):
pipx install 'minas-webdav[mcp]' # 提供 minas-webdav-mcp
// 通用 mcpServers 形式
"minas-webdav": {
"command": "minas-webdav-mcp",
"args": []
}
DeepSeek Harness 写法
# ~/.dsh/profiles/web/cordis.patch.yml
- insert:
- id: mcp-minas
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: minas
transport: stdio
command: minas-webdav-mcp
或者一行装完(DSH 插件,会替你插入同样的那行配置):
dsh plugin add dsh-minas-webdav
装完可用 dsh plugin 的补丁关掉它(- id: mcp-minas-webdav + disabled: true)。
证书与凭据只放本机(默认 ~/.dsh/minasCert、~/.dsh/minasCred/credentials.env,可用
MINAS_CERT_HOME / MINAS_CRED_FILE 覆盖),MCP 配置里不出现任何凭据。
改 CLI 后请同步更新 SKILL.md 命令表与 MCP 工具签名。
License
Apache-2.0,见 LICENSE 与 NOTICE。与 Xiaomi 无关联。
相关
- 挂 N 盘可选 rclone(官方下载;仓库不打包二进制)
- Samba 通道(仅 Z: 备份共享)是另一套:
minas-skill(SMB 445)
Comments
Loading…
Similar plugins
by Ikalus1988
Deployment scripts for MisakaNet Workers
★ 543
↓ 2.2k/wk
Apache-2.0
Python
Oct 26, 2026
dsh plugin --profile web add misakanetby chushixixin
Expose DeepSeek Harness agent capabilities as an MCP server (brain=Hermes, arms=Harness)
★ 13
↓ 76/wk
MIT
TypeScript
Aug 15, 2026
dsh plugin --profile web add @chushixixin/dsh-harness-mcp-serverby newbeebnb
Keyless web powers for any MCP client: web_search, JS-rendered web_extract over dual CDP Chrome with proxy failover, and 7 real-browser page_* tools in an isolated context.
★ 0
MIT
JavaScript
Sep 8, 2026
dsh plugin --profile web add hermes-web-mcpby sjh9714
Capture selected DSH, local MCP, or native WebMCP calls as reviewed, parameterized routines, expose typed tools, and replay with fresh approval.
★ 1
↓ 164/wk
MIT
JavaScript
Sep 5, 2026
dsh plugin --profile web add routinekitby xby-skill
一个提供全面域名研究工具(包括RDAP、WHOIS和DNS查询功能)的模型上下文协议(MCP)服务器。
★ 0
MIT
TypeScript
Aug 28, 2026
dsh plugin --profile web add xby-domain-lookupby shiliu153
DeepSeek Harness bundle: manage MCP servers — list, probe, add from pasted project references, toggle, remove, rotate credentials. Official dsh-mcp-client contract compliant.
★ 0
NOASSERTION
JavaScript
Oct 14, 2026
dsh plugin --profile web add @dsh-contrib/dsh-mcp-manager