WebDAV MCP Server

by LaubPlusCo
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Supports configuration through .env files to set WebDAV connection parameters, authentication credentials, and server options.

  • Provides containerized deployment of the MCP server with configurable environment variables for WebDAV connectivity and authentication.

  • Offers programmatic usage within Node.js applications through an importable API for custom MCP server implementations.

Servidor MCP WebDAV

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite operaciones CRUD en un endpoint 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

  • Conéctese a cualquier servidor WebDAV con autenticación opcional
  • Realizar operaciones CRUD en archivos y directorios
  • Exponer operaciones de archivos como recursos y herramientas de MCP
  • Ejecutar a través del transporte stdio (para la integración de Claude Desktop) o el 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 texto sin formato debido a las limitaciones del protocolo)
  • Agrupación de conexiones para un mejor rendimiento con servidores WebDAV
  • Validación de configuración usando Zod
  • Registro estructurado para una mejor resolución de problemas

Prerrequisitos

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

Instalación

Opción 1: Instalar desde el paquete npm

# Global installation npm install -g webdav-mcp-server # Or with npx npx webdav-mcp-server

Opción 2: Clonar y compilar desde la fuente

# Clone repository git clone https://github.com/yourusername/webdav-mcp-server.git cd webdav-mcp-server # Install dependencies npm install # Build the application npm run build

Opción 3: Docker

# Build the Docker image docker build -t webdav-mcp-server . # Run the container without authentication docker run -p 3000:3000 \ -e WEBDAV_ROOT_URL=http://your-webdav-server \ -e WEBDAV_ROOT_PATH=/webdav \ webdav-mcp-server # Run the container with authentication for both WebDAV and MCP server 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=password \ -e AUTH_ENABLED=true \ -e AUTH_USERNAME=user \ -e AUTH_PASSWORD=pass \ webdav-mcp-server

Configuración

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

# WebDAV configuration WEBDAV_ROOT_URL=http://localhost:4080 WEBDAV_ROOT_PATH=/webdav # WebDAV authentication (optional) WEBDAV_AUTH_ENABLED=true WEBDAV_USERNAME=admin # WebDAV password must be plain text (required when auth enabled) # The WebDAV protocol requires sending the actual password to the server WEBDAV_PASSWORD=password # Server configuration (for HTTP mode) SERVER_PORT=3000 # Authentication configuration for MCP server (optional) AUTH_ENABLED=true AUTH_USERNAME=user AUTH_PASSWORD=pass AUTH_REALM=MCP WebDAV Server # Auth password for MCP server can be a bcrypt hash (unlike WebDAV passwords) # AUTH_PASSWORD={bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy

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

Para una mayor seguridad del servidor MCP (no de las conexiones WebDAV), puede utilizar contraseñas cifradas con bcrypt en lugar de almacenarlas en texto sin formato:

  1. Generar un hash bcrypt:
    # Using the built-in utility npm run generate-hash -- yourpassword # Or with npx npx webdav-mcp-generate-hash yourpassword
  2. Agregue 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 su servidor MCP se almacena de forma segura. Tenga en cuenta que, debido a los requisitos del protocolo, las contraseñas WebDAV deben estar siempre en texto plano.

Uso

Ejecutando con el transporte stdio

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

# If installed globally webdav-mcp-server # If using npx npx webdav-mcp-server # If built from source node dist/index.js

Ejecución con transporte HTTP/SSE

Este modo permite acceder al servidor a través de HTTP con eventos enviados por el servidor para comunicación en tiempo real.

# If installed globally webdav-mcp-server --http # If using npx npx webdav-mcp-server --http # If built from source node dist/index.js --http

Inicio rápido con Docker Compose

La forma más sencilla de comenzar con el servidor WebDAV y el servidor MCP es usar Docker Compose:

# Start both WebDAV and MCP servers cd docker docker-compose up -d # This will start: # - hacdias/webdav server on port 4080 (username: admin, password: admin) # - MCP server on port 3000 (username: user, password: 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 puede modificar para ajustar permisos, agregar usuarios o cambiar otras configuraciones.

El servidor WebDAV almacena todos los archivos en un volumen Docker llamado webdav_data , que persiste despué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. Puedes personalizar lo siguiente:

# Server address and port address: 0.0.0.0 port: 6060 # Root data directory directory: /data # Enable/disable CORS cors: enabled: true # Additional CORS settings... # Default permissions (C=Create, R=Read, U=Update, D=Delete) permissions: CRUD # User definitions users: - username: admin password: admin # Plain text password permissions: CRUD # Full permissions - username: reader password: reader permissions: R # Read-only permissions # You can also use bcrypt-encrypted passwords - username: secure password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"

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

Pruebas

Para ejecutar las pruebas:

npm test

Integración con Claude Desktop

  1. Asegúrese de que la función MCP esté habilitada en Claude Desktop

Recursos MCP disponibles

  • webdav://{path}/list - Lista los archivos en un directorio
  • webdav://{path}/content - Obtener el contenido del archivo
  • webdav://{path}/info - Obtener información del archivo o directorio

Herramientas MCP disponibles

  • webdav_create_remote_file : crea un nuevo archivo en un servidor WebDAV remoto
  • webdav_get_remote_file : recupera contenido de un archivo almacenado en un servidor WebDAV remoto
  • webdav_update_remote_file : actualiza un archivo existente en un servidor WebDAV remoto
  • webdav_delete_remote_item : elimina un archivo o directorio de un servidor WebDAV remoto
  • webdav_create_remote_directory : crea un nuevo directorio en un servidor WebDAV remoto
  • webdav_move_remote_item : mueve o renombra 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 : enumera archivos y directorios en un servidor WebDAV remoto

Indicaciones de MCP disponibles

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

Consultas de ejemplo en Claude

A continuación se muestran algunas consultas de ejemplo que puede utilizar en Claude Desktop una vez que el servidor WebDAV MCP esté conectado:

  • "Enumerar archivos en mi servidor WebDAV remoto"
  • "Crear un nuevo archivo de texto llamado notes.txt en mi servidor WebDAV remoto con el siguiente contenido: Hola mundo"
  • Obtener el contenido de document.txt desde 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 el informe.docx a una ubicación de respaldo en mi servidor WebDAV remoto
  • "Mover el archivo old_name.txt a new_name.txt en mi servidor WebDAV remoto"
  • "Eliminar temp.txt de mi servidor WebDAV remoto"

Uso programático

También puedes utilizar este paquete programáticamente en tus propios proyectos:

import { startWebDAVServer } from 'webdav-mcp-server'; // For stdio transport without authentication await startWebDAVServer({ webdavConfig: { rootUrl: 'http://your-webdav-server', rootPath: '/webdav', authEnabled: false }, useHttp: false }); // For stdio transport with WebDAV authentication (password must be plain text) await startWebDAVServer({ webdavConfig: { rootUrl: 'http://your-webdav-server', rootPath: '/webdav', authEnabled: true, username: 'admin', password: 'password' }, useHttp: false }); // With bcrypt hash for MCP server password (HTTP auth only) 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' } } }); // For HTTP transport with MCP authentication 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' } } }); // For HTTP transport without authentication await startWebDAVServer({ webdavConfig: { rootUrl: 'http://your-webdav-server', rootPath: '/webdav', authEnabled: false }, useHttp: true, httpConfig: { port: 3000, auth: { enabled: false } } });

Licencia

Instituto Tecnológico de Massachusetts (MIT)

ID: qoepn05pn9