NAS监控管理服务器

用于Synology NAS设备的模型上下文协议服务器,提供实时NAS健康状态、存储、系统信息和电源管理功能。

  • by lefty3382
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 lefty3382/synology-mcp

使用说明

Synology MCP服务器

A. 模型上下文协议 Synology NAS设备的MCP服务器。通过Streamable HTTP传输提供对NAS运行状况、存储、系统信息和电源管理的实时访问-- 37工具 跨越三个权限级别。

建于 FastMCP, py同义词api,还有一个习惯 DirectApiClient 用于原始SYNO.*API访问。

特性

  • 多NAS支持 --从单个服务器监视多个Synology NAS单元
  • 37工具 --23健康+7文件浏览+5文件管理+2电源管理
  • 混合后端 --py-synologydsm-api用于稳定的健康指标,直接HTTP客户端用于高级诊断
  • 三个权限级别 --健康(默认)、读取、写入——由一个环境变量控制
  • 原生流式HTTP --无需代理,直接从Claude Code连接
  • 单个Docker容器 --Python基础薄弱,依赖性最小

建筑

服务器使用 混合后端 合并两个API客户端:

  1. py同义词api --用于核心Synology DSM数据(系统信息、存储、利用率、共享、网络)的成熟、经过充分测试的库。为10个原始健康工具供电。

  2. DirectApiClient -轻量级HTTP客户端,直接根据DSM web API进行身份验证并调用原始 SYNO.* 端点。提供对py-synologydsm-api未涵盖的api的访问:SSD缓存、UPS、NFS导出、服务、硬件传感器、日志、用户帐户等。包括30秒响应缓存和自动会话续订。

两个客户端在启动时连接。如果直接客户端无法初始化,核心运行状况工具将继续工作-直接API工具将返回一条明确的错误消息。这 get_health_summary 该工具使用两个后端:py-synologydsm-api用于基本指标,DirectApiClient用于增强SSD缓存、UPS和NFS警报(如果不可用,则使用优雅的回退)。

快速开始

Docker(推荐)

# Pull the image
docker pull ghcr.io/lefty3382/synology-mcp:latest

# Run with environment variables
docker run -d \
  --name synology-mcp \
  -p 8485:8485 \
  -e SYNOLOGY_TANK_HOST=10.0.40.2 \
  -e SYNOLOGY_TANK_PORT=5001 \
  -e SYNOLOGY_TANK_USERNAME=mcp-service \
  -e SYNOLOGY_TANK_PASSWORD=yourpassword \
  -e MCP_PORT=8485 \
  -e MCP_PERMISSION_TIER=health \
  ghcr.io/lefty3382/synology-mcp:latest

克劳德代码

claude mcp add synology --transport http http://YOUR_HOST:8485/mcp --scope user

配置

所有配置都是通过环境变量进行的。复制 .env.example 到 .env 并填写你的价值观。

NAS配置

每个NAS都配置了 SYNOLOGY_<NAME>_* 前缀。根据需要添加尽可能多的NAS单元:

SYNOLOGY_TANK_HOST=10.0.40.2
SYNOLOGY_TANK_PORT=5001
SYNOLOGY_TANK_USERNAME=mcp-service
SYNOLOGY_TANK_PASSWORD=secret

SYNOLOGY_DOZER_HOST=10.0.40.3
SYNOLOGY_DOZER_PORT=5001
SYNOLOGY_DOZER_USERNAME=mcp-service
SYNOLOGY_DOZER_PASSWORD=secret

服务器设置

变量 默认值 描述
MCP_PORT 8485 MCP端点的HTTP端口
MCP_PERMISSION_TIER health 工具层: health, read,或 write

权限级别

层级 工具 用例
health (默认) 23个工具-10个核心健康+13个直接API诊断 基础设施监控
read 30个工具--健康状况+7个文件浏览工具 +浏览NAS内容
write 37个工具——读取+5个文件管理+2个电源管理 +完整文件+电源管理

通过设置更改层 MCP_PERMISSION_TIER 并重新启动。

工具

健康层——核心工具(始终可用)

工具 说明
list_nas 列出已配置的NAS单元及其连接状态
get_system_info DSM版本、型号、正常运行时间、序列号、温度
get_utilization CPU负载、RAM使用率、网络I/O
get_volumes 卷容量、使用率%、RAID状态
get_disks 带状态、温度的磁盘列表
get_smart_status 每个磁盘的SMART运行状况
get_storage_pools 存储池配置、RAID类型
get_shares 共享文件夹列表
get_network 网络接口、DNS、网关
get_health_summary 使用SSD缓存、UPS和NFS警报聚合运行状况

运行状况层-直接API工具(始终可用)

这些工具使用 DirectApiClient 查询原始SYNO.*端点,以获取无法通过py-synologydsm api获得的数据。

存储诊断

工具 说明
get_disk_details 全磁盘硬件信息——型号、序列号、供应商、固件、分配角色、托盘状态
get_ssd_cache SSD缓存池状态和每个磁盘的运行状况
get_storage_pool_members 具有RAID类型和清理/重建状态的每个池磁盘成员资格

服务与配置

工具 说明
get_nfs_exports 具有允许的主机和权限的NFS共享文件夹
get_services_status NFS、SMB、SSH、rsync、SNMP的运行状态

硬件和电源

工具 说明
get_ups_status UPS型号、电池电量、运行时间、NUT配置
get_hardware_info 风扇速度、电源恢复、蜂鸣声控制

日志和通知

工具 说明
get_recent_logs 具有严重性/关键字过滤的系统日志
get_notifications DSM通知配置和警报历史记录

访问和用户

工具 说明
get_active_connections 已连接的SMB/NFS/FTP客户端
get_users 本地用户帐户和组成员资格

维护与发现

工具 说明
get_update_status 可用的DSM更新和当前版本
discover_apis 列出NAS上所有可用的SYNO.*API终结点

读取层

工具 说明
list_files 浏览目录——包含名称、大小、类型、修改日期的文件/文件夹
get_file_info 具有所有权和权限的文件/文件夹元数据
list_shared_folders 具有卷状态的顶级File Station共享文件夹
search_files 在目录中按名称模式搜索文件(异步)
get_file_content 读取文件的文本内容(仅限分配的扩展名)
compare_folders 比较两个目录的内容——仅在A、仅在B、不匹配
get_folder_size 目录的递归大小和文件计数(异步)

写入层

文件管理

工具 说明
create_folder 创建新目录(可选择创建父目录)
rename 重命名文件或文件夹
move 将文件或文件夹移动到新位置(大型操作异步)
copy 将文件或文件夹复制到新位置(大型操作异步)
delete 删除文件或文件夹(确认门控,可选递归)

电源管理

工具 说明
shutdown_nas 优雅地关闭NAS(确认门控)
reboot_nas 优雅地重新启动NAS(确认门控)

两种电动工具都需要 confirm=True 执行。如果没有它,它们会返回动作的预览。这 nas 参数是必需的--您不能一次关闭或重新启动所有NAS单元。

NAS身份验证

创建一个 mcp-service 每个Synology NAS上的本地用户:

  1. DSM>控制面板>用户和组>创建
  2. 用户名: mcp-service
  3. 对于健康层:可能需要管理员组成员资格(DSM存储/SMART API通常需要管理员)
  4. 限制应用程序权限以拒绝除DSM之外的所有内容

发展

# Clone and set up
git clone https://github.com/lefty3382/synology-mcp.git
cd synology-mcp
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

# Copy and edit config
cp .env.example .env

# Run locally
python -m synology_mcp

许可证

麻省理工学院