synology-chat-hermes-mcp
synology-chat-hermes-mcp
Ограниченный HTTP-сервер FastMCP, который предоставляет агентам ИИ фиксированную SMB-папку Synology NAS как инструменты для чтения/записи файлов — со строгой изоляцией путей, ограничениями размера и блокировкой активного контента.
Изначально создан как файловый канал для семейного развёртывания Hermes (управляющий агент → MCP → SMB3 → NAS). Работает с любым MCP-клиентом (Hermes, Claude и т.д.).
Зачем это нужно
Агенты ИИ с доступом к файлам безопасны только в том случае, если доступ ограничен. Этот сервер:
Изолирует каждый путь до одной фиксированной папки (
NAS_SHARE). Обход пути (.., абсолютные пути, symlink/reparse-point escape) отклоняется до любого SMB-вызова.Отклоняет публичные WAN-серверы —
NAS_SERVERдолжен быть частным, link-local или Tailscale (100.64.0.0/10) литеральным IP. DNS-имена и публичные IP-адреса не принимаются.Никогда не хранит учётные данные — пароль SMB читается из docker secret-файла при запуске (
NAS_PASSWORD_FILE), никогда из переменных окружения или кода.Блокирует активный контент — генераторы DOCX/XLSX/PDF создают только очищенные документы; бинарные загрузки проверяются на макросы, внешние связи и скрипты; несоответствия расширения и медиатипа отклоняются.
Ограничивает всё — размер файла, размер бинарного файла, количество символов в документе, ячеек в таблице, пикселей изображения, результаты поиска — всё имеет жёсткие лимиты.
Аудирует операции — каждое изменение добавляется в JSONL-журнал аудита.
Related MCP server: MCP File System Server
Архитектура
Hermes (or any MCP client)
→ HTTP :8000/mcp (FastMCP, streamable HTTP)
→ NasService (validation, limits, audit)
→ SMBBackend (smbprotocol, SMB3, encryption+signing required)
→ Synology NAS shareИнструменты
Инструмент | Описание |
| Проверка подключения SMB3 |
| Список содержимого каталога внутри папки |
| Поиск имен файлов по пути |
| Чтение текстового файла UTF-8 с ограничением размера |
| Атомарная запись UTF-8 (существующие файлы защищены, если не указан |
| Валидированная запись base64 (TXT/DOCX/XLSX/PDF/PNG/JPEG) |
| Безопасный DOCX из заголовка + обычного/Markdown-подобного текста |
| Безопасный XLSX (формулы отклоняются) |
| Статический PDF (без скриптов/ссылок/встроенных файлов) |
| Извлечение текста из TXT/MD/CSV/JSON/YAML/DOCX/XLSX/PDF |
| Создание каталога (создавайте по одному уровню за раз — |
| Перемещение внутри папки |
| Метаданные без содержимого |
Известное ограничение: create_directory проверяет родительский каталог до вызова makedirs, поэтому многоуровневый путь, первый сегмент которого не существует, возвращает not_found даже с parents=True. Создавайте по одному уровню за раз.
Быстрый старт
cp .env.example .env # set NAS_SERVER (Tailscale/private IP), NAS_USERNAME
# provide the SMB password as a docker secret:
printf '%s' 'YOUR_SMB_PASSWORD' > ./synology_password
chmod 600 ./synology_password
docker build -t nas-mcp .
docker run -d --name nas-mcp \
--env-file .env \
-v "$PWD/synology_password:/run/secrets/synology_password:ro" \
-v nas-mcp-audit:/var/log/nas-mcp \
-p 8000:8000 \
nas-mcpПроверка работоспособности:
curl -X POST http://127.0.0.1:8000/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"health","arguments":{}}}'Конфигурация Hermes MCP
mcp_servers:
nas-mcp:
type: http
url: http://nas-mcp:8000/mcpЗапуск тестов
python -m nas_mcp.smoke # exercises the full tool chain against the live shareСправочник переменных окружения
Переменная | Обязательная | По умолчанию | Примечания |
| ✅ | — | Только частный IP или Tailscale (литерал) |
| ✅ | — | Фиксированное имя общего ресурса, применяется во время выполнения |
| ✅ | — | Пользователь SMB на уровне папки |
|
| Путь к секрету Docker | |
|
| ||
|
| Требуется шифрование SMB3 | |
|
| Требуется подпись SMB3 | |
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
|
Замечания по безопасности
Пароль SMB — единственный секрет в системе, и он находится только в файле docker secret. Ничего не зашито жёстко, ничего не хранится в
.envв открытом виде, кроме несекретных настроечных значений (а.envигнорируется git).В продакшене привязывайтесь к частному интерфейсу; не открывайте
:8000публично.Имя общего ресурса и пользователь SMB являются конфигурационными (
NAS_SHARE,NAS_USERNAME) — задавайте их для каждого развёртывания; в коде не предполагается конкретное значение.
Лицензия
MIT
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
- Alicense-qualityCmaintenanceProvides a secure, constrained filesystem workspace for LLM agents to manage files, notes, and code artifacts via stdio or remote HTTP. It features granular access controls, including extension whitelisting, storage quotas, and immutable paths for safe automated file operations.BSD 3-Clause
- Flicense-qualityCmaintenanceA secure, sandboxed file system server that enables reading, writing, searching, and managing files through MCP-compatible AI clients with path traversal protection and size limits.
- Alicense-qualityBmaintenanceExposes local file system operations to AI assistants via Streamable HTTP with security features like auth, path whitelisting, and audit logging.2,8841MIT
- FlicenseAqualityBmaintenanceMCP 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
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
File uploads for AI agents. Upload, list, and manage files. No signup required.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
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/shunnnnn-png/synology-chat-hermes-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server