synology-filestation-mcp
synology-filestation-mcp
Сервис MCP (Model Context Protocol), обернутый поверх Synology File Station Web API, позволяющий AI Agent напрямую управлять файлами на Synology NAS: просматривать каталоги, искать, загружать/скачивать, создавать/переименовывать/копировать/перемещать/удалять, архивировать/распаковывать и т.д.
Поддерживает два режима работы:
stdio, локальный режим (
src/index.js): запускается на персональном компьютере, учетные данные берутся из локальных переменных окруженияStreamable HTTP, удаленный режим (
src/http.js): централизованное развертывание на сервере, используется несколькими пользователями, каждый передает свои учетные данные NAS через заголовки запроса
Требования к окружению
Node.js >= 18 (разработка проверена на Node 24; для серверов с низкой версией glibc доступна сборка glibc-217 на unofficial-builds)
DSM 7.x (протестировано на DSM 7.2)
Related MCP server: Synology MCP Server
Установка
npm installРежим 1: stdio локальный режим
Информация для подключения к NAS передается через переменные окружения (также можно скопировать .env.example в .env и заполнить, сервис автоматически загрузит их при запуске):
Переменная | Описание |
| Адрес DSM, например |
| Учетная запись DSM |
| Пароль DSM |
| Опционально, локальный каталог по умолчанию для |
На примере Claude Desktop, настройка claude_desktop_config.json:
{
"mcpServers": {
"synology-filestation": {
"command": "node",
"args": ["D:/path/to/synology-filestation-mcp/src/index.js"],
"env": {
"SYNOLOGY_HOST": "http://192.168.1.1:5000",
"SYNOLOGY_USER": "your_username",
"SYNOLOGY_PASSWORD": "your_password"
}
}
}
}Режим 2: HTTP удаленный режим (совместное использование несколькими пользователями)
Запуск сервера:
# .env 或环境变量
SYNOLOGY_HOST=http://192.168.1.1:5000 # 默认 NAS 地址(客户端可用 X-NAS-Host 覆盖)
PORT=3000
MCP_AUTH_TOKEN=<随机令牌> # 设置后客户端必须带 Bearer token
npm run start:httpОсобенности:
Многопользовательский: каждый сеанс MCP независимо хранит статус входа в NAS (пул sid), не пересекаются
Передача учетных данных: клиент передает свои учетные данные NAS через заголовки
X-NAS-User/X-NAS-Password, опциональноX-NAS-Hostдля переопределения умолчания сервера; если не указаны, используются переменные окружения сервера (поддерживает централизованное управление учетными записями на сервере)Аутентификация: если установлен
MCP_AUTH_TOKEN, все запросы к/mcpдолжны содержать заголовокAuthorization: Bearer <token>Управление сеансами: автоматическая очистка и выход из NAS после 30 минут простоя (настраивается через
SESSION_IDLE_TTL_MS)Проверка здоровья:
GET /health
Конфигурация клиента (для клиентов, поддерживающих удаленный MCP, через URL):
{
"mcpServers": {
"synology-filestation": {
"url": "http://<部署服务器>:3000/mcp",
"headers": {
"Authorization": "Bearer <MCP_AUTH_TOKEN>",
"X-NAS-User": "同事自己的 NAS 账号",
"X-NAS-Password": "同事自己的 NAS 密码"
}
}
}
}Пример развертывания с systemd:
[Unit]
Description=Synology FileStation MCP (HTTP)
After=network.target
[Service]
WorkingDirectory=/opt/synology-filestation-mcp
ExecStart=/usr/bin/node src/http.js
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.targetПредупреждение безопасности: в производственной среде рекомендуется использовать HTTPS (обратный прокси) для завершения TLS, чтобы избежать передачи учетных данных NAS в заголовках запроса в открытом виде.
Список инструментов
Инструмент | Описание | API нижнего уровня |
| Список общих папок | SYNO.FileStation.List / list_share |
| Список содержимого каталога (с поддержкой пагинации, сортировки, фильтрации по шаблону) | SYNO.FileStation.List / list |
| Получить подробную информацию о файле/каталоге | SYNO.FileStation.List / getinfo |
| Поиск файлов по шаблону (автоматический опрос до завершения) | SYNO.FileStation.Search / start+list |
| Остановить задачу поиска | SYNO.FileStation.Search / stop |
| Очистить все задачи поиска | SYNO.FileStation.Search / clean |
| Создать папку | SYNO.FileStation.CreateFolder / create |
| Переименовать файл/папку | SYNO.FileStation.Rename / rename |
| Копирование/перемещение (асинхронная задача, возвращает taskid) | SYNO.FileStation.CopyMove / start |
| Проверить прогресс фоновой задачи | SYNO.FileStation.BackgroundTask / list |
| Удаление (асинхронная задача, необратимо) | SYNO.FileStation.Delete / start |
| Скачать файл с NAS в локальный каталог | SYNO.FileStation.Download / download |
| Загрузить локальный файл на NAS | SYNO.FileStation.Upload / upload |
| Сжатие на NAS в zip/7z (асинхронная задача) | SYNO.FileStation.Compress / start |
| Распаковка на NAS (асинхронная задача, целевой каталог должен существовать) | SYNO.FileStation.Extract / start |
Тестирование
SYNOLOGY_HOST=http://192.168.0.196:5000 SYNOLOGY_USER=xxx SYNOLOGY_PASSWORD=xxx npm testДымовое тестирование выполняет полный цикл на NAS: вход → список общих папок → создание каталога → загрузка → список → получение информации → переименование → копирование → поиск → скачивание с проверкой содержимого → удаление → выход. Тест создает временный каталог mcp-smoke-test в одной из доступных для записи общих папок и автоматически удаляет его после завершения.
Также есть расширенный тест test/extended.mjs (node test/extended.mjs, также читает переменные окружения): покрывает побайтовую проверку загрузки и скачивания 23 форматов файлов (документы/изображения/видео/аудио/архивы/базы данных/образы виртуальных машин), пакетное копирование/перемещение/удаление, распаковку на стороне NAS, проверку попадания в корзину, а также исследование границ прав доступа и безопасности.
Примечания по реализации (совместимость с DSM 7.x)
При запуске сначала вызывается
SYNO.API.Infoдля обнаружения путей и версий API, вход выполняется черезSYNO.API.Auth(format=sid).Параметр
additionalуSYNO.FileStation.Listv2 требует формат JSON-массива (например,["size","time"]), строка, разделенная запятыми, будет молча проигнорирована.Для запроса информации о файлах используется
SYNO.FileStation.List / getinfo(SYNO.FileStation.Info / getвозвращает конфигурацию сервера File Station, а не информацию о файлах).Загрузка использует версию API 2: на практике в v3 параметр
overwriteне работает, при совпадении имен файлов возвращается 414. При загрузке sid передается двойным каналом: через поле формы и черезCookie: id=<sid>.Копирование/перемещение/удаление являются асинхронными задачами;
SYNO.FileStation.BackgroundTaskв DSM 7.x имеет только методlist(безstatus), прогресс запрашивается фильтрацией по taskid.Поиск - асинхронная задача, инструмент внутри опрашивает
listдо завершения (finished).Целевой каталог для
SYNO.FileStation.Extractдолжен существовать заранее, иначе возвращается 408 (No such file or directory).SYNO.FileStation.Compressзависит от разрешений приложения в DSM для учетной записи; если возвращается 105 (session does not have permission), необходимо предоставить соответствующие разрешения в панели управления DSM.
Границы возможностей (не входят в API File Station)
Следующие возможности отсутствуют в официальном API File Station, и данный MCP не может их предоставить:
Управление правами ACL: относится к функциям панели управления DSM (частные интерфейсы SYNO.Core.*, не публичный API File Station).
AES-шифрование общих папок: относится к функциям управления хранилищем DSM (создание/монтирование зашифрованных общих папок).
Защита от изменений (флаги только для чтения / запрета удаления): API File Station не имеет точки входа для установки; может быть косвенно реализовано через монтирование общей папки только для чтения.
Сетевая корзина: поведение удаления автоматически следует настройкам корзины для каждой общей папки (если включена, удаленные файлы попадают в
<share>/#recycle); API не требует и не может управлять отдельно.
Структура каталогов
src/
index.js stdio 入口(本地模式)
http.js HTTP 入口(远程模式,Streamable HTTP + 多用户会话池)
server.js 共享的 MCP Server 构建(注册全部工具)
env.js .env 加载
client.js Synology API 客户端:API 发现、认证、请求封装、错误码映射
tools/ 每个 File Station API 一个工具模块
test/
smoke.mjs 对真实 NAS 的全链路冒烟测试(stdio 层逻辑)
http-smoke.mjs HTTP 模式自测(鉴权、会话、工具调用、会话关闭)
extended.mjs 扩展能力测试(多格式、批量、解压、回收站)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
- Flicense-qualityDmaintenanceProvides secure file system operations for AI assistants including directory listing, file reading/writing, deletion, searching, and copying. Features safety controls like path validation, permission checks, and file size limits.
- Alicense-qualityAmaintenanceEnables AI assistants to manage Synology NAS devices with file operations (create, delete, move, search) and Download Station control through secure authentication and session management.170MIT
- AlicenseBqualityDmaintenanceEnables AI agents to perform FTP/FTPS/SFTP file operations including upload, download, sync, and directory management with multi-server support.36341MIT
- Alicense-qualityCmaintenanceProvides file system access and operations, enabling AI assistants to read, write, list, search, and manage files and directories through a standardized interface.1MIT
Related MCP Connectors
File uploads for AI agents. Upload, list, and manage files. No signup required.
Securely search and manage workspace context files for AI agents and teams.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
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/01men/synology-filestation-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server