synology-filestation-mcp
synology-filestation-mcp
Ein MCP (Model Context Protocol)-Dienst, der auf der Synology File Station Web-API basiert. Er ermöglicht es KI-Agenten, Dateien auf Synology NAS direkt zu verwalten: Verzeichnisse durchsuchen, suchen, hochladen/herunterladen, erstellen/umbenennen/kopieren/verschieben/löschen, komprimieren/entpacken usw.
Unterstützt zwei Betriebsmodi:
Stdio (lokal) (
src/index.js): Läuft auf Ihrem lokalen Rechner, Anmeldeinformationen werden in lokalen Umgebungsvariablen gespeichert.Streamable HTTP (remote) (
src/http.js): Zentral auf einem Server bereitgestellt, mehrere Benutzer teilen sich den Dienst, ihre jeweiligen NAS-Anmeldeinformationen werden über Anfrage-Header übergeben.
Systemanforderungen
Node.js >= 18 (Entwicklung mit Node 24 getestet; für Server mit niedriger glibc-Version können die unofficial-builds mit glibc-217 verwendet werden)
DSM 7.x (getestet auf DSM 7.2)
Related MCP server: Synology MCP Server
Installation
npm installModus 1: Stdio (lokal)
NAS-Verbindungsinformationen werden über Umgebungsvariablen bereitgestellt (Sie können auch .env.example als .env kopieren und ausfüllen; die Variablen werden beim Start automatisch geladen):
Variable | Beschreibung |
| DSM-Adresse, z.B. |
| DSM-Benutzername |
| DSM-Passwort |
| Optional; Standard-Lokales Verzeichnis für |
Am Beispiel von Claude Desktop, konfigurieren Sie claude_desktop_config.json:
{
"mcpServers": {
"synology-filestation": {
"command": "node",
"args": ["D:/path/to/synology-filestation-mcp/src/index.js"],
"env": {
"SYNOLOGY_HOST": "http://192.168.1.1:5000",
"SYNOLOGY_USER": "your_username",
"SYNOLOGY_PASSWORD": "your_password"
}
}
}
}Modus 2: HTTP (remote, mehrere Benutzer)
Serverstart:
# .env 或环境变量
SYNOLOGY_HOST=http://192.168.1.1:5000 # 默认 NAS 地址(客户端可用 X-NAS-Host 覆盖)
PORT=3000
MCP_AUTH_TOKEN=<随机令牌> # 设置后客户端必须带 Bearer token
npm run start:httpEigenschaften:
Mehrere Benutzer: Jede MCP-Sitzung hat einen eigenen NAS-Login-Status (sid-Pool), keine Vermischung.
Anmeldeinformationen-Übergabe: Der Client stellt seine eigenen NAS-Anmeldeinformationen über die Anfrage-Header
X-NAS-User/X-NAS-Passwordbereit. Optional kannX-NAS-Hostden serverseitigen Standardwert überschreiben. Fehlen diese, werden die serverseitigen Umgebungsvariablen verwendet (unterstützt serverseitig zentral verwaltete Konten).Authentifizierung: Wenn
MCP_AUTH_TOKENgesetzt ist, müssen alle/mcp-Anfragen den HeaderAuthorization: Bearer <token>enthalten.Sitzungsverwaltung: Leerlaufsitzungen werden nach 30 Minuten automatisch bereinigt und vom NAS abgemeldet (
SESSION_IDLE_TTL_MSist anpassbar).Health-Check:
GET /health
Client-Konfiguration (für Clients, die Remote-MCP unterstützen, über URL):
{
"mcpServers": {
"synology-filestation": {
"url": "http://<部署服务器>:3000/mcp",
"headers": {
"Authorization": "Bearer <MCP_AUTH_TOKEN>",
"X-NAS-User": "同事自己的 NAS 账号",
"X-NAS-Password": "同事自己的 NAS 密码"
}
}
}
}systemd-Bereitstellungsbeispiel:
[Unit]
Description=Synology FileStation MCP (HTTP)
After=network.target
[Service]
WorkingDirectory=/opt/synology-filestation-mcp
ExecStart=/usr/bin/node src/http.js
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.targetSicherheitshinweis: In der Produktion wird die Verwendung von HTTPS (Reverse Proxy) zur TLS-Terminierung empfohlen, um eine Übertragung der NAS-Anmeldeinformationen im Klartext in den Anfrage-Headern zu vermeiden.
Werkzeugliste
Werkzeug | Beschreibung | Zugrunde liegende API |
| Gemeinsame Ordner auflisten | SYNO.FileStation.List / list_share |
| Verzeichnisinhalt auflisten (mit Paginierung, Sortierung, Platzhalterfilter) | SYNO.FileStation.List / list |
| Detaillierte Informationen zu Datei/Verzeichnis abrufen | SYNO.FileStation.List / getinfo |
| Nach Muster suchen (automatisch abfragen, bis abgeschlossen) | SYNO.FileStation.Search / start+list |
| Suchvorgang stoppen | SYNO.FileStation.Search / stop |
| Alle Suchvorgänge bereinigen | SYNO.FileStation.Search / clean |
| Ordner erstellen | SYNO.FileStation.CreateFolder / create |
| Datei/Ordner umbenennen | SYNO.FileStation.Rename / rename |
| Kopieren/Verschieben (asynchroner Vorgang, gibt taskid zurück) | SYNO.FileStation.CopyMove / start |
| Fortschritt eines Hintergrundvorgangs abfragen | SYNO.FileStation.BackgroundTask / list |
| Löschen (asynchroner Vorgang, nicht wiederherstellbar) | SYNO.FileStation.Delete / start |
| NAS-Datei in lokales Verzeichnis herunterladen | SYNO.FileStation.Download / download |
| Lokale Datei auf NAS hochladen | SYNO.FileStation.Upload / upload |
| Komprimierung auf NAS zu zip/7z (asynchroner Vorgang) | SYNO.FileStation.Compress / start |
| Entpacken auf NAS (asynchroner Vorgang, Zielverzeichnis muss existieren) | SYNO.FileStation.Extract / start |
Tests
SYNOLOGY_HOST=http://192.168.0.196:5000 SYNOLOGY_USER=xxx SYNOLOGY_PASSWORD=xxx npm testDer Rauchtest führt eine vollständige Kette auf dem NAS durch: Anmelden → Gemeinsame Ordner auflisten → Verzeichnis erstellen → Hochladen → Inhalt auflisten → Informationen abrufen → Umbenennen → Kopieren → Suchen → Herunterladen und Inhalt verifizieren → Löschen und bereinigen → Abmelden. Der Test erstellt ein temporäres Verzeichnis mcp-smoke-test in einem beschreibbaren gemeinsamen Ordner und löscht es nach Abschluss automatisch.
Es gibt auch einen Erweiterungstest test/extended.mjs (node test/extended.mjs, liest ebenfalls Umgebungsvariablen): Er deckt das bytegenaue Hoch- und Herunterladen von 23 Dateiformaten (Dokumente/Bilder/Videos/Audio/Archive/Datenbanken/VM-Images), Massenkopieren/Verschieben/Löschen, Entpacken auf dem NAS, Überprüfung des Papierkorbs sowie Erkundung der Berechtigungs- und Sicherheitsgrenzen ab.
Implementierungshinweise (DSM 7.x-Kompatibilität)
Beim Start wird zuerst
SYNO.API.Infoaufgerufen, um die Pfade und Versionen der einzelnen APIs zu ermitteln. Die Anmeldung erfolgt überSYNO.API.Auth(format=sid).Der Parameter
additionalvonSYNO.FileStation.Listv2 erwartet ein JSON-Array-Format (z.B.["size","time"]); kommagetrennte Zeichenketten werden stillschweigend ignoriert.Für Dateiinformationsabfragen wird
SYNO.FileStation.List / getinfoverwendet (SYNO.FileStation.Info / getgibt die File Station-Serverkonfiguration zurück, keine Dateiinformationen).Für Uploads wird API-Version 2 verwendet: In der Praxis funktioniert der Parameter
overwritein v3 nicht, bei gleichnamigen Dateien wird ein 414-Fehler zurückgegeben. Die sid wird sowohl über ein Formularfeld als auch über denCookie: id=<sid>-Header übergeben.Kopieren/Verschieben/Löschen sind asynchrone Vorgänge;
SYNO.FileStation.BackgroundTaskin DSM 7.x hat nur die Methodelist(keinstatus). Der Fortschritt wird durch Filtern nach taskid abgefragt.Die Suche ist ein asynchroner Vorgang; das Werkzeug fragt intern
listab, bisfinishederreicht ist.Das Zielverzeichnis für
SYNO.FileStation.Extractmuss bereits existieren, sonst wird ein 408-Fehler (No such file or directory) zurückgegeben.SYNO.FileStation.Compresshängt von den Anwendungsberechtigungen des Kontos in DSM ab. Wird ein Fehler 105 (session does not have permission) zurückgegeben, müssen dem Konto in der DSM-Systemsteuerung die entsprechenden Berechtigungen erteilt werden.
Fähigkeitsgrenzen (Nicht im Umfang der File Station API)
Die folgenden Fähigkeiten sind in der offiziellen File Station API nicht vorhanden und können daher von diesem MCP nicht bereitgestellt werden:
ACL-Berechtigungsverwaltung: Gehört zu den DSM-Systemsteuerungsfunktionen (SYNO.Core.* private Schnittstellen, keine öffentliche File Station API).
AES-Verschlüsselung gemeinsamer Ordner: Gehört zu den DSM-Speicherverwaltungsfunktionen (Erstellen/Einhängen verschlüsselter gemeinsamer Ordner).
Manipulationsschutz (Schreibgeschützt/Nicht löschbar): File Station API bietet keinen Einstiegspunkt; kann indirekt durch schreibgeschütztes Einhängen gemeinsamer Ordner erreicht werden.
Netzwerkpapierkorb: Das Löschverhalten folgt automatisch den Papierkorbeinstellungen der jeweiligen gemeinsamen Ordner (nach dem Aktivieren werden gelöschte Dateien in
<share>/#recycleverschoben). Die API muss nichts separat steuern und kann es auch nicht.
Verzeichnisstruktur
src/
index.js stdio 入口(本地模式)
http.js HTTP 入口(远程模式,Streamable HTTP + 多用户会话池)
server.js 共享的 MCP Server 构建(注册全部工具)
env.js .env 加载
client.js Synology API 客户端:API 发现、认证、请求封装、错误码映射
tools/ 每个 File Station API 一个工具模块
test/
smoke.mjs 对真实 NAS 的全链路冒烟测试(stdio 层逻辑)
http-smoke.mjs HTTP 模式自测(鉴权、会话、工具调用、会话关闭)
extended.mjs 扩展能力测试(多格式、批量、解压、回收站)This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceProvides secure file system operations for AI assistants including directory listing, file reading/writing, deletion, searching, and copying. Features safety controls like path validation, permission checks, and file size limits.
- Alicense-qualityAmaintenanceEnables AI assistants to manage Synology NAS devices with file operations (create, delete, move, search) and Download Station control through secure authentication and session management.170MIT
- AlicenseBqualityDmaintenanceEnables AI agents to perform FTP/FTPS/SFTP file operations including upload, download, sync, and directory management with multi-server support.36341MIT
- Alicense-qualityCmaintenanceProvides file system access and operations, enabling AI assistants to read, write, list, search, and manage files and directories through a standardized interface.1MIT
Related MCP Connectors
File uploads for AI agents. Upload, list, and manage files. No signup required.
Securely search and manage workspace context files for AI agents and teams.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/01men/synology-filestation-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server