ugnas-mcp

MCPcommunity
v0.1.2UnknownMITUpdated 4d agonpmGitHub

Generic MCP server for UGREEN NAS (UGOS) over SSH — Docker, files, backups, and networks with dry-run safety.

Works in
ClaudeCursorCopilotGemini

Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
563Downloads/wk
4d agoLast update
Reads these credentials
  • UGNAS_KEY_PATHAPI keyoptional

    Path to the SSH private key (alternative to UGNAS_PASSWORD).

  • UGNAS_PASSWORDAPI keyoptional

    SSH password (alternative to UGNAS_KEY_PATH).

Declared by the author in the official MCP registry. Forge does not store, broker, or ever see these values — the config below is scaffolded with placeholders you fill in locally.

Package
AuthorUnknown
LicenseMIT
Version0.1.2
Sourcenpm+mcp-registry
Trust Status
B
60/100Good
✓Listed in Forge index+10/10
—Publisher identity verified+0/20
→ Publisher: run `forge publish` from the package repo to claim ownership
—Ed25519 publish signature+0/5
→ Included automatically when the publisher runs `forge publish`
—Domain verification+0/5
→ Publisher: host /.well-known/forge.json on the package homepage with { "publisher": "<github-login>" }
—npm Trusted Publishing (Sigstore)+0/5
→ Publish from GitHub Actions with --provenance so the attestation binds this package to this repo
—npm maintainer match+0/5
→ Earned once your identity is verified above and that login is an npm maintainer of this package
✓CVE scan · clean+30/30
✓Static analysis · clean+20/20
Paste into Claude Code, Cursor, or any AI assistant to fix all gaps
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain—
Provenance—
Dependencies✓ 60 resolved+ · none vulnerable
Tool surface39 tools · none privileged
Security scan✓ Cleanv0.1.2 · todayHow well does this scan work?
EvalsNone
IndexedOct 21, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

39 tools · none privileged
Statically extracted from the published packagev0.1.2 · 23h ago

Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.

system.statusTest connectivity to the configured UGREEN NAS over SSH and report hostname, kernel, uptime, and whether Docker is available. Read-only.

Test connectivity to the configured UGREEN NAS over SSH and report hostname, kernel, uptime, and whether Docker is available. Read-only.

No input schema was published for this tool.

system.infoReport system details: OS release, CPU cores, load average, memory, temperatures, mounted disks, and Docker version. Read-only.

Report system details: OS release, CPU cores, load average, memory, temperatures, mounted disks, and Docker version. Read-only.

No input schema was published for this tool.

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.

Report storage pool and RAID health: mdadm arrays and degradation state, LVM volume/logical/physical volumes, btrfs devices, block devices and filesystems. Read-only.

No input schema was published for this tool.

docker.containers.listList Docker containers on the NAS with id, name, image, state and status. Read-only.

List Docker containers on the NAS with id, name, image, state and status. Read-only.

No input schema was published for this tool.

docker.containers.inspectReturn full `docker inspect` JSON for one container. Read-only.

Return full `docker inspect` JSON for one container. Read-only.

No input schema was published for this tool.

docker.containers.logsFetch the most recent log lines from a container. Read-only.

Fetch the most recent log lines from a container. Read-only.

No input schema was published for this tool.

docker.containers.startStart a stopped container. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Start a stopped container. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.containers.stopStop a running container. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Stop a running container. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.containers.restartRestart a container. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Restart a container. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.containers.removeDelete a container. Destructive: returns a dry-run plan unless a confirmation token is supplied.

Delete a container. Destructive: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.images.listList locally stored Docker images. Read-only.

List locally stored Docker images. Read-only.

No input schema was published for this tool.

docker.images.pullPull an image from its registry. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Pull an image from its registry. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.images.removeRemove a local image. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Remove a local image. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.networks.listList Docker networks. Read-only.

List Docker networks. Read-only.

No input schema was published for this tool.

docker.networks.inspectReturn `docker network inspect` JSON (subnets, attached containers). Read-only.

Return `docker network inspect` JSON (subnets, attached containers). Read-only.

No input schema was published for this tool.

docker.networks.createCreate a Docker network. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Create a Docker network. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.networks.removeRemove a Docker network. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Remove a Docker network. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.networks.connectAttach a container to a network. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Attach a container to a network. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.networks.disconnectDetach a container from a network. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Detach a container from a network. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

docker.composeRun `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.

Run `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.

No input schema was published for this tool.

files.listList a directory on the NAS (name, type, size, owner, modified). Read-only.

List a directory on the NAS (name, type, size, owner, modified). Read-only.

No input schema was published for this tool.

files.usageReport disk usage (`du`) for a path, optionally per subdirectory. Read-only.

Report disk usage (`du`) for a path, optionally per subdirectory. Read-only.

No input schema was published for this tool.

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.

Search for files by name glob and/or extension across a directory tree. Read-only. Returns path, size, modified time, and extension for each match.

No input schema was published for this tool.

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.

Generate 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.

No input schema was published for this tool.

files.mkdirCreate a directory. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Create a directory. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

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.

Copy a file or directory within the NAS (or NAS-to-NAS). Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

files.moveMove or rename a path on the NAS. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Move or rename a path on the NAS. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

files.removeDelete a file or directory. Destructive: returns a dry-run plan unless a confirmation token is supplied.

Delete a file or directory. Destructive: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

files.uploadUpload a local file to the NAS via SFTP. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Upload a local file to the NAS via SFTP. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

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.

Download a file from the NAS to the local machine via SFTP. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

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 tok…

Sync 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 tok…

No input schema was published for this tool.

backup.createArchive a directory into a .tar.gz on the NAS. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Archive a directory into a .tar.gz on the NAS. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

backup.listList backup archives (*.tar.gz, *.tgz, *.tar, *.zip) in a directory. Read-only.

List backup archives (*.tar.gz, *.tgz, *.tar, *.zip) in a directory. Read-only.

No input schema was published for this tool.

backup.verifyCheck a backup archive exists, compute its checksum, and list its entry count. Read-only.

Check a backup archive exists, compute its checksum, and list its entry count. Read-only.

No input schema was published for this tool.

backup.restoreExtract a .tar.gz archive into a destination directory. Destructive: returns a dry-run plan unless a confirmation token is supplied.

Extract a .tar.gz archive into a destination directory. Destructive: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

backup.scheduleInstall a cron job that runs recurring backups. Mutating: returns a dry-run plan unless a confirmation token is supplied.

Install a cron job that runs recurring backups. Mutating: returns a dry-run plan unless a confirmation token is supplied.

No input schema was published for this tool.

network.interfacesList host network interfaces with IPv4/IPv6 addresses and scopes. Read-only.

List host network interfaces with IPv4/IPv6 addresses and scopes. Read-only.

No input schema was published for this tool.

network.routesShow the host IPv4 and IPv6 routing tables. Read-only.

Show the host IPv4 and IPv6 routing tables. Read-only.

No input schema was published for this tool.

network.portsShow listening TCP/UDP sockets and the processes bound to them. Read-only.

Show listening TCP/UDP sockets and the processes bound to them. Read-only.

No input schema was published for this tool.

39 of 39 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Generic MCP server for UGREEN NAS (UGOS) over SSH — Docker, files, backups, and networks with dry-run safety.

Keywords
mcpmodel-context-protocolugreenugosnassshsftpdockerbackuphomelab
Alternatives
Comparing tool surfaces…

Dependency tree

What one Forge scan resolved from npm metadata on 2026-10-21 — observed resolution, not a publisher declaration.

60 packages resolved · 3 direct · none carrying advisories Resolution stops at depth 4 and 60 packages.

The crawl stopped at the 60-package limit. The rest of the tree was never resolved.

36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)

Declared but not resolved

58 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.

+46 more not listed. The counts by reason above cover all of them.

Not followed: optionalDependencies, peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.

Topics

Related in devops & infrastructure