dsm-mcp
dsm-mcp
Ein Model Context Protocol-Server für Synology DSM und Container Manager. Er ermöglicht es einem MCP-Client (Claude), das NAS zu inspizieren und seine Container direkt über die Synology-Web-API zu verwalten – ohne Browser und ohne DSM-Login/2FA pro Anfrage. Der Server meldet sich einmalig mit einem dedizierten Dienstkonto an und hält die Sitzung selbst am Leben, was effektiv die „nicht ablaufende Sitzung" ist, die du wolltest: Claude authentifiziert sich nie erneut.
Begleitprojekt zu arr-mcp. Gleiche Struktur (Python, streamable-HTTP, Bearer-Auth),
ein anderer Port (8788) und ein Synology-spezifischer Client.
Tools
Bereich | Tools |
Erkennung/Health |
|
System |
|
Container |
|
* = Schreibaktion (Container starten/stoppen/neu starten). dsm_raw_call kann
jede DSM-Methode aufrufen, einschließlich Schreibvorgängen – es ist die Notluke für
die Teile der DSM-API, die je nach Version variieren.
Über die DSM-API (das hier lesen)
Die Web-API von Synology ist erkennungsgesteuert und versions-/modellabhängig. Jedes
Tool löst zur Laufzeit den korrekten CGI-Pfad und die Version über SYNO.API.Info auf,
sodass die System-/Speicher-/Auslastungstools robust sind. Die Docker-/Container-Manager-
Methoden sind über DSM-Versionen hinweg weniger konsistent dokumentiert – wenn
dsm_docker_logs, dsm_docker_projects oder die Parameter einer Aktion nicht zu deinem
DSM passen, führe dsm_api_discover aus (Abfrage SYNO.Docker oder all), um genau zu
sehen, was dein NAS bereitstellt, und steuere es dann mit dsm_raw_call. Nichts ist
hartcodiert, was nicht live umgangen werden kann.
Related MCP server: Synology MCP Server
Dienstkonto (zuerst erledigen)
Richte das nicht auf deinen Haupt-Admin aus. In DSM:
Systemsteuerung → Benutzer & Gruppe → Erstellen einen Benutzer, z. B.
claude-svc.Gewähre nur das Nötigste: Container Manager-App-Berechtigung und Lesezugriff auf System/Speicher. Halte ihn aus
administratorsheraus, wenn deine DSM-Version die Docker-API ohne Admin erlaubt; wenn Admin erforderlich ist, bevorzuge ein separates Konto in der Admin-Gruppe, das nur hier verwendet wird.Hinweis: Zum Zeitpunkt der Erstellung dieses Textes muss das Dienstkonto Mitglied der Administratorengruppe sein, um auf die Container-Manager-Endpunkte zugreifen zu können.
Deaktiviere 2FA für dieses Konto (ein Daemon kann keinen rotierenden Code eingeben). Wenn deine Richtlinie 2FA erzwingt, registriere einmal ein vertrauenswürdiges Gerät und lege dessen Token in
DSM_DEVICE_IDab.Optional: Beschränke es auf das LAN (Systemsteuerung → Sicherheit → Firewall / IP-Regeln), da der MCP-Server im LAN sitzt und nur der Tunnel öffentlich ist.
Einrichtung
cp config.example.env .env
# edit .env: DSM_URL, the service account + password, a strong MCP_AUTH_TOKEN.
# HTTPS with the self-signed cert? use :5001 and set DSM_VERIFY_SSL=false
docker compose up -d --build
docker logs -f dsm-mcp # confirm it starts; auth runs on the first tool callOhne Docker ausführen (Entwicklung):
pip install -r requirements.txt
set -a; source .env; set +a
python server.pyFür Claude bereitstellen
Endpunkt: https://<dein-hostname>/mcp. Wie bei arr-mcp:
Tunnel einrichten (dediziertes
cloudflaredoder ein Hostname auf deinem bestehenden Jellyfin-Tunnel →http://dsm-mcp:8788), idealerweise hinter Cloudflare Access.Claude → Einstellungen → Connectors → benutzerdefinierter Connector → die
/mcp-URL, mitAuthorization: Bearer <MCP_AUTH_TOKEN>.
Sicherheitshinweise
Dies kann Container neu starten und Systeminterna lesen, und es authentifiziert sich als DSM-Benutzer. Halte das Konto mit minimalen Rechten, beschränke das 2FA-aus auf nur dieses LAN-Konto und setze den Endpunkt immer hinter das Bearer-Token (und idealerweise Cloudflare Access).
Anmeldedaten liegen nur in
.env(git/docker-ignoriert). Der MCP-Client sieht sie nie – er sieht nur Tool-Ergebnisse.Keine Kontolöschung, keine DSM-Einstellungsänderung, keine destruktiven Volume-/Pool-Tools sind verfügbar.
dsm_raw_callist bewusst mächtig; behandle die Authentifizierung des Endpunkts entsprechend.
Dateien
server.py— MCP-Server + Tools (streamable-HTTP + Bearer-Auth)dsm_client.py— Synology-Web-API-Client (Erkennung, Login, Sitzungsaktualisierung)config.py— erstellt den Client aus UmgebungsvariablenDockerfile/docker-compose.yml— Container + optionaler Tunnelconfig.example.env— in.envkopieren
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
- AlicenseNot gradedqualityCmaintenanceEnables managing Docker containers and Compose apps on a QNAP NAS via the Container Station API, including starting, stopping, restarting, and inspecting containers and applications.16MIT
- AlicenseBqualityAmaintenanceMonitor and manage a Synology DSM 7 NAS from any MCP client — and build live dashboards right inside the chat.713MIT
- AlicenseNot gradedqualityFmaintenanceComprehensive Synology NAS management through MCP, enabling file operations, downloads, backups, Docker, photos, VMs, snapshots, and more across up to 9 NAS units.5MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Synology NAS services including DSM, File Station, Calendar, Note Station, Contacts, Chat, Download Station, and Container Manager through a modular MCP interface with configurable safety modes.MIT
Related MCP Connectors
Agent-first web hosting: deploy sites, apps, databases and domains over MCP.
MCP server for AI access to Swagger by SmartBear.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
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/dogeared/dsm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server