fnos-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| loginA | [交互式] 发起 OAuth 2.0 + PKCE 登录。 返回授权 URL。用户需在浏览器打开该 URL,登录 fnOS 并确认授权, 然后把页面显示的一次性 code 用 submit_auth_code 工具提交。 不要向用户索取 NAS 账号密码。 |
| submit_auth_codeA | 提交 OAuth 一次性授权码,完成 token 交换与 session 保存。 注意:该工具通过带 pty 的后台进程完成交互(CLI 要求 TTY 等待输入), 仅在 code 有效(5 分钟内、未使用)时成功。 |
| logoutA | 退出登录并清理当前 profile 的 session 与 OAuth pending 文件。 |
| whoamiA | 查询当前登录用户信息(验证 session 有效性)。 |
| status_overviewC | 聚合只读状态:系统信息 + CPU/内存监控(对应 trim-cli +status)。 |
| system_infoC | 获取系统信息:主机名、trim 版本、内核版本、uptime 等。 |
| system_hardwareC | 获取硬件信息。 |
| system_volumesC | 列出所有卷(含配置卷)。 |
| system_power_planB | 获取定时开关机计划与状态。 |
| system_detailsB | 聚合查询系统只读信息(trim 版本、内核、主机名、uptime、风扇模式、 通电自启、下次定时关机、Docker 概要等 18 项;单条失败不影响其余)。 |
| system_timezone_listB | 列出系统支持的时区。 |
| file_listB | 列出目录内容(单页)。 |
| file_list_allA | 列出目录全部内容(自动汇总所有分页为 JSON 数组)。 |
| file_searchC | 全盘或指定目录搜索文件。 |
| file_propertyC | 获取文件/目录属性。 |
| file_sizeC | 计算文件/目录大小。 |
| file_download_urlB | 获取文件下载 URL(通常需浏览器已登录 cookie)。 |
| file_usageA | 查看卷空间使用分类汇总。 trim-cli 的 位置参数只接受整数(1 表示 /vol1),传 vol1 会报 "invalid digit found in string",所以这里先把数字部分抽出来再传。 |
| file_recentC | 列出最近访问的文件。 |
| file_trash_listA | 列出回收站内容。 ⚠️ 实测在 fnOS 1.2.0800 上,file rm 是硬删除,回收站接口只回 {"result":"succ","uver":...} 而不含任何条目,带不带 path 都一样。 不要把本工具的输出当作"删除是否可恢复"的依据。 |
| file_calcA | 计算目录统计信息(递归统计,与 file_size 的单条目大小不同)。 |
| file_accessB | 查询当前用户对文件/目录的访问权限。 |
| file_is_mount_pointC | 判断路径是否为挂载点。 |
| file_search_othersB | 搜索其他用户共享的文件。 |
| file_task_cancelB | 取消文件后台任务(搜索/压缩等长任务,写操作)。 |
| file_search_cancelC | 取消全盘搜索任务(写操作)。 |
| file_app_dir_listC | 列出应用专属目录(appdirs)。 |
| file_sys_part_infoC | 查看系统分区信息。 |
| file_team_listC | 列出团队空间。 |
| file_team_trash_listC | 列出指定团队空间的回收站。 |
| file_team_trash_binA | 列出团队空间垃圾桶(trashbin,与分空间回收站不同)。 |
| file_team_trash_restoreB | 从团队空间回收站恢复文件(写操作)。 |
| file_team_trash_clearB | 清空团队空间回收站(危险写操作,不可恢复)。 |
| file_fav_listC | 列出收藏的文件。 |
| file_fav_addC | 收藏文件/目录(写操作)。 |
| file_fav_delC | 取消收藏(写操作)。 |
| file_share_infoC | 查询文件/目录的共享信息。 |
| file_share_listC | 列出指定用户的文件共享。 |
| file_share_list_othersC | 列出其他用户的共享。 |
| file_share_admin_listC | 管理员视角列出文件共享。 |
| file_share_admin_list_othersC | 管理员视角列出其他用户的共享。 |
| file_share_addC | 创建文件共享(写操作)。 |
| file_share_delC | 删除文件共享(写操作)。 |
| file_acl_getC | 查询文件 ACL 权限。 |
| file_acl_setB | 设置文件 ACL 权限(写操作,可能批量影响子项)。 |
| file_trimacl_reportB | 导出卷 ACL 迁移报告(写操作,生成 CSV 报告文件)。 |
| file_mkdirC | 创建目录(写操作)。 |
| file_renameC | 重命名文件/目录(写操作)。 |
| file_copyC | 复制文件到目标目录(写操作)。 |
| file_moveC | 移动文件到目标目录(写操作)。 |
| file_deleteA | 删除文件/目录(写操作,⚠️ 永久删除)。 实测:trim-cli 的 file rm 是硬删除,文件不会出现在 /vol1//.@#local/trash 里,file_trash_list 也查不到, file_trash_restore 更是无效。调用前请自行确认。 |
| file_trash_restoreA | 从回收站恢复文件(写操作)。 ⚠️ 实测不可靠:即使返回 "Restored ",文件也常常没有回到原位 (因为 file rm 走的是硬删除,回收站里本来就没有该条目)。恢复后请 用 file_property 确认。 |
| file_trash_clearB | 清空回收站(危险写操作,不可恢复)。 |
| file_check_uploadA | 预检上传目标(探测远端占用与配额)。 overwrite 默认 skip,这是非破坏性的:目标已存在时返回 {"result":"succ","skip":1} 表示会跳过,原文件不动。 警告(真机实测):
|
| file_uploadA | 上传本地文件到 NAS 目录(写操作)。 overwrite 决定远端同名文件冲突策略:skip 跳过、replace 覆盖、 rename 保留旧文件并给新文件改名。上传前可先用 file_check_upload 预检目标状态。 |
| file_write_textA | 把文本内容直接写入 NAS 文件(写操作;组合 upload 实现)。 等价于在服务器临时文件上执行 file upload:远端父目录不存在时会 先用 file_mkdir 逐级创建。overwrite=skip 时远端同名文件已存在则 跳过不写。适合写配置、脚本、compose 文件等小文本。 |
| file_compressB | 压缩文件/目录为压缩包(写操作)。 |
| file_extractC | 解压压缩包到指定目录(写操作)。 |
| file_chownB | 修改文件/目录属主(写操作;sub=True 递归应用到子项)。 |
| photos_foldersC | 列出相册文件夹。 |
| photos_searchB | 搜索相册照片(支持 AI 语义搜图;total 才是匹配总数)。 |
| photos_detailC | 获取照片详情。 |
| photos_preview_urlA | 获取照片预览 URL(通常需浏览器已登录 cookie)。 |
| photos_raw_requestA | 调用 Photos 原生 HTTP API(高级用法;POST/PUT/PATCH/DELETE 需确认)。 |
| app_listA | 列出已安装的应用。 返回的每个应用同时有 appName(API 标识,如 fn-codeserver)和 name(显示名,如 code-server)。后续所有 app_* 工具要传的是 appName,传 name 会报 "installed app not found"。 |
| app_statusC | 查询单个应用状态。 |
| app_store_searchC | 在应用商店搜索应用。 |
| app_store_detailC | 查看应用商店中的应用详情。 |
| app_check_updateC | 检查已安装应用的更新。 |
| app_installB | 安装应用(写操作)。dry_run=True 时仅预演不执行。 |
| app_uninstallC | 卸载应用(写操作)。 |
| app_startC | 启动应用(写操作)。 |
| app_stopC | 停止应用(写操作)。 |
| app_restartC | 重启应用(写操作)。 |
| app_updateA | 升级应用到指定版本(写操作)。dry_run=True 仅预演。 |
| app_task_statusC | 查询应用任务进度(安装/更新/卸载等)。 |
| app_task_cancelC | 取消应用任务(写操作)。 |
| app_install_cancelB | 取消应用安装任务(写操作)。 |
| app_update_cancelC | 取消应用更新任务(写操作)。 |
| app_download_cancelC | 取消应用商店下载任务(写操作)。 |
| app_install_fpkB | 从 fpk 离线安装包安装应用(写操作;remote_path 或 local_file 二选一)。 |
| app_task_actionB | 按类型取消应用任务(写操作,聚合入口)。 action 对应 CLI 子命令:task-cancel / install-cancel / update-cancel / app download cancel。 |
| app_config_listC | 列出所有应用的配置项。 |
| app_config_detailC | 查看指定应用的配置项详情。 |
| app_config_sysC | 查看应用中心系统配置。 |
| app_config_auth_pathsC | 查看应用的鉴权路径配置。 |
| app_config_wizardC | 获取应用配置向导数据(安装向导表单定义)。 |
| app_config_setC | 修改应用配置项(写操作)。fields 为 JSON object 透传。 |
| app_config_set_sysB | 修改应用中心系统配置(写操作,影响全局应用行为)。 |
| app_config_auto_updateC | 开启/关闭应用自动更新(写操作)。 |
| app_config_proxy_accessC | 允许/禁止应用的外网代理访问(写操作)。 |
| app_openapi_app_detailC | 查询应用 OpenAPI 详情。 |
| app_openapi_allow_auth_pathsC | 查询应用 OpenAPI 允许的鉴权路径。 |
| app_openapi_add_auth_pathC | 为应用添加 OpenAPI 鉴权路径(写操作)。 |
| app_openapi_add_auth_inherit_fileC | 为应用添加 OpenAPI 鉴权继承文件(写操作)。 |
| app_store_listC | 列出应用商店全部应用。 |
| app_store_latest_releaseC | 获取应用商店最新上架应用。 |
| app_guide_check_installedB | 批量检查应用是否已安装(装机引导)。 |
| app_guide_batch_installC | 批量安装商店应用(写操作,装机引导流程)。 |
| app_base_dataD | 获取应用中心基础数据。 |
| app_sac_store_listC | 获取 SAC 应用商店列表(应用推荐数据源)。 |
| app_service_listC | 列出应用提供的服务。 |
| app_entry_listC | 列出应用入口;only_hidden=True 仅列出隐藏入口。 |
| app_desktop_listC | 列出桌面应用图标。 |
| app_operation_settingsC | 查看应用运营设置。 |
| app_common_volumeA | 查询/设置应用公共卷(set_volume 非空时为写操作)。 |
| docker_containersC | 列出 Docker 容器。 |
| docker_container_actionB | 对容器执行操作(写操作):start / stop / restart / kill。 |
| docker_container_rmA | 删除容器(危险写操作;force=True 强制删除运行中的容器)。 |
| docker_imagesC | 列出 Docker 镜像。 |
| docker_image_pullC | 拉取 Docker 镜像(写操作)。 |
| docker_image_rmB | 删除 Docker 镜像(危险写操作)。 |
| docker_statsC | 查看 Docker 资源占用统计。 |
| docker_compose_lsB | 列出 Docker Compose 项目。 |
| docker_requestA | 调用任意 appcgi.dockermgr.* 端点(写操作,兜底入口)。 固定命令未覆盖的 Docker 端点走这里:networkList、composeContainers、 composeStart/Stop 等。endpoint 只需端点名(CLI 自动加前缀校验), body 为 JSON object 且不能包含 req/reqid(CLI 自动生成)。 Compose/网络/系统类写操作前先做只读探测(如 composeList)。 |
| docker_compose_createA | 登记 Docker Compose 项目(写操作;composeCreate 端点)。 请求体真实结构(源自 fnOS 前端逆向):{"auto_build": false, "file": "docker-compose.yaml", "folder": "/vol1/1000/xxx", "project_name": "xxx"}。compose 内容不在请求里——必须先用 file_write_text/file_upload 把 yaml 文件写入 folder,再调本工具。 典型流程:1) file_write_text 写 compose 文件;2) 本工具登记项目; 3) docker_compose_build(project_name) 真正拉起容器(compose up -d); 4) docker_compose_containers(project_name) 验证。auto_build=true 可合并第 2/3 步。 注意:folder 的父目录若自身已带 compose 文件(如 /vol1/1000/docker 自带 docker-compose.yml),fnOS 会判定其为 compose 项目,嵌套创建 返回 errno 0x03200107(父级目录已存在项目),应换干净父目录; 0x03200102 表示 folder 下找不到 compose 文件。 |
| docker_compose_buildA | 拉起 Compose 项目容器(写操作;composeBuild,等价 compose up -d)。 新登记的项目必须先 build 才有容器;composeStart 只对已 build 过的 项目生效(它仅执行 docker compose start,不创建容器)。 |
| docker_compose_startA | 启动已 build 的 Compose 项目(写操作;composeStart)。 仅执行 docker compose start,项目必须先 composeBuild 过; 未 build 的项目请用 docker_compose_build。 |
| docker_compose_stopB | 停止 Compose 项目(写操作;composeStop,容器转 Exited)。 |
| docker_compose_deleteB | 删除 Compose 项目登记(写操作;composeDelete,项目列表清零)。 |
| docker_compose_containersC | 列出 Compose 项目下的容器(composeContainers)。 |
| docker_container_createA | 创建 Docker 容器(写操作)。 支持端口/挂载映射、环境变量、内存/CPU 限制与启动策略。 创建后可用 docker_containers(--all) 与 docker_container_action 管理。 ⚠️ cmd 的限制:trim-cli 的 --cmd 会按空格重新切分,所以 cmd=["sh","-c","sleep 300"] 实际落成 ["sh","-c","sleep","300"], ["sh","-c","while true; do ...; done"] 这类命令会直接跑挂。需要带空格 的参数时改用 docker_request(endpoint="containerCreate", body={...}) 传原始 Cmd 数组。 |
| docker_container_inspectC | 查看容器详细配置(inspect)。 |
| docker_container_topC | 查看容器内进程列表(top)。 |
| docker_container_statsA | 查看单个容器的资源占用统计(cpuUsage / usedMem / networkRx / networkTx)。 注意:必须传 64 位容器 ID。传容器名时上游只返回 {"result":"succ"} 空壳,不报错,容易误判成"没有数据"。 |
| docker_container_updateC | 更新容器配置(写操作):重启策略 / 内存 / CPU 限制。 |
| docker_image_inspectC | 查看镜像详细信息(inspect)。 |
| download_listC | 列出下载任务。 |
| download_infoC | 查看下载任务详情。 |
| download_filesC | 查看下载任务的文件列表。 |
| download_add_uriC | 新建下载任务(写操作)。 |
| download_actionB | 批量操作下载任务(写操作):pause / resume / retry / rm。 |
| download_statsC | 查看下载中心全局统计。 |
| download_add_pathB | 从 NAS 本地路径新建下载任务(写操作,如 .torrent 文件)。 |
| download_requestB | 调用下载中心原始 API(兜底;写方法自动带 --yes)。 |
| logger_listC | 分页查询系统日志。 |
| logger_modulesC | 列出日志模块。 |
| logger_exportC | 导出日志(写操作)。 |
| logger_clearB | 清除指定级别/模块的日志(危险写操作,不可恢复)。 |
| logger_archive_queryC | 查询日志归档配置。 |
| logger_archive_setB | 设置日志归档配置(写操作;switch/file_path 必填,其余可选)。 |
| logger_debuglogB | 开始复制调试日志到本地目录(写操作,生成诊断数据)。 |
| monitor_cpuC | 查看 CPU 使用率。 |
| monitor_memoryC | 查看内存使用率。 |
| monitor_networkC | 查看网络流量。 |
| monitor_diskC | 查看磁盘 IO 统计。 |
| monitor_gpuC | 查看 GPU 使用率。 |
| monitor_processesC | 列出系统进程。 |
| monitor_warningsC | 查看系统告警。 |
| monitor_npuC | 查看 NPU 使用率。 |
| monitor_batteryB | 查看电池状态(笔记本/UPS 场景)。 |
| monitor_fanC | 查看系统风扇转速。 |
| monitor_proc_infoC | 查询指定进程的详细监控信息。 |
| monitor_proc_servicesC | 查询系统服务进程监控。 |
| monitor_beep_supportedC | 查询是否支持蜂鸣器。 |
| monitor_beep_eventsC | 查询蜂鸣器事件记录。 |
| monitor_beep_reasonsC | 查询蜂鸣器鸣叫原因。 |
| monitor_mute_beeperC | 静音蜂鸣器(写操作)。 |
| monitor_metricsA | 按指标名批量查询监控数据(gen 通用入口)。 可选指标:storeSpeed(存储吞吐)、netSpeed(网速)、 cpuBusy(CPU 忙碌)、memPercent(内存占用)。 |
| network_ssh_statusA | 查询 SSH 服务状态(开关、端口、sftp)。 trim-cli 没有 status 子命令( |
| network_ssh_switchB | 启用或禁用 SSH 服务(写操作)。 |
| power_rebootB | 重启 NAS(危险写操作)。 |
| power_poweroffC | 关闭 NAS(危险写操作)。 |
| storage_overviewD | 存储总览。 |
| storage_poolsB | 列出存储池。 |
| storage_disksC | 列出硬盘。 |
| storage_disk_healthC | 查看硬盘健康状态。 |
| storage_disk_smartC | 查看硬盘 SMART 信息。 |
| storage_spaceC | 查看存储空间容量。 |
| storage_free_disksC | 列出未加入存储池的空闲硬盘。 |
| storage_removableC | 列出可移动设备(U 盘/移动硬盘)。 |
| storage_disk_infoC | 查看硬盘详细信息。 |
| storage_mountC | 挂载存储空间(写操作)。 |
| storage_umountB | 卸载存储空间(写操作;部分场景需管理员密码)。 |
| storage_disk_mountC | 挂载独立硬盘(写操作)。 |
| storage_disk_umountC | 卸载独立硬盘(写操作)。 |
| user_listC | 列出 NAS 用户。 |
| user_infoD | 查询用户信息。 |
| user_groupsC | 列出用户组。 |
| user_group_infoC | 查询用户组详情。 |
| user_frozen_listC | 列出被冻结的账号。 |
| user_list_ugB | 列出用户与用户组(可带版本号做增量查询)。 |
| user_group_usersB | 查询用户组成员关系(按版本增量)。 |
| user_login_devicesC | 列出当前用户的登录设备。 |
| user_group_addC | 创建用户组(写操作)。 |
| user_group_modC | 修改用户组(写操作)。 |
| user_group_delC | 删除用户组(危险写操作)。 |
| user_group_set_usersA | 整组设置用户组成员(写操作,覆盖原有成员)。 |
| user_group_add_usersC | 向用户组添加成员(写操作)。 |
| user_group_del_usersC | 从用户组移除成员(写操作)。 |
| user_addC | 创建 NAS 用户(写操作)。 |
| user_modC | 修改 NAS 用户信息(写操作)。 |
| user_delB | 删除 NAS 用户(危险写操作)。 |
| user_set_adminC | 授予/撤销用户管理员权限(写操作)。 |
| user_unfreezeC | 解冻被冻结的账号(写操作)。 |
| baidu_statusC | 查看百度网盘应用状态(是否已绑定)。 |
| baidu_quotaC | 查看百度网盘容量配额。 |
| baidu_listC | 列出百度网盘目录内容。 |
| baidu_searchC | 搜索百度网盘文件。 |
| baidu_mkdirC | 在百度网盘创建目录(写操作)。 |
| baidu_infoB | 查询网盘文件详细信息(可含下载直链 dlink)。 |
| baidu_deleteB | 删除网盘文件(写操作,进入网盘回收站)。 |
| baidu_renameC | 重命名网盘文件(写操作)。 |
| baidu_moveC | 移动网盘文件(写操作;src_paths 最后一项为目标目录)。 |
| baidu_copyA | 复制网盘文件(写操作;src_paths 最后一项为目标目录)。 |
| baidu_uploadC | 上传本地文件到网盘(写操作)。 |
| baidu_downloadC | 从网盘下载文件到 NAS(写操作)。 |
| baidu_share_saveC | 转存分享链接内容到网盘(写操作)。 |
| baidu_task_listC | 列出网盘上传/下载传输任务。 |
| baidu_task_infoC | 查询网盘传输任务详情。 |
| baidu_task_actionB | 批量操作网盘传输任务(写操作):pause / resume / cancel。 |
| baidu_task_clearC | 清空网盘传输任务记录(写操作)。 |
| baidu_sync_listC | 列出网盘同步任务。 |
| baidu_sync_createC | 创建网盘同步任务(写操作)。direction=download 网盘→NAS, upload NAS→网盘。 |
| baidu_sync_updateB | 修改网盘同步任务配置(写操作;status/interval/conflict 必填)。 |
| baidu_sync_actionC | 启停/删除网盘同步任务(写操作)。 |
| diagnostic_exportB | 导出 NAS 诊断日志到本地目录(写操作,生成诊断包)。 |
| diagnostic_stopC | 停止诊断日志导出任务(写操作)。 |
| raw_requestA | 调用系统业务原始 API(兜底,特权入口)。 trim-cli 的命令格式是 例:raw_request("appcgi.network.ssh.status") 返回 SSH 开关状态。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 219 tools
Many tools map to distinct resources, but overlap is frequent: app_task_cancel vs app_install_cancel/app_update_cancel/app_download_cancel/app_task_action, docker_request vs specific Docker tools, raw_request vs everything, and multiple file_share_* variants. Descriptions are detailed, but an agent still faces unclear boundaries on when to use generic fallbacks versus specific tools.
Nearly all tools use a consistent domain_action snake_case convention (file_list, docker_container_action, user_group_add), making names predictable. Minor deviations exist (login, logout, whoami, status_overview, raw_request) but do not seriously hinder readability.
219 tools is extreme for any server, far beyond the 50+ threshold for a severe mismatch; even a broad NAS OS surface does not justify this many, especially with numerous cancel/action variants and catch-all request tools. This volume will overwhelm an agent's selection process.
Coverage spans file operations, users/groups, apps, Docker, storage, network, monitoring, downloads, Baidu Netdisk, logs, and diagnostics, with a raw_request fallback for uncovered endpoints. Gaps remain around pool/volume creation, RAID/backup/snapshot, and network configuration, but core NAS lifecycle operations are broadly represented.