Token导航 LogoToken导航TokenDH.com
Dk Synology MCP logo
运维云端stdio官方级别未说明来源级核验

Dk Synology MCP

MCP Server

Synology MCP Server是一个全面的NAS管理工具,通过Model Context Protocol实现对文件操作、下载、备份、Docker容器、照片、虚拟机、快照等的集中控制。

工具数

66

提示词数

0

GitHub Stars

1

资源数

0
PythonClaude文件操作Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

DRVBSS

提供方

DRVBSS

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv .venv

详细介绍

Synology MCP服务器

通过以下方式全面管理Synology NAS 模型上下文协议.控制文件操作、下载、备份、Docker容器、照片、虚拟机、快照等,所有这些都可以从Claude或任何兼容MCP的客户端进行。

特性

  • 87工具 横跨15个服务类别
  • 多NAS支持 --从单个服务器管理多达9个NAS单元
  • DSM 7和DSM 6 兼容性
  • 安全连接 --带有可选证书验证的HTTPS
  • 双因素认证 --每个NAS的OTP代码支持

工具类别

类别工具描述
文件管理16列表、搜索、创建文件夹、复制/移动、删除、压缩、共享链接、文件树
系统信息6DSM信息、CPU/RAM利用率、存储、网络、服务、运行状况仪表板
下载站8创建下载(URL/磁铁)、暂停/恢复、删除、统计、配置
云同步5列出同步任务、状态、暂停/恢复、日志
备份(HyperBackup)5列出任务、状态、运行、取消、完整性检查
Docker8列出容器/映像/网络、启动/停止/重启、日志、资源使用情况
任务计划程序5列出计划的任务、信息、运行、启用/禁用、输出
照片4列出相册、浏览、搜索、相册项目
软件包4列出已安装的软件包、启动/停止、软件包信息
用户和组4列出用户/组、用户信息、组成员
共享文件夹3列出共享、文件夹信息、权限
虚拟化(VMM)5列出虚拟机、信息、电源开/关、正常关机
快照4列出快照、创建、删除、复制任务
活动备份6列出任务/设备、信息、日志、还原点
系统4列出连接、测试连接、断开连接、功能

安装

先决条件

  • Python 3.10+
  • 一个或多个配备DSM 6.x或7.x的Synology NAS设备
  • 每个NAS上都有一个管理员(或委派)帐户

从源代码安装(推荐)

带有Homebrew Python的macOS需要一个虚拟环境:

git clone https://github.com/DRVBSS/dk-synology-mcp.git
cd dk-synology-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install .

.venv 文件夹已在 .gitignore 并且不会承诺。

在开发模式下安装

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

验证安装

# With venv activated:
synology-mcp --help

# Or without activating:
.venv/bin/synology-mcp --help

配置

步骤1:查找Synology NAS连接详细信息

在配置服务器之前,请从每个NAS收集以下详细信息:

  1. 主机/IP:您的NAS IP地址(例如。, 192.168.1.100).在DSM的控制面板>网络>网络接口下找到它。
  2. 端口:默认值为 5000 (HTTP)或 5001 (HTTPS)。在“控制面板”>“登录门户”>“DSM”选项卡中找到它。
  3. 用户名/密码:管理员帐户,或具有委派管理员权限的用户。为了安全起见,请考虑创建一个专用服务帐户:

- 转到控制面板>用户和组>创建 - 给它起个名字 mcp-service - 将其添加到 administrators 组(大多数API访问都需要) - 给它一个强密码

  1. 超文本传输安全协议:设置 SECURE=truePORT=5001 HTTPS(推荐)。集 CERT_VERIFY=false 如果使用自签名证书(在家庭NAS上很常见)。
  2. DSM版本:使用 7 适用于DSM 7.x或 6 对于DSM 6.x,请检查“控制面板”>“信息中心”。

步骤2:创建.env文件

cp .env.example .env

编辑 .env 使用您的NAS详细信息:

单NAS设置

# === Your NAS ===
SYNOLOGY_NAS1_NAME=ds923
SYNOLOGY_NAS1_HOST=192.168.1.100
SYNOLOGY_NAS1_PORT=5001
SYNOLOGY_NAS1_USERNAME=mcp-service
SYNOLOGY_NAS1_PASSWORD=your-strong-password
SYNOLOGY_NAS1_SECURE=true
SYNOLOGY_NAS1_CERT_VERIFY=false
SYNOLOGY_NAS1_DSM_VERSION=7
SYNOLOGY_NAS1_OTP_CODE=

# === Server Settings ===
SYNOLOGY_DEFAULT_NAS=ds923
SYNOLOGY_LOG_LEVEL=INFO

多NAS设置

添加数字递增的附加NAS单元(最多9个):

# === Primary NAS ===
SYNOLOGY_NAS1_NAME=ds923
SYNOLOGY_NAS1_HOST=192.168.1.100
SYNOLOGY_NAS1_PORT=5001
SYNOLOGY_NAS1_USERNAME=mcp-service
SYNOLOGY_NAS1_PASSWORD=password-for-ds923
SYNOLOGY_NAS1_SECURE=true
SYNOLOGY_NAS1_CERT_VERIFY=false
SYNOLOGY_NAS1_DSM_VERSION=7

# === Secondary NAS ===
SYNOLOGY_NAS2_NAME=ds517
SYNOLOGY_NAS2_HOST=192.168.1.101
SYNOLOGY_NAS2_PORT=5001
SYNOLOGY_NAS2_USERNAME=mcp-service
SYNOLOGY_NAS2_PASSWORD=password-for-ds517
SYNOLOGY_NAS2_SECURE=true
SYNOLOGY_NAS2_CERT_VERIFY=false
SYNOLOGY_NAS2_DSM_VERSION=7

# === Server Settings ===
SYNOLOGY_DEFAULT_NAS=ds923
SYNOLOGY_LOG_LEVEL=INFO

双重认证

如果NAS启用了2FA,请提供当前的OTP代码:

SYNOLOGY_NAS1_OTP_CODE=123456

注意:OTP代码很快过期。为了持续使用MCP,请创建一个没有2FA的专用服务帐户。

步骤3:测试连接

source .venv/bin/activate
synology-mcp

如果启动时没有错误,则服务器已准备就绪。按 Ctrl+C 阻止它。

Claude桌面设置

步骤1:找到配置文件

Claude Desktop MCP配置文件位于:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

如果文件还不存在,请创建它。

步骤2:添加Synology MCP服务器

打开配置文件并添加(或合并到) mcpServers 部分。您必须使用 完全绝对路径synology-mcp venv中的二进制文件:

{
  "mcpServers": {
    "synology": {
      "command": "/full/path/to/dk-synology-mcp/.venv/bin/synology-mcp",
      "env": {
        "SYNOLOGY_NAS1_NAME": "ds923",
        "SYNOLOGY_NAS1_HOST": "192.168.1.100",
        "SYNOLOGY_NAS1_PORT": "5001",
        "SYNOLOGY_NAS1_USERNAME": "mcp-service",
        "SYNOLOGY_NAS1_PASSWORD": "your-password",
        "SYNOLOGY_NAS1_SECURE": "true",
        "SYNOLOGY_NAS1_CERT_VERIFY": "false",
        "SYNOLOGY_NAS1_DSM_VERSION": "7",
        "SYNOLOGY_DEFAULT_NAS": "ds923"
      }
    }
  }
}

对于多NAS,在同一NAS中添加第二个NAS变量 env 块:

{
  "mcpServers": {
    "synology": {
      "command": "/full/path/to/dk-synology-mcp/.venv/bin/synology-mcp",
      "env": {
        "SYNOLOGY_NAS1_NAME": "ds923",
        "SYNOLOGY_NAS1_HOST": "192.168.1.100",
        "SYNOLOGY_NAS1_PORT": "5001",
        "SYNOLOGY_NAS1_USERNAME": "mcp-service",
        "SYNOLOGY_NAS1_PASSWORD": "password-for-ds923",
        "SYNOLOGY_NAS1_SECURE": "true",
        "SYNOLOGY_NAS1_CERT_VERIFY": "false",
        "SYNOLOGY_NAS1_DSM_VERSION": "7",
        "SYNOLOGY_NAS2_NAME": "ds517",
        "SYNOLOGY_NAS2_HOST": "192.168.1.101",
        "SYNOLOGY_NAS2_PORT": "5001",
        "SYNOLOGY_NAS2_USERNAME": "mcp-service",
        "SYNOLOGY_NAS2_PASSWORD": "password-for-ds517",
        "SYNOLOGY_NAS2_SECURE": "true",
        "SYNOLOGY_NAS2_CERT_VERIFY": "false",
        "SYNOLOGY_NAS2_DSM_VERSION": "7",
        "SYNOLOGY_DEFAULT_NAS": "ds923"
      }
    }
  }
}

重要提示:

  • 替换 /full/path/to/dk-synology-mcp 使用克隆仓库的实际路径。
  • 如果您已经配置了其他MCP服务器,请合并 "synology" 进入你现有的 mcpServers object——不要替换整个文件。
  • 使用venv二进制文件的完整路径(.venv/bin/synology-mcp),不仅 synology-mcp,因为Claude Desktop不会激活您的shell配置文件或venv。

步骤3:重新启动克劳德桌面

完全退出Claude Desktop并重新打开。Synology MCP服务器将出现在MCP工具列表中(查找聊天输入底部的锤子图标)。

步骤4:验证它是否有效

试着问克劳德:

  • “测试我的Synology NAS连接”
  • “显示我的NAS运行状况仪表板”
  • “列出/volume1/homes中的文件”
  • “我的NAS上正在运行哪些Docker容器?”

使用Docker

构建和运行(stdio传输)

docker compose up -d

手动构建和运行

docker build -t synology-mcp .
docker run --env-file .env -i synology-mcp

SSE传输(网络可访问)

取消注释中的相关行 docker-compose.yml,或运行:

docker run --env-file .env -p 8080:8080 synology-mcp --transport sse --port 8080

多NAS使用情况

每个工具都接受一个可选 nas 参数。如果省略,则使用默认NAS。

"List files on ds923"        → nas parameter not needed (it's the default)
"List files on ds517"        → nas="ds517"
"Show VMs on ds923"          → nas parameter not needed
"Docker containers on ds517" → nas="ds517"

使用 synology_list_connections 查看所有已配置的NAS单元及其活动会话,或 synology_test_connection 以验证连接。

项目结构

dk-synology-mcp/
├── pyproject.toml
├── Dockerfile
├── docker-compose.yml
├── .env.example
├── README.md
└── src/
    └── synology_mcp/
        ├── __init__.py
        ├── server.py              # FastMCP server entry point
        ├── utils/
        │   ├── config.py          # Environment config loader
        │   ├── connection.py       # Multi-NAS ConnectionManager
        │   └── formatters.py       # Response formatting helpers
        └── tools/
            ├── filestation.py      # File management (16 tools)
            ├── sysinfo.py          # System monitoring (6 tools)
            ├── downloadstation.py  # Downloads (8 tools)
            ├── cloudsync.py        # Cloud Sync (5 tools)
            ├── backup.py           # HyperBackup (5 tools)
            ├── docker_tools.py     # Docker/Container (8 tools)
            ├── task_scheduler.py   # Scheduled tasks (5 tools)
            ├── photos.py           # Synology Photos (4 tools)
            ├── package.py          # Package management (4 tools)
            ├── users_groups.py     # Users & groups (4 tools)
            ├── shares.py           # Shared folders (3 tools)
            ├── virtualization.py   # VMM (5 tools)
            ├── snapshot.py         # Snapshots (4 tools)
            ├── active_backup.py    # Active Backup (6 tools)
            └── system_tools.py     # NAS connections (4 tools)

故障排除

“找不到命令:synology mcp”

你没有用venv。要么先激活它(source .venv/bin/activate)或使用完整路径: .venv/bin/synology-mcp.

“连接被拒绝”或超时错误

  • 验证您的NAS IP是否可访问: ping 192.168.1.100
  • 验证端口是否打开: curl -k https://192.168.1.100:5001
  • 检查是否在“控制面板”>“登录门户”中启用了DSM的HTTP/HTTPS服务
  • 如果使用HTTPS和自签名证书,请确保 CERT_VERIFY=false

“权限被拒绝”或“凭据无效”

  • 仔细检查您的用户名和密码 .env 或Claude桌面配置
  • 确保用户帐户位于 administrators 群组
  • 如果帐户上启用了2FA,请提供 OTP_CODE 或使用没有2FA的服务帐户

Claude Desktop不显示Synology工具

  • 确保 command 路径在 claude_desktop_config.json完全绝对路径.venv/bin/synology-mcp
  • 退出并完全重新启动Claude Desktop(而不仅仅是关闭窗口)
  • 检查克劳德桌面日志: ~/Library/Logs/Claude/ (macOS)

依赖项

SSL主机名不匹配错误

如果您在通过HTTPS连接时遇到SSL错误,请使用您的NAS主机名(例如。, mynas.synology.me)而不是原始IP地址 SYNOLOGY_NAS1_HOSTDSM生成的自签名证书绑定到主机名,而不是IP。

更新日志

v0.3.0--运行时错误修复和健壮性(2026-03-02)

修复了在实际NAS管理会话中发现的错误。每个工具都针对运行DSM 7的实时DS923+进行了测试,揭示了只有在运行时才会出现的问题。

任务处理-- _extract_taskid() 助手(filestation.py):

synology api的任务启动方法(start_delete, start_copy_move, start_compress, start_extract)返回一个普通字符串,如下所示 "You can now check the status of request with get_delete_status() , task id is: FileStation_xxx"interactive_output=True (默认设置)。前面的代码需要一个带 "taskid" 键,导致所有四个操作失败。添加 _extract_taskid() 使用正则表达式解析来处理这两种响应格式。适用于所有任务处理程序:删除、复制/移动、压缩、提取。

共享文件夹-- SYNO.Core.Share 按键错误(shares.py):

Share.list_folders() 在synology中,api失败 KeyError('SYNO.Core.Share') 因为API没有在会话的 core_list DSM 7。三个共享工具(synology_shared_folders, synology_shared_folder_info, synology_shared_folder_permissions)现在回到直接 request_data() 发生KeyError时使用硬编码API路径调用。

其他修复:

  • system_tools.pysynology_list_connectionssynology_server_capabilities 迭代字典键而不是值(config.nas_configsconfig.nas_configs.values())
  • filestation.pysynology_file_tree 现在使用 treelib.Tree 随着 tree.show(stdout=False) 用于正确的ASCII树输出;添加 treelib>=1.6.0 作为项目依赖
  • filestation.pysynology_compress 使用过的 format 参数(Python内置shadow)而不是正确的 compress_format
  • Claude Desktop配置示例现在使用通用路径,而不是硬编码的用户路径

v0.2.0-API方法名称审核(2026-03-02)

修复了13个工具文件中的所有synology api方法调用。这 synology-api Python包使用与DSM API命名约定不同的非显而易见的方法名称。现在,每个工具都使用正确的底层方法,并通过内省进行验证 synology-api v0.8.2。

文件已更改(已修复46个方法调用):

  • system_tools.pyget_info()get_system_info()
  • sysinfo.py --8个修复: get_dsm_infodsm_info, get_system_utilizationget_all_system_utilization, get_storage_infostorage, get_all_serviceservices_status
  • docker_tools.py --6个修复: get_containerscontainers, restart_container 替换为stop+start(synology api中不重新启动), get_container_logget_logs, get_imagesdownloaded_images, get_networksnetwork, get_resourcescontainer_resources
  • cloudsync.py --4个修复: get_connection_statusget_connection_information, pause_connectionconnection_pause, resume_connectionconnection_resume, get_connection_logget_connection_logs
  • virtualization.py --5个修复: get_guest_listget_images_list, get_guest_infoget_specific_vm_info, poweron_guestvm_power_on, poweroff_guestvm_force_power_off, shutdown_guestvm_shut_down
  • shares.py --3个修复: get_share_listlist_folders, get_share_infoget_folder, get_share_permissionget_folder_permissions
  • users_groups.py --3个修复: get_list_userget_users, get_list_groupget_groups, get_group_memberget_users
  • active_backup.py --5个修复: list_task_listlist_tasks, get_task_infotask_history, list_device_listlist_device_transfer_size, get_device_infolist_device_transfer_size, list_restore_pointsresult_details
  • package.py --4个修复: packages_installedlist_installed, package_getget_package,和程序包启动/停止现在通过直接调用DSM API request_data() (synology api没有启动/停止方法)
  • photos.py --4个修复: get_albumslist_albums, get_itemslist_item_in_folders, searchlist_search_filters, get_album_itemsget_album
  • snapshot.py --2个修复: delete_snapshotdelete_snapshots, list_replication_taskslist_replication_plans
  • task_scheduler.py --1修复: get_task_resultget_task_results
  • backup.py --1修复: backup_task_resultintegrity_check_run

其他修复:

  • 修正了模块级ConnectionManager代理模式 _active_conn_mgr 变量
  • 通过使用NAS主机名而不是IP地址修复了SSL主机名不匹配的问题

许可证

麻省理工学院

目录标签

目录标签

PythonClaude文件操作NAS管理本地部署Docker管理虚拟化备份服务

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

66

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP