Ugnas MCP server
Generic MCP server for UGREEN NAS (UGOS) over SSH — 39 tools with dry-run safety.
1 stars79 downloads/wk
Reviews
Write oneNobody has reviewed Ugnas yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Ugnas tools (39, 9 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
backup.createwrite actionArchive a directory into a .tar.gz on the NAS. Mutating: returns a dry-run plan unless a confirmation token is supplied.
backup.listList backup archives (*.tar.gz, *.tgz, *.tar, *.zip) in a directory. Read-only.
backup.restoreExtract a .tar.gz archive into a destination directory. Destructive: returns a dry-run plan unless a confirmation token is supplied.
backup.scheduleInstall a cron job that runs recurring backups. Mutating: returns a dry-run plan unless a confirmation token is supplied.
backup.verifyCheck a backup archive exists, compute its checksum, and list its entry count. Read-only.
docker.composewrite actionRun `docker compose up -d` / `down` / `restart` for a stack directory on the NAS. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.containers.inspectReturn full `docker inspect` JSON for one container. Read-only.
docker.containers.listList Docker containers on the NAS with id, name, image, state and status. Read-only.
docker.containers.logsFetch the most recent log lines from a container. Read-only.
docker.containers.removewrite actionDelete a container. Destructive: returns a dry-run plan unless a confirmation token is supplied.
docker.containers.restartRestart a container. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.containers.startStart a stopped container. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.containers.stopStop a running container. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.images.listList locally stored Docker images. Read-only.
docker.images.pullPull an image from its registry. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.images.removewrite actionRemove a local image. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.networks.connectAttach a container to a network. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.networks.createwrite actionCreate a Docker network. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.networks.disconnectDetach a container from a network. Mutating: returns a dry-run plan unless a confirmation token is supplied.
docker.networks.inspectReturn `docker network inspect` JSON (subnets, attached containers). Read-only.
docker.networks.listList Docker networks. Read-only.
docker.networks.removewrite actionRemove a Docker network. Mutating: returns a dry-run plan unless a confirmation token is supplied.
files.copyCopy a file or directory within the NAS (or NAS-to-NAS). Mutating: returns a dry-run plan unless a confirmation token is supplied.
files.downloadDownload a file from the NAS to the local machine via SFTP. Mutating: returns a dry-run plan unless a confirmation token is supplied.
files.findSearch for files by name glob and/or extension across a directory tree. Read-only. Returns path, size, modified time, and extension for each match.
files.listList a directory on the NAS (name, type, size, owner, modified). Read-only.
files.mkdirwrite actionCreate a directory. Mutating: returns a dry-run plan unless a confirmation token is supplied.
files.moveMove or rename a path on the NAS. Mutating: returns a dry-run plan unless a confirmation token is supplied.
files.removewrite actionDelete a file or directory. Destructive: returns a dry-run plan unless a confirmation token is supplied.
files.syncSync a path to another on the NAS (or NAS-to-NAS) with rsync. A trailing slash on the source means 'contents', otherwise 'the directory'. If rsync is missing on the NAS, pass fallback:'cp' to use a built-in copy fallback (no delete/mirror). Mutating: returns a dry-run plan unless a confirmation token is supplied.
files.thumbnailGenerate a preview thumbnail of an image or video on the NAS with ffmpeg and download it locally. For videos a frame is captured (default 1s in). Mutating (it writes a file on the local machine): returns a dry-run plan unless a confirmation token is supplied.
files.uploadwrite actionUpload a local file to the NAS via SFTP. Mutating: returns a dry-run plan unless a confirmation token is supplied.
files.usageReport disk usage (`du`) for a path, optionally per subdirectory. Read-only.
network.interfacesList host network interfaces with IPv4/IPv6 addresses and scopes. Read-only.
network.portsShow listening TCP/UDP sockets and the processes bound to them. Read-only.
network.routesShow the host IPv4 and IPv6 routing tables. Read-only.
system.infoReport system details: OS release, CPU cores, load average, memory, temperatures, mounted disks, and Docker version. Read-only.
system.poolsReport storage pool and RAID health: mdadm arrays and degradation state, LVM volume/logical/physical volumes, btrfs devices, block devices and filesystems. Read-only.
system.statusTest connectivity to the configured UGREEN NAS over SSH and report hostname, kernel, uptime, and whether Docker is available. Read-only.
Public scan report
scanner v0.1.10 · 2026-10-28 · same rubric, same numbers if you re-run it
- Code scan29 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 9 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Ugnas compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 83/100
- higher than 65% of 48,255 servers
- Tools
- 39
- the typical server has 7
- Tools that change things
- 23%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 1
- more than 65% of 28,688 servers
- Downloads a week
- 79
- more than 57% of 12,191 servers with a package
What its tools let an agent do: 28 read · 2 create · 8 change · 1 delete
Install Ugnas in Claude Code, Cursor or VS Code
Runs npx -y ugnas-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add ugnas-mcp -- npx -y ugnas-mcp
What the publisher says
From the Ugnas repository's README, as published. We do not edit it. Read it on GitHub
ugnas-mcp
npx -y ugnas-mcpA generic MCP (Model Context Protocol) server for UGREEN NAS devices running UGOS, talking to the NAS over SSH (with SFTP for file transfers).
Unlike most existing UGREEN NAS integrations, nothing here is hard-coded — no fixed IPs, subnets, usernames, or share names. Every target-specific value comes from your config, so the same server works for anyone's NAS.
What it does
Organized the way a NAS owner actually thinks about daily operations:
39 tools total. system.pools reports mdadm array + degradation state, LVM volume/logical/physical volumes, btrfs devices, block devices, and filesystems.
files.find searches a directory tree by name glob and/or extension (returns path, size, modified time). files.thumbnail renders a preview of an image or a video frame with ffmpeg on the NAS and downloads it locally — read-only with respect to your NAS data (only a /tmp scratch file is written and removed), but writing the thumbnail to the local machine is gated: the first call returns a dry-run plan, and you confirm with the token to write the local file. Requires ffmpeg on the NAS (present on UGOS by default).
files.list and files.find prefer GNU coreutils flags (ls --time-style=long-iso, find -printf); when those are unavailable (BusyBox), they fall back to ls -1p and find -exec stat so they keep working — with size/mtime zeroed out for plain ls where BusyBox can't report them.
files.sync and the rsync fallback
files.sync uses rsync for fast, resumable NAS↔NAS copies, with --delete mirroring and an rsync --dry-run pre-flight. rsync is not installed on UGOS by default, so:
command but adds a note telling you how to install rsync (Entware: opkg install rsync) or how to turn on the fallback. Nothing runs until you confirm.
- Default (fallback: "refuse") — if rsync is missing, the dry-run plan still shows the rsync
note explains this, and warnings call out what the fallback can't do: no --delete mirroring, no rsync --dry-run, and extraArgs are ignored.
- Opt in (fallback: "cp") — the tool instead falls back to a built-in cp -a copy. The plan's
So you opt in per call by passing fallback: "cp". Nothing changes unless you ask for it.
Safety model — dry-run first, then confirm
Every mutating tool has two phases:
a human summary, any warnings, and a short-lived confirmationToken.
- Call without a token → returns a dry-run plan: the exact shell commands it would run,
in 10 minutes) and the exact commands captured at plan time are executed.
- Call again with confirmToken → the token is validated (action-bound, single-use, expires
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Ugnas: common questions
- Is Ugnas MCP server safe?
- Mostly: it is graded B (83/100). Read the Ugnas safety report
- How do I install Ugnas?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Ugnas need an API key?
- Yes. The registry entry asks for
UGNAS_KEY_PATH,UGNAS_PASSWORD. - Is Ugnas maintained?
- The last commit was 16 days ago (2026-10-19). The latest release is v0.1.2.
- How does Ugnas compare with other MCP servers?
- safety score 83/100 (higher than 65% of 48,255 servers); tools 39 (the typical server has 7); tools that change things 23% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.