Skip to main content
Glama
LaubPlusCo

WebDAV MCP Server

by LaubPlusCo

WebDAV MCP 服务器

一个模型上下文协议 (MCP) 服务器,支持在 WebDAV 端点上进行 CRUD 操作,并支持基本身份验证。该服务器允许 Claude Desktop 和其他 MCP 客户端通过自然语言命令与 WebDAV 文件系统进行交互。

特征

  • 使用可选身份验证连接到任何 WebDAV 服务器

  • 对文件和目录执行 CRUD 操作

  • 将文件操作公开为 MCP 资源和工具

  • 通过 stdio 传输(用于 Claude Desktop 集成)或 HTTP/SSE 传输运行

  • 通过可选的基本身份验证实现安全访问

  • 支持 MCP 服务器身份验证的 bcrypt 加密密码(由于协议限制,WebDAV 密码必须是纯文本)

  • 连接池可提高 WebDAV 服务器的性能

  • 使用 Zod 进行配置验证

  • 结构化日志,以便更好地排除故障

Related MCP server: MCP Tools

先决条件

  • Node.js 18 或更高版本

  • npm 或 yarn

  • WebDAV 服务器(用于实际文件操作)

安装

选项 1:从 npm 包安装

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

选项 2:从源代码克隆并构建

# 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

选项 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

配置

在根目录中创建一个.env文件,其中包含以下变量:

# 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

MCP 服务器身份验证的加密密码

为了增强 MCP 服务器(而非 WebDAV 连接)的安全性,您可以使用 bcrypt 加密的密码,而不是以纯文本形式存储它们:

  1. 生成 bcrypt 哈希:

    # Using the built-in utility npm run generate-hash -- yourpassword # Or with npx npx webdav-mcp-generate-hash yourpassword
  2. 使用 {bcrypt} 前缀将哈希添加到您的 .env 文件中:

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

这样,您的 MCP 服务器密码就能被安全存储。请注意,由于协议要求,WebDAV 密码必须始终以纯文本形式保存。

用法

使用 stdio 传输运行

此模式非常适合与 Claude Desktop 直接集成。

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

使用 HTTP/SSE 传输运行

此模式允许通过 HTTP 访问服务器,并使用服务器发送事件进行实时通信。

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

Docker Compose 快速入门

开始使用 WebDAV 服务器和 MCP 服务器的最简单方法是使用 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)

此设置使用hacdias/webdav ,这是一个用 Go 编写的简单独立的 WebDAV 服务器。WebDAV 服务器的配置存储在webdav_config.yml中,您可以修改该文件以调整权限、添加用户或更改其他设置。

WebDAV 服务器将所有文件存储在名为webdav_data的 Docker 卷中,该卷在容器重启后仍然存在。

WebDAV 服务器配置

webdav_config.yml文件用于配置 Docker Compose 设置中使用的 hacdias/webdav 服务器。您可以自定义以下内容:

# 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"

有关更多高级配置选项,请参阅hacdias/webdav 文档

测试

运行测试:

npm test

与 Claude Desktop 集成

  1. 确保 Claude Desktop 中启用了 MCP 功能

可用的 MCP 资源

  • webdav://{path}/list列出目录中的文件

  • webdav://{path}/content获取文件内容

  • webdav://{path}/info获取文件或目录信息

可用的 MCP 工具

  • webdav_create_remote_file - 在远程 WebDAV 服务器上创建新文件

  • webdav_get_remote_file - 从存储在远程 WebDAV 服务器上的文件中检索内容

  • webdav_update_remote_file - 更新远程 WebDAV 服务器上的现有文件

  • webdav_delete_remote_item - 从远程 WebDAV 服务器删除文件或目录

  • webdav_create_remote_directory - 在远程 WebDAV 服务器上创建新目录

  • webdav_move_remote_item - 移动或重命名远程 WebDAV 服务器上的文件/目录

  • webdav_copy_remote_item - 将文件/目录复制到远程 WebDAV 服务器上的新位置

  • webdav_list_remote_directory - 列出远程 WebDAV 服务器上的文件和目录

可用的 MCP 提示

  • webdav_create_remote_file - 提示在远程 WebDAV 服务器上创建新文件

  • webdav_get_remote_file - 提示从远程 WebDAV 文件检索内容

  • webdav_update_remote_file - 提示更新远程 WebDAV 服务器上的文件

  • webdav_delete_remote_item - 提示从远程 WebDAV 服务器删除文件/目录

  • webdav_list_remote_directory - 提示列出远程 WebDAV 服务器上的目录内容

  • webdav_create_remote_directory - 提示在远程 WebDAV 服务器上创建目录

  • webdav_move_remote_item - 提示移动/重命名远程 WebDAV 服务器上的文件/目录

  • webdav_copy_remote_item - 提示复制远程 WebDAV 服务器上的文件/目录

Claude 中的示例查询

以下是连接 WebDAV MCP 服务器后您可以在 Claude Desktop 中使用的一些示例查询:

  • “列出我的远程 WebDAV 服务器上的文件”

  • “在我的远程 WebDAV 服务器上创建一个名为 notes.txt 的新文本文件,内容如下:Hello World”

  • “从我的远程 WebDAV 服务器获取 document.txt 的内容”

  • “使用此新配置更新远程 WebDAV 服务器上的 config.json”

  • “在我的远程 WebDAV 服务器上创建一个名为 projects 的目录”

  • “将 report.docx 复制到我的远程 WebDAV 服务器上的备份位置”

  • “将远程 WebDAV 服务器上的文件 old_name.txt 移动到 new_name.txt”

  • “从我的远程 WebDAV 服务器中删除 temp.txt”

程序化使用

您还可以在自己的项目中以编程方式使用此包:

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 } } });

执照

麻省理工学院

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