飞牛 NAS (fnOS) 通用 MCP 连接器
将任意飞牛 fnOS NAS 设备接入 WorkBuddy 的通用型 MCP 连接器。用户只需在连接时填写 NAS 地址(IP)、端口、用户名、密码 四项即可使用,代码中无任何硬编码设备信息。
功能
- 文件管理:列目录、创建目录、上传、删除(进回收站)、重命名
- 认证:账密登录 / 长效令牌免密复登(令牌按 NAS 地址隔离,存于
~/.fnos-nas-mcp/) - 用户:当前用户信息、用户列表(管理员)
- 应用与 Docker:第三方应用列表、Docker 容器列表、系统入口列表
- 安全:登录走 fnOS 原生 RSA-OAEP-SHA256 + AES-256-CBC 加密通道,请求带 HMAC-SHA256 签名,凭据仅存本机
连接器包结构(符合 WorkBuddy 连接器市场规范)
fnos-connector/
├── mcp.json # MCP server 定义(stdio + ${ENV} 凭据注入)
├── token-schema.json # 用户连接表单:IP / 端口 / 用户名 / 密码
├── skills/SKILL.md # 使用说明(连接器安装后自动挂载为 skill)
├── pyproject.toml # Python 包定义(发布 PyPI 后可 uvx 一键运行)
├── README.md
└── src/fnos_nas_mcp/ # 连接器实现
├── __init__.py
├── fnos_client.py # fnOS WebSocket 协议客户端(通用化,无内置设备信息)
└── server.py # MCP server(FastMCP,stdio)
连接参数(环境变量)
| 变量 | 必填 | 说明 |
|---|---|---|
FNOS_HOST |
是 | NAS 的 IP 或域名 |
FNOS_PORT |
否 | Web 端口,默认 5666 |
FNOS_USERNAME |
是 | fnOS 登录用户名 |
FNOS_PASSWORD |
是 | fnOS 登录密码 |
首次调用任一工具时自动登录并保存长效令牌;令牌失效自动用配置账密重新登录,全程无需手动干预。
本地手动安装(不经过市场)
在 ~/.workbuddy/mcp.json 中加入(python 路径按本机环境调整,需已安装 mcp、websocket-client、pycryptodome):
{
"mcpServers": {
"fnos": {
"command": "python",
"args": ["C:/path/to/fnos-connector/src/fnos_nas_mcp/server.py"],
"env": {
"FNOS_HOST": "192.168.1.10",
"FNOS_PORT": "5666",
"FNOS_USERNAME": "your-user",
"FNOS_PASSWORD": "your-pass"
}
}
}
}
保存后需在 WorkBuddy 连接器管理页面(自定义连接器入口)点击"信任"以启用。
上架到 WorkBuddy 连接器市场
- 发布 Python 包:将
src/与pyproject.toml发布到 PyPI(python -m build && twine upload dist/*),包名fnos-nas-mcp。发布后mcp.json中的uvx fnos-nas-mcp即可在任何用户机器上自动拉起,无需预装环境。 - 提交连接器包:向 WorkBuddy 连接器市场仓库提交
fnos-connector/目录(mcp.json+token-schema.json+skills/SKILL.md),marketplace 侧的索引(connectors.json)中登记 id(建议fnos)、名称"飞牛 NAS"、描述与图标。 - 审核要点:token-schema 已声明凭据仅存本机;server 无遥测、无硬编码地址;删除操作默认进回收站。
注意:PyPI 上架前,也可以把包发布为 Git 仓库,用户侧 mcp.json 用
uvx --from git+https://... fnos-nas-mcp运行。
Metadata
Release files for fnos-nas-mcp 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| fnos_nas_mcp-1.0.0.tar.gz | 13.6 kB | Without provenance | Details for fnos_nas_mcp-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fnos_nas_mcp-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for fnos_nas_mcp-1.0.0-py3-none-any.whl |
Total release size: 26.9 kB
Release files / fnos_nas_mcp-1.0.0.tar.gz
| Download URL | fnos_nas_mcp-1.0.0.tar.gz |
|---|---|
| Size | 13.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
92ded0e4d1f0e74497a0eaa0e2f53c6e1965ce7701231a1109b5ca702e04e54d
|
|
BLAKE2b-256 checksum How to use checksums |
9cdf496adbdb2a4346db48244884b75d14c09b7a0d010504a8a789012fdb5012
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fnos_nas_mcp-1.0.0-py3-none-any.whl
| Download URL | fnos_nas_mcp-1.0.0-py3-none-any.whl |
|---|---|
| Size | 13.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a957f9286a97692ca36652e0de437af48ea6faf2704e826f548835c4150603da
|
|
BLAKE2b-256 checksum How to use checksums |
3766b3dd846e654f7178f6ca087f2998d282e4011ce4a8b84e72c8973cca29ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for fnos-nas-mcp 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.