Skip to main content
Glama
shunnnnn-png

synology-chat-hermes-mcp

by shunnnnn-png

synology-chat-hermes-mcp

English · 繁體中文

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úblicosNAS_SERVER debe 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 share

Herramientas

Herramienta

Descripción

health

Verificación de conectividad SMB3

list_directory

Lista un directorio dentro del recurso compartido

search_files

Busca nombres de archivo en una ruta

read_file

Lee un archivo de texto UTF-8 con límite de tamaño

write_file

Escritura atómica UTF-8 (los archivos existentes están protegidos a menos que se use overwrite)

write_binary_file

Escritura validada en base64 (TXT/DOCX/XLSX/PDF/PNG/JPEG)

create_document

DOCX seguro a partir de título + texto plano o similar a Markdown

create_spreadsheet

XLSX seguro (se rechazan fórmulas)

create_pdf

PDF estático (sin scripts/enlaces/archivos incrustados)

read_document

Extrae texto de TXT/MD/CSV/JSON/YAML/DOCX/XLSX/PDF

create_directory

Crea un directorio (nota: crear un nivel a la vez — parents=True no es fiable, ver más abajo)

move_file

Mueve dentro del recurso compartido

get_file_info

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-mcp

Verificació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/mcp

Ejecución de pruebas

python -m nas_mcp.smoke   # exercises the full tool chain against the live share

Referencia de variables de entorno

Variable

Obligatoria

Valor por defecto

Notas

NAS_SERVER

Solo IP literal privada o de Tailscale

NAS_SHARE

Nombre fijo del recurso, aplicado en ejecución

NAS_USERNAME

Usuario SMB del recurso compartido

NAS_PASSWORD_FILE

/run/secrets/synology_password

Ruta del secreto de Docker

NAS_CONNECT_TIMEOUT_SECONDS

8

NAS_REQUIRE_ENCRYPTION

true

Cifrado SMB3 requerido

NAS_REQUIRE_SIGNING

true

Firma SMB3 requerida

NAS_AUDIT_LOG

/var/log/nas-mcp/audit.jsonl

NAS_MAX_FILE_BYTES

1048576

NAS_MAX_BINARY_FILE_BYTES

8388608

NAS_MAX_DOCUMENT_CHARS

100000

NAS_MAX_SPREADSHEET_CELLS

50000

NAS_MAX_DOCUMENT_EXPANDED_BYTES

67108864

NAS_MAX_IMAGE_PIXELS

25000000

NAS_MAX_SEARCH_ENTRIES

5000

NAS_MAX_SEARCH_RESULTS

100

NAS_MCP_HOST / NAS_MCP_PORT

0.0.0.0 / 8000

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 .env en texto plano más allá de valores de ajuste no secretos (y .env está en gitignore).

  • En producción, enlace a una interfaz privada; no exponga :8000 pú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

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    -
    quality
    C
    maintenance
    Provides 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
  • F
    license
    -
    quality
    C
    maintenance
    A 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.
  • A
    license
    -
    quality
    B
    maintenance
    Exposes local file system operations to AI assistants via Streamable HTTP with security features like auth, path whitelisting, and audit logging.
    2,884
    1
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    MCP 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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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