飞牛 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运行。
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 | |
|---|---|---|---|
| fnos_nas_mcp-1.0.0.tar.gz | 13.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fnos_nas_mcp-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
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
|