Skip to main content
Glama
LaubPlusCo

WebDAV MCP Server

by LaubPlusCo

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

Related MCP server: MCP Tools

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)

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/LaubPlusCo/mcp-webdav-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server