synology-chat-hermes-mcp
synology-chat-hermes-mcp
Un servidor HTTP FastMCP restringido que expone un recurso compartido SMB fijo de un NAS Synology a agentes de IA como herramientas de archivos de lectura/escritura, con un estricto confinamiento de rutas, límites de tamaño y rechazo de contenido activo incorporado.
Originalmente construido como el canal de archivos para un despliegue familiar de Hermes (agente de control → MCP → SMB3 → NAS). Funciona con cualquier cliente MCP (Hermes, Claude, etc.).
Por qué existe esto
Los agentes de IA con acceso a archivos solo son seguros si el acceso está acotado. Este servidor:
Confinamiento de cada ruta a un único recurso compartido fijo (
NAS_SHARE). El path traversal (.., rutas absolutas, escape mediante enlaces simbólicos/puntos de reanálisis) se rechaza antes de cualquier llamada SMB.Rechaza servidores WAN públicos —
NAS_SERVERdebe ser una IP literal privada, de enlace local o de Tailscale (100.64.0.0/10). Los nombres DNS y las IPs públicas son rechazados.Nunca almacena credenciales — la contraseña SMB se lee de un archivo secreto de Docker al iniciar (
NAS_PASSWORD_FILE), nunca de variables de entorno ni del código.Bloquea contenido activo — los generadores de DOCX/XLSX/PDF producen solo documentos sanitizados; las cargas binarias se analizan en busca de macros, relaciones externas y scripts; se rechazan las discrepancias entre extensión y tipo de medio.
Acota todo — el tamaño de archivo, el tamaño binario, los caracteres del documento, las celdas de la hoja de cálculo, los píxeles de la imagen y los resultados de búsqueda tienen límites estrictos.
Audita las operaciones — cada mutación se añade a un registro de auditoría en formato JSONL.
Related MCP server: MCP File System Server
Arquitectura
Hermes (or any MCP client)
→ HTTP :8000/mcp (FastMCP, streamable HTTP)
→ NasService (validation, limits, audit)
→ SMBBackend (smbprotocol, SMB3, encryption+signing required)
→ Synology NAS shareHerramientas
Herramienta | Descripción |
| Verificación de conectividad SMB3 |
| Lista un directorio dentro del recurso compartido |
| Busca nombres de archivo en una ruta |
| Lee un archivo de texto UTF-8 con límite de tamaño |
| Escritura atómica UTF-8 (los archivos existentes están protegidos a menos que se use |
| Escritura validada en base64 (TXT/DOCX/XLSX/PDF/PNG/JPEG) |
| DOCX seguro a partir de título + texto plano o similar a Markdown |
| XLSX seguro (se rechazan fórmulas) |
| PDF estático (sin scripts/enlaces/archivos incrustados) |
| Extrae texto de TXT/MD/CSV/JSON/YAML/DOCX/XLSX/PDF |
| Crea un directorio (nota: crear un nivel a la vez — |
| Mueve dentro del recurso compartido |
| Metadatos sin contenido |
Limitación conocida: create_directory valida el padre antes de makedirs, por lo que una ruta de varios niveles cuyo primer segmento no exista devuelve not_found incluso con parents=True. Cree un nivel a la vez.
Inicio rápido
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-mcpVerificación de estado:
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":{}}}'Configuración de MCP para Hermes
mcp_servers:
nas-mcp:
type: http
url: http://nas-mcp:8000/mcpEjecución de pruebas
python -m nas_mcp.smoke # exercises the full tool chain against the live shareReferencia de variables de entorno
Variable | Obligatoria | Valor por defecto | Notas |
| ✅ | — | Solo IP literal privada o de Tailscale |
| ✅ | — | Nombre fijo del recurso, aplicado en ejecución |
| ✅ | — | Usuario SMB del recurso compartido |
|
| Ruta del secreto de Docker | |
|
| ||
|
| Cifrado SMB3 requerido | |
|
| Firma SMB3 requerida | |
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
|
Notas de seguridad
La contraseña SMB es el único secreto del sistema y reside solo en el archivo secreto de Docker. Nada está codificado, nada se almacena en
.enven texto plano más allá de valores de ajuste no secretos (y.envestá en gitignore).En producción, enlace a una interfaz privada; no exponga
:8000públicamente.El nombre del recurso compartido y el usuario SMB son configuración (
NAS_SHARE,NAS_USERNAME) — establézcalos por despliegue; nada en el código asume un valor particular.
Licencia
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