GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Beschreibung vom Entwickler (englisches Original)
Generic MCP server for UGREEN NAS (UGOS) over SSH — 39 tools with dry-run safety.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
UGNAS_MCP_CONFIG, UGNAS_HOST, UGNAS_USER, UGNAS_KEY_PATH, UGNAS_PASSWORD, UGNAS_PORT, UGNAS_DEFAULT_SHARE, UGNAS_HOST_KEY_SHA256Als geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"ugnas": {
"command": "npx",
"args": [
"-y",
"ugnas-mcp"
],
"env": {
"UGNAS_MCP_CONFIG": "your-value",
"UGNAS_HOST": "your-value",
"UGNAS_USER": "your-value",
"UGNAS_KEY_PATH": "your-value",
"UGNAS_PASSWORD": "your-value",
"UGNAS_PORT": "your-value",
"UGNAS_DEFAULT_SHARE": "your-value",
"UGNAS_HOST_KEY_SHA256": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add ugnas --env UGNAS_MCP_CONFIG=your-value --env UGNAS_HOST=your-value --env UGNAS_USER=your-value --env UGNAS_KEY_PATH=your-value --env UGNAS_PASSWORD=your-value --env UGNAS_PORT=your-value --env UGNAS_DEFAULT_SHARE=your-value --env UGNAS_HOST_KEY_SHA256=your-value -- npx -y ugnas-mcpTrag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"ugnas": {
"command": "npx",
"args": [
"-y",
"ugnas-mcp"
],
"env": {
"UGNAS_MCP_CONFIG": "your-value",
"UGNAS_HOST": "your-value",
"UGNAS_USER": "your-value",
"UGNAS_KEY_PATH": "your-value",
"UGNAS_PASSWORD": "your-value",
"UGNAS_PORT": "your-value",
"UGNAS_DEFAULT_SHARE": "your-value",
"UGNAS_HOST_KEY_SHA256": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"ugnas": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"ugnas-mcp"
],
"env": {
"UGNAS_MCP_CONFIG": "your-value",
"UGNAS_HOST": "your-value",
"UGNAS_USER": "your-value",
"UGNAS_KEY_PATH": "your-value",
"UGNAS_PASSWORD": "your-value",
"UGNAS_PORT": "your-value",
"UGNAS_DEFAULT_SHARE": "your-value",
"UGNAS_HOST_KEY_SHA256": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
UGNAS_MCP_CONFIG envUGNAS_HOST envUGNAS_USER envUGNAS_PORT envUGNAS_DEFAULT_SHARE envUGNAS_HOST_KEY_SHA256 envDiese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto Omodaka9375 bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Das musst du eintragen: UGNAS_KEY_PATH, UGNAS_PASSWORD
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.2) kam vor 21 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.
In derselben Kategorie: GitHub, Desktop Commander, Cloudflare MCP
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
npx -y ugnas-mcp
A 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.
Organized the way a NAS owner actually thinks about daily operations:
| Group | Tools | Mutating? |
|---|---|---|
| Connection & system | system.status, system.info, system.pools | read-only |
| Docker | docker.containers.* (list/inspect/logs/start/stop/restart/remove), docker.images.* (list/pull/remove), docker.networks.* (list/inspect/create/remove/connect/disconnect), docker.compose | start/stop/restart/pull/remove/create/compose are gated |
| Files & data | files.list, files.usage, files.find, files.thumbnail, files.mkdir, files.copy, files.move, files.remove, files.upload, files.download, files.sync | thumbnail/mkdir/copy/move/remove/upload/download/sync are gated |
| Backup | backup.create, backup.list, backup.verify, backup.restore, backup.schedule | create/restore/schedule are gated |
| Networks | network.interfaces, network.routes, network.ports | read-only |
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 fallbackfiles.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:
note telling you how to install rsync (Entware: opkg install rsync) or how to turn on the fallback. Nothing runs until you confirm.cp -a copy. The plan's note explains this, and warnings call out what the fallback can't do: no --delete mirroring, no rsync --dry-run, and extraArgs are ignored.So you opt in per call by passing fallback: "cp". Nothing changes unless you ask for it.
Every mutating tool has two phases:
confirmationToken.Read-only tools never need a token. This makes "copy my data", "pull this image", or "restart that container" reviewable before anything changes.
All user-supplied values (paths, container names, image tags) are POSIX-shell-quoted before being interpolated into a remote command, so they cannot break out into arbitrary command execution.
At confirm time, the arguments of the confirming call are cross-checked against the plan-time arguments captured in the token: if they differ, the tool refuses and asks you to re-run for a fresh plan (so a stale token can never execute a differently-argued action).
The server reads a JSON config from ~/.ugnas-mcp/config.json (override with the UGNAS_MCP_CONFIG environment variable). See config.example.json.
{
"name": "home-nas", "host": "192.168.1.50", "port": 22, "username": "admin", "auth": { "type": "key", "privateKeyPath": "~/.ssh/id_ed25519" }, "defaultShare": "/volume1", "commandTimeoutMs": 60000 }
| Field | Required | Notes |
|---|---|---|
host | yes | IP or hostname of the NAS. |
port | no | SSH port, default 22. |
username | yes | SSH user. |
auth | yes | { "type": "key", "privateKeyPath": "..." } (recommended, supports passphrase) or { "type": "password", "password": "..." }. privateKeyPath may also be raw inline PEM. |
defaultShare | no | Base directory for relative tool paths, default /volume1. |
sftpRoot | no | The directory the SFTP subsystem is rooted at. On UGOS, SFTP is chrooted to the share root, so an exec path like /volume1/docker/x must be requested over SFTP as /docker/x; set this to the chroot root (defaults to defaultShare). Use "/" if your NAS does not chroot SFTP. |
hostKeySha256 | no | When set, the SSH host key is pinned and enforced (e.g. SHA256:...). Compare is padding-insensitive, so the canonical fingerprint from ssh-keygen -lf works as-is. |
commandTimeoutMs | no | Per-command timeout, default 60000. |
Useful for CI or secret injection. Env values win over the file:
UGNAS_HOST=192.168.1.50
UGNAS_PORT=22 UGNAS_USER=admin UGNAS_KEY_PATH=~/.ssh/id_ed25519 # or UGNAS_AUTH_TYPE=password + UGNAS_PASSWORD UGNAS_DEFAULT_SHARE=/volume1 UGNAS_HOST_KEY_SHA256=SHA256:...
File/backup tools accept either. An absolute path is used as-is; a relative path is joined onto defaultShare:
files.list("media") -> /volume1/media
files.list("/mnt/x") -> /mnt/x
Published on npm as ugnas-mcp. Run it directly — no clone, no build:
npx ugnas-mcp
npm install -g ugnas-mcp ugnas-mcp
That starts the stdio MCP server. It reads its config from ~/.ugnas-mcp/config.json (or UGNAS_MCP_CONFIG / UGNAS_* env vars — see Configuration).
Point your client at the official package (stdio):
{
"mcpServers": { "ugnas": { "command": "npx", "args": ["-y", "ugnas-mcp"], "env": { "UGNAS_MCP_CONFIG": "/absolute/path/to/config.json" } } } }
Or, if you installed it globally, "command": "ugnas-mcp" with no args.
The server is stdio by default. Set UGNAS_HTTP_PORT to *also* expose a streamable HTTP transport (both run side by side):
UGNAS_HTTP_HOST=127.0.0.1 UGNAS_HTTP_PORT=4110 ugnas-mcp
POST http://127.0.0.1:4110/mcp — JSON-RPC (stateless; a fresh session per request, max 1 MiB body).GET http://127.0.0.1:4110/health — liveness + target host.It binds to loopback by default. UGNAS_HTTP_HOST=0.0.0.0 (or any non-loopback address) is refused unless `UGNAS_HTTP_ALLOW_REMOTE=1` is also set — the /mcp endpoint has no authentication, and confirmation tokens are process-wide, so only opt in if the port is secured by something else (reverse proxy with auth, VPN, etc.).
docker (be in the docker group) and, for scheduled backups, use crontab.tar, df, du, ip, ss are present on UGOS — these are standard.backup.schedule job names must be plain words ([A-Za-z0-9._-]) — they are embedded in a generated shell script and a crontab line, so anything else is rejected up front.rsync is optional, used only by files.sync. If it's missing you get a note explaining how to install it or how to enable the built-in cp fallback (files.sync { fallback: "cp" }); every other file tool works without rsync.MIT — see LICENSE. Contributing, architecture, and the dev/release toolchain live in DEVELOPMENT.md.