Serveur WebDAV MCP - MCP Server sécurisé par ALMC Security 2025

Serveur WebDAV MCP

Voir sur GitHub

Serveur WebDAV MCP

Un serveur MCP (Model Context Protocol) qui permet des opérations CRUD sur un point de terminaison WebDAV avec une authentification de base. Ce serveur permet à Claude Desktop et à d'autres clients MCP d'interagir avec les systèmes de fichiers WebDAV par le biais de commandes en langage naturel.

Caractéristiques

  • Connexion à n'importe quel serveur WebDAV avec authentification optionnelle
  • Effectuer des opérations CRUD sur les fichiers et les répertoires
  • Expose les opérations sur les fichiers en tant que ressources et outils MCP
  • Exécution via le transport stdio (pour l'intégration de Claude Desktop) ou le transport HTTP/SSE
  • Accès sécurisé avec authentification de base optionnelle
  • Prise en charge des mots de passe cryptés bcrypt pour l'authentification du serveur MCP (les mots de passe WebDAV doivent être en texte clair en raison des limitations du protocole)
  • Mise en commun des connexions pour de meilleures performances avec les serveurs WebDAV
  • Validation de la configuration à l'aide de Zod
  • Journalisation structurée pour un meilleur dépannage

Conditions préalables

  • Node.js 18 ou plus récent
  • npm ou yarn
  • Serveur WebDAV (pour les opérations de fichiers)

Installation de la solution

Option 1 : Installation à partir du paquet npm

Installation globale

npm install -g webdav-mcp-server

Ou avec npx

npx webdav-mcp-server

Option 2 : Cloner et construire à partir des sources

Cloner le dépôt

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

Installer les dépendances

npm install

Construire l'application

npm run build

Option 3 : Docker

Construire l'image Docker

docker build -t webdav-mcp-server .

Exécuter le conteneur sans authentification

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

Exécutez le conteneur avec authentification pour les serveurs WebDAV et 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 MOT DE PASSE WEBDAV=mot de passe
-e AUTH_ENABLED=true
-e AUTH_USERNAME=utilisateur
-e AUTH_PASSWORD=pass
webdav-mcp-server

Configuration

Créez un fichier .env dans le répertoire racine avec les variables suivantes :

Configuration WebDAV

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

Authentification WebDAV (optionnelle)

WEBDAV_AUTH_ENABLED=true WEBDAV_USERNAME=admin

Le mot de passe WebDAV doit être en texte clair (obligatoire lorsque l'authentification est activée)

Le protocole WebDAV exige l'envoi du mot de passe au serveur

WEBDAV_PASSWORD=mot de passe

Configuration du serveur (pour le mode HTTP)

SERVER_PORT=3000

Configuration de l'authentification pour le serveur MCP (optionnel)

AUTH_ENABLED=true AUTH_USERNAME=user AUTH_PASSWORD=pass AUTH_REALM=MCP WebDAV Server

Le mot de passe d'authentification pour le serveur MCP peut être un hachage bcrypt (contrairement aux mots de passe WebDAV)

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

Mots de passe cryptés pour l'authentification du serveur MCP

Pour renforcer la sécurité du serveur MCP (pas des connexions WebDAV), vous pouvez utiliser des mots de passe cryptés par bcrypt au lieu de les stocker en texte clair :

  1. Générer un hachage bcrypt :

En utilisant l'utilitaire intégré

npm run generate-hash -- votre mot de passe

Ou avec npx

npx webdav-mcp-generate-hash yourpassword 2. Ajoutez le hash à votre fichier .env avec le préfixe {bcrypt} :

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

De cette manière, le mot de passe de votre serveur MCP est stocké en toute sécurité. Notez que les mots de passe WebDAV doivent toujours être en texte clair en raison des exigences du protocole.

Utilisation

Exécution avec le transport stdio

Ce mode est idéal pour une intégration directe avec Claude Desktop.

S'il est installé globalement

webdav-mcp-server

Si vous utilisez npx

npx webdav-mcp-server

Si construit à partir des sources

node dist/index.js

Exécution avec transport HTTP/SSE

Ce mode permet d'accéder au serveur via HTTP avec des événements envoyés par le serveur pour une communication en temps réel.

S'il est installé globalement

webdav-mcp-server --http

Si vous utilisez npx

npx webdav-mcp-server --http

Si construit à partir des sources

node dist/index.js --http

Démarrage rapide avec Docker Compose

La façon la plus simple de démarrer avec le serveur WebDAV et le serveur MCP est d'utiliser Docker Compose :

Démarrez les serveurs WebDAV et MCP

cd docker docker-compose up -d

Cela démarrera :

- le serveur hacdias/webdav sur le port 4080 (nom d'utilisateur : admin, mot de passe : admin)

- Serveur MCP sur le port 3000 (nom d'utilisateur : user, mot de passe : pass)

Cette configuration utilise hacdias/webdav, un serveur WebDAV simple et autonome écrit en Go. La configuration du serveur WebDAV est stockée dans le fichier webdav_config.yml, que vous pouvez modifier pour ajuster les autorisations, ajouter des utilisateurs ou changer d'autres paramètres.

Le serveur WebDAV stocke tous les fichiers dans un volume Docker appelé webdav_data, qui persiste à travers les redémarrages de conteneurs.

Configuration du serveur WebDAV

Le fichier webdav_config.yml configure le serveur hacdias/webdav utilisé dans l'installation de Docker Compose. Voici ce que vous pouvez personnaliser :

Adresse et port du serveur

adresse : 0.0.0.0 port : 6060

Répertoire de données racine

répertoire : /data

Activer/désactiver CORS

cors : enabled : true

Paramètres CORS supplémentaires...

Permissions par défaut (C=Create, R=Read, U=Update, D=Delete)

permissions : CRUD

Définitions des utilisateurs

utilisateurs :

  • nom d'utilisateur : admin mot de passe : admin # mot de passe en texte clair permissions : CRUD # Permissions complètes

  • username : reader password : reader permissions : R # Permissions de lecture seule

Vous pouvez également utiliser des mots de passe cryptés par bcrypt

  • nom d'utilisateur : mot de passe sécurisé : "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"

Pour des options de configuration plus avancées, reportez-vous à la documentation hacdias/webdav.

Tests

Pour lancer les tests :

npm test

Intégration avec Claude Desktop

  1. Assurez-vous que la fonction MCP est activée dans Claude Desktop en utilisant npx 2. Ouvrir les paramètres de Claude Desktop et cliquer sur edit config (`claude_desktop_config.json`) 3. Ajouter ``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" } } } } ``` Utilisation de node et d'un build local 2. Clonez ce dépôt et lancez `setup.sh` sur mac/linux ou `setup.bat` sur windows 3. Ouvrez Claude Desktop settings et cliquez sur edit config (`claude_desktop_config.json`) 4. Ajoutez ``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" } } } } ```

Ressources MCP disponibles

  • webdav://{chemin}/list - Liste les fichiers d'un répertoire
  • webdav://{chemin}/content - Obtenir le contenu d'un fichier
  • webdav://{chemin}/info - Obtenir des informations sur un fichier ou un répertoire

Outils MCP disponibles

  • webdav_create_remote_file - Créer un nouveau fichier sur un serveur WebDAV distant
  • webdav_get_remote_file - Récupérer le contenu d'un fichier stocké sur un serveur WebDAV distant
  • webdav_update_remote_file - Mettre à jour un fichier existant sur un serveur WebDAV distant
  • webdav_delete_remote_item - Supprime un fichier ou un répertoire d'un serveur WebDAV distant
  • webdav_create_remote_directory - Créer un nouveau répertoire sur un serveur WebDAV distant
  • webdav_move_remote_item - Déplacer ou renommer un fichier/répertoire sur un serveur WebDAV distant
  • webdav_copy_remote_item - Copie un fichier/répertoire à un nouvel emplacement sur un serveur WebDAV distant
  • webdav_list_remote_directory - Liste les fichiers et les répertoires sur un serveur WebDAV distant

Invites MCP disponibles

  • webdav_create_remote_file - Invite à créer un nouveau fichier sur un serveur WebDAV distant
  • webdav_get_remote_file - Invite à récupérer le contenu d'un fichier WebDAV distant
  • webdav_update_remote_file - Invite à mettre à jour un fichier sur un serveur WebDAV distant
  • webdav_delete_remote_item - Invite à supprimer un fichier/répertoire d'un serveur WebDAV distant
  • webdav_list_remote_directory - Invite à lister le contenu d'un répertoire sur un serveur WebDAV distant
  • webdav_create_remote_directory - Invite à créer un répertoire sur un serveur WebDAV distant
  • webdav_move_remote_item - Invite à déplacer/renommer un fichier/répertoire sur un serveur WebDAV distant
  • webdav_copy_remote_item - Invite à copier un fichier/répertoire sur un serveur WebDAV distant

Exemples de requêtes dans Claude

Voici quelques exemples de requêtes que vous pouvez utiliser dans Claude Desktop une fois que le serveur WebDAV MCP est connecté :

  • "Liste des fichiers sur mon serveur WebDAV distant"
  • "Créer un nouveau fichier texte appelé notes.txt sur mon serveur WebDAV distant avec le contenu suivant : Hello World"
  • "Récupérer le contenu de document.txt sur mon serveur WebDAV distant"
  • "Mettre à jour config.json sur mon serveur WebDAV distant avec cette nouvelle configuration"
  • "Créer un répertoire appelé projects sur mon serveur WebDAV distant"
  • "Copier le fichier report.docx dans un emplacement de sauvegarde sur mon serveur WebDAV distant
  • "Déplacer le fichier old_name.txt vers new_name.txt sur mon serveur WebDAV distant"
  • "Supprimer le fichier temp.txt de mon serveur WebDAV distant"

Utilisation programmatique

Vous pouvez également utiliser ce paquetage de manière programmatique dans vos propres projets :

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

// Pour le transport stdio sans authentification await startWebDAVServer({ webdavConfig : { rootUrl :'http://your-webdav-server', rootPath : '/webdav', authEnabled : false }, useHttp : false }) ;

// Pour le transport stdio avec authentification WebDAV (le mot de passe doit être en texte clair) await startWebDAVServer({ webdavConfig : { rootUrl :'http://your-webdav-server', rootPath : '/webdav', authEnabled : true, username : 'admin', password : 'password' }, useHttp : false }) ;

// Avec un hachage bcrypt pour le mot de passe du serveur MCP (authentification HTTP uniquement) await startWebDAVServer({ webdavConfig : { rootUrl :'http://your-webdav-server', rootPath : '/webdav', authEnabled : true, username : 'admin', password : 'password' // Le mot de passe WebDAV doit être en texte clair }, useHttp : true, httpConfig : { port : 3000, auth : { enabled : true, username : 'user', password : '{bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy' } }) ;

// Pour le transport HTTP avec authentification 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' } }) ;

// Pour le transport HTTP sans authentification await startWebDAVServer({ webdavConfig : { rootUrl :'http://your-webdav-server', rootPath : '/webdav', authEnabled : false }, useHttp : true, httpConfig : { port : 3000, auth : { enabled : false } }) ;

Licence

MIT

Liés dans Stockage en nuage - MCP Servers sécurisés

ServeurRésuméActions
dbx-mcp-serverUn serveur Model Context Protocol (MCP) qui s'intègre à Dropbox, permettant aux clients compatibles...Voir
DropBinAucune documentation n'est disponible.Voir
Serveur MCP DropboxUn serveur Model Context Protocol (MCP) qui s'intègre à Dropbox, permettant aux clients compatibles...Voir
Apache OpenDAL™Une mise en œuvre du serveur Model Context Protocol (MCP) qui fournit un accès à divers services de...Voir
MinIOCe projet met en œuvre un serveur et un client Model-Context Protocol (MCP) pour le stockage d'objet...Voir
Google DriveCe serveur MCP s'intègre à Google Drive pour permettre de lister, lire et rechercher des fichiers, a...Voir