Skip to main content
Glama

@wangguanxiao/feiniunas-mcp

飞牛 fnOS NAS 管理 MCP 服务,通过小智 AI 对话即可管理 NAS。

功能

  • get_nas_status — 获取 NAS 系统状态(主机名、运行时间、CPU 负载、内存、磁盘概况)

  • list_docker_containers — 列出所有 Docker 容器及运行状态

  • get_disk_info — 获取磁盘/存储详细信息

  • control_docker_container — 启动/停止/重启/删除 Docker 容器

Related MCP server: Athena MCP Server

安装

npm install -g @wangguanxiao/feiniunas-mcp

使用

在 xiaozhi.config.json 中配置

{
  "mcpServers": {
    "feiniunas": {
      "command": "npx",
      "args": ["-y", "@wangguanxiao/feiniunas-mcp"]
    }
  }
}

或本地开发模式:

{
  "mcpServers": {
    "feiniunas": {
      "command": "node",
      "args": ["/path/to/feiniunas-mcp/run.js"]
    }
  }
}

示例对话

  • "NAS 现在什么状态?" → 调用 get_nas_status

  • "列出所有 Docker 容器" → 调用 list_docker_containers

  • "磁盘还剩多少空间?" → 调用 get_disk_info

  • "帮我重启 xxx 容器" → 调用 control_docker_container

开发

# 安装依赖
npm install

# 构建
npm run build

# 本地运行
node run.js

# 类型检查
npm run type-check

要求

  • Node.js >= 18

  • 运行在飞牛 NAS 或 Linux 环境上(依赖 hostnameuptimefreedfdocker 等系统命令)

  • Docker 命令需要当前用户有执行权限

安全说明

  • control_docker_container 对容器名做了字符校验,只允许字母数字和 _-.:

  • 不支持 execrun 等可能在容器内执行任意命令的操作

  • 建议以非 root 用户运行,配合 Docker 用户组权限

Available Tools

4 tools
control_docker_containerB

启动、停止或重启飞牛 NAS 上的 Docker 容器

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes操作类型: 'start'(启动)、'stop'(停止)、'restart'(重启)、'remove'(删除)
containerYes容器名称或容器 ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosure. It does not mention the destructive 'remove' action, nor does it describe side effects, permissions, or return values. This is a significant gap for a control tool that can delete containers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that is appropriately concise. It loses a point because it fails to mention the 'remove' action, making it incomplete despite its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two simple parameters and no output schema, the description still leaves gaps: it omits an accepted action, provides no behavioral context, and offers no guidance on side effects or edge cases. The tool is more complex than the description suggests, especially given the destructive remove action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema describes both parameters with 100% coverage, including the allowed action values. The description adds no additional meaning beyond what the schema already provides, so it meets the baseline but does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts, stops, or restarts Docker containers on the NAS, using specific verbs and a resource. However, it omits the 'remove' action that is present in the schema, making it incomplete. It is distinct from sibling tools, which are read-only or listing tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The implied usage is to control Docker containers, which is clear from the description. However, there is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The context is present but not fully articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_disk_infoA

获取飞牛 NAS 的磁盘和存储详细信息,包括各挂载点的容量、已用、可用空间

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for behavioral transparency. While '获取' implies a read-only operation, the description does not explicitly state safety, side-effect absence, authentication needs, or return format details beyond the listed metrics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence that is front-loaded with the verb and resource. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with no output schema, the description adequately covers what the tool returns (per-mount-point capacity, used, available). It is sufficient for selection and invocation, though it could mention platform-specific caveats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline of 4 applies. The description does not need to explain parameters; it adds no parameter semantics but none are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool '获取' (gets) '磁盘和存储详细信息' (detailed disk and storage information) including mount point capacity, used, and available space. This is a specific verb+resource combination that distinguishes it from sibling tools like get_nas_status or list_docker_containers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as get_nas_status. It does not mention any prerequisites, exclusions, or typical scenarios beyond the basic function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nas_statusA

获取飞牛 NAS 的系统状态,包括主机名、运行时间、CPU 负载、内存使用、磁盘概况

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden. It discloses the output contents (hostname, uptime, CPU, memory, disk overview), which implies a read-only status operation. While it does not explicitly state side effects or safety, the 'get' verb and nature of the tool strongly suggest no mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the purpose and enumerates the key data points without any extraneous text. Every word contributes to understanding the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status tool with no parameters and no output schema, the description is complete. It specifies what data will be returned, which is sufficient for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4 per the rubric. The description adds no parameter-related meaning, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action (获取/get) and resource (飞牛 NAS 的系统状态), and enumerates specific status components (hostname, uptime, CPU load, memory, disk overview). This distinguishes it from sibling tools like get_disk_info, which focuses specifically on disk details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It simply states what the tool does, with no mention of context, exclusions, or recommendations among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_docker_containersA

列出飞牛 NAS 上所有的 Docker 容器及其运行状态

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo容器状态过滤: 'all'(全部,默认)、'running'(仅运行中)、'stopped'(仅已停止)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. The verb 'list' and the mention of returning 'running status' clearly convey a non-destructive read operation, which is sufficient for this simple tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently states the tool's purpose and scope. Every word adds value, and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with one optional parameter and no output schema, the description is nearly complete. It explains what is returned (containers and status) and the schema covers filtering, though it could explicitly mention that the operation is read-only for absolute clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the single 'status' parameter with its allowed values and default, so the description does not need to add parameter details. The description adds no extra semantic beyond what the schema already provides, matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all Docker containers on the NAS along with their running status. This is a specific verb-resource combination that distinguishes it from siblings like control_docker_container and get_nas_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for read-only listing, and the sibling name control_docker_container hints at a separation of listing vs controlling. However, there is no explicit guidance on when to use this tool over alternatives or when to prefer another tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.0
    • First observedcontrol_docker_container
    • First observedget_disk_info
    • First observedget_nas_status
    • First observedlist_docker_containers

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct concern: disk storage, system status, container listing, and container control. No overlap in purpose.

Naming Consistency5/5

All tool names follow a clear verb_noun snake_case pattern (get_disk_info, get_nas_status, list_docker_containers, control_docker_container). Verbs are consistent with actions.

Tool Count5/5

Four tools is well-scoped for a NAS management MCP, covering both monitoring and control without bloat.

Completeness4/5

Core NAS monitoring (disk, status) and Docker lifecycle (list, start/stop/restart) are covered. Minor gaps like container logs or network details could be added but are not critical.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/wangguanxiao/feiniunas-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server