Skip to main content
Glama

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

dsm_health, dsm_api_discover, dsm_raw_call

System

dsm_system_info, dsm_storage, dsm_utilization

Container

dsm_docker_containers, dsm_docker_container, dsm_docker_action*, dsm_docker_logs, dsm_docker_projects

* = 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:

  1. Systemsteuerung → Benutzer & Gruppe → Erstellen einen Benutzer, z. B. claude-svc.

  2. Gewähre nur das Nötigste: Container Manager-App-Berechtigung und Lesezugriff auf System/Speicher. Halte ihn aus administrators heraus, 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.

  3. 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_ID ab.

  4. 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 call

Ohne Docker ausführen (Entwicklung):

pip install -r requirements.txt
set -a; source .env; set +a
python server.py

Für Claude bereitstellen

Endpunkt: https://<dein-hostname>/mcp. Wie bei arr-mcp:

  1. Tunnel einrichten (dediziertes cloudflared oder ein Hostname auf deinem bestehenden Jellyfin-Tunnel → http://dsm-mcp:8788), idealerweise hinter Cloudflare Access.

  2. Claude → Einstellungen → Connectors → benutzerdefinierter Connector → die /mcp-URL, mit Authorization: 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_call ist 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 Umgebungsvariablen

  • Dockerfile / docker-compose.yml — Container + optionaler Tunnel

  • config.example.env — in .env kopieren

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables managing Docker containers and Compose apps on a QNAP NAS via the Container Station API, including starting, stopping, restarting, and inspecting containers and applications.
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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