Skip to main content
Glama

dsm-mcp

一个用于 Synology DSM 和 Container Manager 的 Model Context Protocol 服务器。它让 MCP 客户端(Claude)能够直接通过 Synology Web API 检查 NAS 并管理其容器——无需浏览器,也无需每次请求都进行 DSM 登录/2FA。服务器使用专用服务账户登录一次,并自行保持会话存活,这实际上就是你想要的“不过期会话”:Claude 永远不会重新认证。

是 arr-mcp 的配套项目。同样的形态(Python、streamable-HTTP、bearer 认证),不同的端口(8788),以及一个 Synology 专用的客户端。

工具

区域

工具

发现/健康

dsm_health、dsm_api_discover、dsm_raw_call

系统

dsm_system_info、dsm_storage、dsm_utilization

容器

dsm_docker_containers、dsm_docker_container、dsm_docker_action*、dsm_docker_logs、dsm_docker_projects

* = 写操作(启动/停止/重启容器)。dsm_raw_call 可以调用任何 DSM 方法,包括写操作——它是处理 DSM API 中因版本而异的部分的逃生舱。

关于 DSM 的 API(请阅读)

Synology 的 Web API 是发现驱动且版本/型号相关的。每个工具在调用时通过 SYNO.API.Info 解析正确的 CGI 路径和版本,因此系统/存储/利用率工具是健壮的。Docker/Container Manager 方法在不同 DSM 版本中的文档一致性较差——如果 dsm_docker_logs、dsm_docker_projects 或某个操作的参数与你的 DSM 不匹配,请运行 dsm_api_discover(查询 SYNO.Docker 或 all)来查看你的 NAS 实际暴露了什么,然后使用 dsm_raw_call 驱动它。没有什么是硬编码到无法现场解决的。

Related MCP server: Synology_MCP

服务账户(请先执行此操作)

不要将其指向你的主管理员。在 DSM 中:

  1. 控制面板 → 用户与群组 → 创建一个用户,例如 claude-svc。

  2. 仅授予所需权限:Container Manager 应用权限,以及系统/存储的读取权限。如果你的 DSM 版本允许非管理员使用 Docker API,则将其排除在 administrators 之外;如果要求管理员,则优先使用一个仅在此处使用的独立管理员组账户。

    • 注意:截至撰写本文时,服务账户必须是 administrators 组的成员才能访问容器管理器端点。

  3. 禁用此账户的 2FA(守护进程无法输入动态验证码)。如果你的策略强制要求 2FA,请一次性注册一个受信任设备,并将其令牌放入 DSM_DEVICE_ID。

  4. 可选地将其限制在局域网内(控制面板 → 安全性 → 防火墙/IP 规则),因为 MCP 服务器位于局域网内,只有隧道是公开的。

设置

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

不使用 Docker 运行(开发模式):

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

将其暴露给 Claude

端点:https://<your-hostname>/mcp。与 arr-mcp 相同:

  1. 将其隧道化(专用的 cloudflared,或你现有 Jellyfin 隧道上的主机名 → http://dsm-mcp:8788),理想情况下放在 Cloudflare Access 后面。

  2. Claude → 设置 → 连接器 → 自定义连接器 → /mcp URL,并带有 Authorization: Bearer <MCP_AUTH_TOKEN>。

安全说明

  • 这可以重启容器并读取系统内部信息,并且它以 DSM 用户身份进行认证。保持账户最小权限,将禁用 2FA 的范围限制在仅该局域网账户,并始终将端点放在 bearer 令牌后面(理想情况下还有 Cloudflare Access)。

  • 凭据仅存在于 .env 中(git/docker 忽略)。MCP 客户端永远不会看到它们——它只看到工具结果。

  • 不暴露账户删除、DSM 设置修改、卷/存储池破坏性工具。dsm_raw_call 设计上功能强大;请相应对待端点的认证。

文件

  • server.py — MCP 服务器 + 工具(streamable-HTTP + bearer 认证)

  • dsm_client.py — Synology Web API 客户端(发现、登录、会话刷新)

  • config.py — 从环境变量构建客户端

  • Dockerfile / docker-compose.yml — 容器 + 可选隧道

  • config.example.env — 复制为 .env

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    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
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes a Synology NAS through the official DSM WebAPI, covering File Station, Download Station, Synology Photos, Container Manager, and system management with curated tools and a generic bridge for other APIs.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    MCP server enabling AI agents to manage and monitor Synology NAS via official DSM API, including file operations, system stats, backups, downloads, and camera lists.
    15
    -