Servidor MCP WebDAV - MCP Server Seguro por ALMC Security 2025

Servidor MCP WebDAV

Ver en GitHub

Servidor MCP WebDAV

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite operaciones CRUD en un punto final WebDAV con autenticación básica. Este servidor permite a Claude Desktop y a otros clientes MCP interactuar con sistemas de archivos WebDAV mediante comandos de lenguaje natural.

Características

  • Conexión a cualquier servidor WebDAV con autenticación opcional
  • Realizar operaciones CRUD en archivos y directorios
  • Exponer operaciones de archivos como recursos y herramientas MCP
  • Ejecución mediante transporte stdio (para integración con Claude Desktop) o transporte HTTP/SSE
  • Acceso seguro con autenticación básica opcional
  • Compatibilidad con contraseñas cifradas con bcrypt para la autenticación del servidor MCP (las contraseñas WebDAV deben ser de texto sin formato debido a las limitaciones del protocolo)
  • Agrupación de conexiones para mejorar el rendimiento con servidores WebDAV
  • Validación de la configuración mediante Zod
  • Registro estructurado para una mejor resolución de problemas

Requisitos previos

  • Node.js 18 o posterior
  • npm o yarn
  • Servidor WebDAV (para operaciones con archivos reales)

Instalación

Opción 1: Instalación desde el paquete npm

Instalación global

npm install -g webdav-mcp-server

O con npx

npx servidor webdav-mcp

Opción 2: Clonar y compilar desde el código fuente

Clonar repositorio

git clone https://github.com/yourusername/webdav-mcp-server.git cdwebdav-mcp-server

Instalar dependencias

npm install

Construir la aplicación

npm run build

Opción 3: Docker

Construir la imagen Docker

docker build -t webdav-mcp-server .

Ejecutar el contenedor sin autenticación

docker run -p 3000:3000
-e WEBDAV_ROOT_URL=http://your-webdav-server
-e WEBDAV_ROOT_PATH=/webdav
webdav-mcp-server

Ejecute el contenedor con autenticación tanto para WebDAV como para el servidor MCP

docker run -p 3000:3000
-e WEBDAV_ROOT_URL=http://your-webdav-server
-e WEBDAV_ROOT_PATH=/webdav
-e WEBDAV_AUTH_ENABLED=true
-e WEBDAV_USERNAME=admin
-e WEBDAV_PASSWORD=contraseña
-e AUTH_ENABLED=true
-e AUTH_USERNAME=usuario
-e AUTH_PASSWORD=contraseña
servidor webdav-mcp

Configuración

Cree un archivo .env en el directorio raíz con las siguientes variables:

Configuración de WebDAV

WEBDAV_ROOT_URL=http://localhost:4080WEBDAV_ROOT_PATH=/webdav

Autenticación WebDAV (opcional)

WEBDAV_AUTH_ENABLED=true WEBDAV_USERNAME=admin

La contraseña de WebDAV debe ser de texto plano (obligatorio si está activada la autenticación)

El protocolo WebDAV requiere el envío de la contraseña real al servidor

WEBDAV_PASSWORD=contraseña

Configuración del servidor (para el modo HTTP)

SERVER_PORT=3000

Configuración de autenticación para el servidor MCP (opcional)

AUTH_ENABLED=true AUTH_USERNAME=usuario AUTH_PASSWORD=contraseña AUTH_REALM=Servidor MCP WebDAV

La contraseña Auth para el servidor MCP puede ser un hash bcrypt (a diferencia de las contraseñas WebDAV)

AUTH_PASSWORD={bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy

Contraseñas cifradas para la autenticación del servidor MCP

Para mejorar la seguridad del servidor MCP (no de las conexiones WebDAV), puedes utilizar contraseñas cifradas con bcrypt en lugar de almacenarlas en texto plano:

  1. Generar un hash bcrypt:

Usando la utilidad incorporada

npm run generate-hash -- tu-contraseña

O con npx

npx webdav-mcp-generate-hash tu-contraseña 2. Añade el hash a tu archivo .env Añada el hash a su archivo .env con el prefijo {bcrypt}:

AUTH_PASSWORD={bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy

De esta forma, la contraseña de tu servidor MCP se almacena de forma segura. Ten en cuenta que las contraseñas WebDAV deben estar siempre en texto plano debido a los requisitos del protocolo.

Uso

Ejecución con transporte stdio

Este modo es ideal para la integración directa con Claude Desktop.

Si se instala globalmente

webdav-mcp-server

Si se utiliza npx

npx webdav-mcp-server

Si se construye desde el código fuente

node dist/index.js

Ejecución con transporte HTTP/SSE

Este modo permite acceder al servidor a través de HTTP con Server-Sent Events para la comunicación en tiempo real.

Si se instala globalmente

webdav-mcp-server --http

Si se utiliza npx

npx webdav-mcp-server --http

Si se construye desde el código fuente

node dist/index.js --http

Inicio rápido con Docker Compose

La forma más fácil de empezar con el servidor WebDAV y el servidor MCP es utilizar Docker Compose:

Inicie los servidores WebDAV y MCP

cd docker docker-compose up -d

Esto iniciará:

- servidor hacdias/webdav en el puerto 4080 (nombre de usuario: admin, contraseña: admin)

- Servidor MCP en el puerto 3000 (nombre de usuario: user, contraseña: pass)

Esta configuración utiliza hacdias/webdav, un servidor WebDAV simple e independiente escrito en Go. La configuración del servidor WebDAV se almacena en webdav_config.yml, que puedes modificar para ajustar los permisos, añadir usuarios o cambiar otros parámetros.

El servidor WebDAV almacena todos los archivos en un volumen Docker llamado webdav_data, que persiste a través de los reinicios del contenedor.

Configuración del servidor WebDAV

El archivo webdav_config.yml configura el servidor hacdias/webdav utilizado en la configuración de Docker Compose. Esto es lo que puedes personalizar

Dirección y puerto del servidor

dirección: 0.0.0.0 puerto: 6060

Directorio raíz de datos

directorio: /datos

Activar/desactivar CORS

cors: activado: true

Ajustes CORS adicionales...

Permisos por defecto (C=Crear, R=Leer, U=Actualizar, D=Borrar)

permisos: CRUD

Definiciones de usuario

usuarios:

  • nombre de usuario: admin contraseña: admin # Contraseña en texto plano permisos: CRUD # Permisos completos

  • nombre de usuario: reader contraseña: reader permisos: R # Permisos de sólo lectura

También puede utilizar contraseñas cifradas con bcrypt

  • nombre de usuario: secure contraseña: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"

Para opciones de configuración más avanzadas, consulte la documentación sobre hacdias/webdav.

Pruebas de

Para ejecutar las pruebas

npm test

Integración con Claude Desktop

  1. 1. Asegúrese de que la función MCP está habilitada en Claude Desktop usando npx Abre la configuración de Claude Desktop y haz clic en editar configuración (`claude_desktop_config.json`) 3. Añade ```json { "mcpServers": { "webdav": { "command": "npx", "args": [ "-y", "webdav-mcp-server" ], "env": { "WEBDAV_ROOT_URL": "", "WEBDAV_ROOT_PATH": "", "WEBDAV_USERNAME": "", "WEBDAV_PASSWORD": "", "WEBDAV_AUTH_ENABLED": "true|false" } } } } ``` Usando node y local build 2. Clona este repositorio y ejecuta `setup.sh` en mac/linux o `setup.bat` en windows 3. Abre Claude Desktop settings y haz clic en edit config (`claude_desktop_config.json`) 4. Añade ``json { "mcpServers": } } Añade ``json { "mcpServers": { "webdav": { "command": "node", "args": [ "/dist/index.js" ], "env": { "WEBDAV_ROOT_URL": "", "WEBDAV_ROOT_PATH": "", "WEBDAV_USERNAME": "", "WEBDAV_PASSWORD": "", "WEBDAV_AUTH_ENABLED": "true|false" } } } } ```

Recursos MCP disponibles

  • webdav://{ruta}/list - Lista los archivos de un directorio
  • webdav://{ruta}/content - Obtener el contenido de un archivo
  • webdav://{ruta}/info - Obtener información de archivos o directorios

Herramientas MCP disponibles

  • webdav_create_remote_file - Crear un nuevo archivo en un servidor WebDAV remoto
  • webdav_get_remote_file - Recuperar contenido de un archivo almacenado en un servidor WebDAV remoto
  • webdav_update_remote_file - Actualizar un archivo existente en un servidor WebDAV remoto
  • webdav_delete_remote_item - Eliminar un archivo o directorio de un servidor WebDAV remoto
  • webdav_create_remote_directory - Crear un nuevo directorio en un servidor WebDAV remoto
  • webdav_move_remote_item - Mover o renombrar un archivo/directorio en un servidor WebDAV remoto
  • webdav_copy_remote_item - Copia un archivo/directorio a una nueva ubicación en un servidor WebDAV remoto
  • webdav_list_remote_directory - Lista archivos y directorios en un servidor WebDAV remoto

Peticiones MCP disponibles

  • webdav_create_remote_file - Pregunta para crear un nuevo archivo en un servidor WebDAV remoto
  • webdav_get_remote_file - Pregunta para recuperar contenido de un archivo WebDAV remoto
  • webdav_update_remote_file - Pregunta para actualizar un archivo en un servidor WebDAV remoto
  • webdav_delete_remote_item - Pregunta para eliminar un archivo/directorio de un servidor WebDAV remoto
  • webdav_list_remote_directory - Pregunta para listar el contenido de un directorio en un servidor WebDAV remoto
  • webdav_create_remote_directory - Pregunta para crear un directorio en un servidor WebDAV remoto
  • webdav_move_remote_item - Pregunta para mover/renombrar un archivo/directorio en un servidor WebDAV remoto
  • webdav_copy_remote_item - Pregunta para copiar un archivo/directorio en un servidor WebDAV remoto

Ejemplo de consultas en Claude

Aquí hay algunos ejemplos de consultas que puedes usar en Claude Desktop una vez que el servidor WebDAV MCP esté conectado:

  • "Listar archivos en mi servidor WebDAV remoto"
  • "Crear un nuevo archivo de texto llamado notas.txt en mi servidor WebDAV remoto con el siguiente contenido: Hola Mundo"
  • "Obtener el contenido de document.txt de mi servidor WebDAV remoto"
  • "Actualizar config.json en mi servidor WebDAV remoto con esta nueva configuración"
  • "Crear un directorio llamado proyectos en mi servidor WebDAV remoto"
  • "Copiar informe.docx a una ubicación de copia de seguridad en mi servidor WebDAV remoto"
  • "Mover el archivo nombre_antiguo.txt a nombre_nuevo.txt en mi servidor WebDAV remoto"
  • "Eliminar temp.txt de mi servidor WebDAV remoto"

Uso programático

También puedes utilizar este paquete mediante programación en tus propios proyectos:

import { startWebDAVServer } from 'webdav-mcp-server';

// Para transporte stdio sin autenticación await startWebDAVServer({ webdavConfig: { rootUrl:'http://your-webdav-server', rootPath: '/webdav', authEnabled: false }, useHttp: false });

// Para transporte stdio con autenticación WebDAV (la contraseña debe ser texto plano) await startWebDAVServer({ webdavConfig: { rootUrl:'http://your-webdav-server', rootPath: '/webdav', authEnabled: true, username: 'admin', password: 'password' }, useHttp: false });

// Con hash bcrypt para la contraseña del servidor MCP (sólo autenticación HTTP) await startWebDAVServer({ webdavConfig: { rootUrl:'http://your-webdav-server', rootPath: '/webdav', authEnabled: true, username: 'admin', password: 'password' // WebDAV password must be plain text }, useHttp: true, httpConfig: { port: 3000, auth: { enabled: true, username: 'user', password: '{bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy' } });

// Para transporte HTTP con autenticación MCP await startWebDAVServer({ webdavConfig: { rootUrl:'http://your-webdav-server', rootPath: '/webdav', authEnabled: true, username: 'admin', password: 'password' }, useHttp: true, httpConfig: { port: 3000, auth: { enabled: true, username: 'user', password: 'pass', realm: 'MCP WebDAV Server' } } });

// Para transporte HTTP sin autenticación await startWebDAVServer({ webdavConfig: { rootUrl:'http://your-webdav-server', rootPath: '/webdav', authEnabled: false }, useHttp: true, httpConfig: { port: 3000, auth: { enabled: false } });

Licencia

MIT

Relacionados en Almacenamiento en la nube - MCP Servers Seguros

ServidorResumenAcciones
Servidor de copia de seguridad MCPVer
Servidor MCP de AWS S3Servidor MCP para operaciones de AWS S3, que proporciona acceso seguro a los buckets de S3 a través...Ver
Servidor MCP de DropboxUn servidor de Protocolo de Contexto de Modelo (MCP) que proporciona integración con Dropbox, permit...Ver
Servidor OSS MCP中文版 | EspañolVer
Google DriveEste servidor MCP se integra con Google Drive para permitir listar, leer y buscar archivos, así como...Ver
dbx-mcp-serverUn servidor de Protocolo de Contexto de Modelo (MCP) que proporciona integración con Dropbox, permit...Ver