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: Claude MCP Server Integration

先决条件

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

执照

麻省理工学院

Available Tools

8 tools
webdav_copy_remote_itemC

Copy a file or directory to a new location on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
fromPathYes
toPathYes
overwriteNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the copy action but doesn't describe key behaviors: whether it requires specific permissions, how it handles errors (e.g., if source doesn't exist), if it preserves metadata, or what the return value indicates. The 'overwrite' parameter hints at conflict behavior, but the description doesn't explain this. For a mutation tool with zero annotation coverage, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the sentence contributes essential information, achieving optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a remote file operation with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like error handling, permissions, or return values, and parameter semantics are poorly addressed. For a mutation tool in a sibling-rich environment, this leaves significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema provides no parameter documentation. The description mentions 'file or directory' and 'new location' which loosely map to fromPath and toPath, but it doesn't explain path formats, validation rules, or the meaning of 'overwrite' beyond its name. It adds minimal semantic value, failing to compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Copy') and the resource ('a file or directory') with the destination context ('to a new location on a remote WebDAV server'). It distinguishes from siblings like 'move' or 'delete' by specifying the copy operation, though it doesn't explicitly contrast with all siblings. The purpose is specific but could be more differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose copy over move (webdav_move_remote_item) or how it relates to creation tools (webdav_create_remote_file/directory). There's no context about prerequisites, error conditions, or typical use cases, leaving the agent with minimal usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webdav_create_remote_directoryC

Create a new directory on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Create') which implies a write/mutation operation, but doesn't disclose any behavioral traits such as required permissions, whether it's idempotent (e.g., fails if directory exists), what happens on success/failure, or any rate limits. The description is minimal and lacks crucial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the core purpose without any wasted words. It's appropriately sized for a simple tool and front-loads the essential information ('Create a new directory'). Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a write operation with 1 parameter), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects, parameter details, error conditions, or return values. For a mutation tool with zero annotation coverage, this minimal description leaves significant gaps in understanding how to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 0% description coverage, so the description must compensate. It mentions 'path' implicitly through 'directory on a remote WebDAV server', but doesn't explain what the 'path' parameter represents (e.g., absolute vs relative, format expectations like leading slash, or parent directory requirements). This adds minimal semantic value beyond the schema's basic structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('new directory on a remote WebDAV server'), making the purpose immediately understandable. It distinguishes from siblings like 'webdav_create_remote_file' by specifying 'directory' instead of 'file', but doesn't explicitly differentiate from other directory-related tools like 'webdav_list_remote_directory' beyond the action verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like authentication or existing parent directories), when not to use it (e.g., if the directory already exists), or suggest alternatives like 'webdav_move_remote_item' for reorganizing directories. The context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webdav_create_remote_fileC

Create a new file on a remote WebDAV server at the specified path

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes
overwriteNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is to 'create a new file' but doesn't mention authentication requirements, error conditions (e.g., path conflicts), rate limits, or what happens with the 'overwrite' parameter. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded with the main action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a file creation tool with 3 parameters, 0% schema description coverage, no annotations, and no output schema, the description is incomplete. It doesn't address key aspects like authentication needs, error handling, the meaning of parameters, or what the tool returns, leaving significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate for undocumented parameters. It only mentions 'path' and implies file creation, but doesn't explain the 'content' parameter (what type of content, encoding) or 'overwrite' (behavior when true/false). With 3 parameters and no schema descriptions, this adds minimal semantic value beyond the tool name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new file') and resource ('on a remote WebDAV server at the specified path'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from siblings like 'webdav_update_remote_file' or 'webdav_create_remote_directory', which would require mentioning file creation vs. directory creation or updating existing files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'webdav_update_remote_file' for modifying files, 'webdav_create_remote_directory' for creating folders, or other siblings like 'webdav_copy_remote_item'. There's no context about prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webdav_delete_remote_itemC

Delete a file or directory from a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Delete' implies a destructive operation, the description doesn't specify whether deletion is permanent or reversible, what permissions are required, or how errors are handled. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded and appropriately sized for a simple tool, with no wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the destructive nature implied by 'Delete', the lack of annotations, no output schema, and incomplete parameter documentation, the description is insufficient. It doesn't address critical aspects like safety, permissions, or error handling, making it inadequate for a tool that performs irreversible operations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description doesn't mention the 'path' parameter at all, and with 0% schema description coverage, the parameter is undocumented in both the schema and description. However, since there's only one parameter, the baseline is 4, but the lack of any parameter information in the description reduces this to 3, as it adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and resource ('a file or directory from a remote WebDAV server'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from its siblings like 'webdav_move_remote_item' or 'webdav_copy_remote_item' in terms of when deletion is appropriate versus moving or copying.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'webdav_move_remote_item' and 'webdav_copy_remote_item', there's no indication of when deletion is preferred over moving or copying, nor any mention of prerequisites or constraints for safe usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webdav_get_remote_fileC

Retrieve content from a file stored on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action 'retrieve content' but lacks details on permissions, error handling, rate limits, or output format. For a read operation with zero annotation coverage, this is insufficient to inform the agent adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place, achieving optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of remote file retrieval, lack of annotations, no output schema, and minimal parameter guidance, the description is incomplete. It doesn't cover authentication needs, error cases, or return values, leaving significant gaps for the agent to operate effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'path' implicitly but doesn't elaborate beyond what the schema provides (a required string). With 0% schema description coverage, the description adds minimal value—it implies the path is to a file but doesn't specify format or constraints. This meets the baseline for low coverage without fully compensating.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieve' and the resource 'content from a file stored on a remote WebDAV server', making the purpose unambiguous. However, it doesn't explicitly differentiate from siblings like 'webdav_list_remote_directory' (which lists vs. retrieves content) or 'webdav_update_remote_file' (which modifies vs. reads), missing full sibling distinction for a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like reading vs. listing files, prerequisites such as authentication or server access, or exclusions for non-file items. This leaves the agent with minimal context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webdav_list_remote_directoryC

List files and directories at the specified path on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo/

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe how it behaves: no information about pagination, error handling, rate limits, authentication requirements, or what the output looks like. For a read operation on a remote server, this leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a simple listing tool and front-loads the essential information. Every word earns its place in conveying the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (remote server interaction), lack of annotations, and no output schema, the description is incomplete. It doesn't address authentication needs, error conditions, output format, or limitations. For a tool that interacts with external systems, more contextual information would be necessary for an agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'specified path' which maps to the single 'path' parameter in the schema. However, schema description coverage is 0%, so the schema provides no documentation about this parameter. The description adds minimal semantic context (it's a path on the remote server) but doesn't specify format, constraints, or default behavior. This meets the baseline 3 since it compensates somewhat for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('files and directories') with specific scope ('at the specified path on a remote WebDAV server'). It distinguishes from siblings like webdav_get_remote_file (which retrieves file contents) and webdav_delete_remote_item (which removes items). However, it doesn't explicitly contrast with all siblings, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like authentication, nor does it differentiate from potential overlapping functionality with other listing or browsing tools that might exist in a broader context. The agent receives no usage context beyond the basic purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webdav_move_remote_itemC

Move or rename a file or directory on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
fromPathYes
toPathYes
overwriteNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the action (move/rename) but doesn't describe what happens on conflicts (though the 'overwrite' parameter hints at this), whether the operation is atomic, what permissions are required, error conditions, or what the response looks like. For a mutation tool with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and resource. Every word earns its place with no redundancy or fluff, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations, 3 parameters (0% schema coverage), no output schema, and multiple sibling tools, the description is inadequate. It doesn't explain behavioral traits, parameter details, error handling, or differentiation from alternatives, leaving the agent with insufficient context for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implies 'fromPath' and 'toPath' parameters through 'Move or rename a file or directory' but doesn't explain path formats, what 'overwrite' does, or any constraints. The description adds minimal value beyond what's inferable from parameter names, leaving most semantics undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Move or rename') and resource ('a file or directory on a remote WebDAV server'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'webdav_copy_remote_item' (which copies rather than moves) or 'webdav_update_remote_file' (which might modify content rather than location/name).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose move vs. copy (webdav_copy_remote_item), when renaming is appropriate, or any prerequisites like authentication or server connectivity. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webdav_update_remote_fileC

Update an existing file on a remote WebDAV server with new content

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool updates a file with new content, implying a write/mutation operation, but lacks critical details: required permissions (e.g., write access), whether it overwrites or merges content, error handling (e.g., if file doesn't exist), rate limits, or response format. This leaves significant gaps for safe and effective use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Update an existing file') and resource ('on a remote WebDAV server with new content'). There is no wasted verbiage, making it highly concise and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a file update operation with no annotations, 0% schema description coverage, and no output schema, the description is incomplete. It lacks details on permissions, error conditions, content handling, and response expectations, which are essential for a mutation tool in a remote server context. This leaves the agent with insufficient information for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'path' and 'content' implicitly but doesn't explain their semantics: what format 'path' should be (e.g., absolute/relative), what 'content' represents (e.g., text, binary encoding), or constraints (e.g., size limits). The description adds minimal value beyond the schema's structural definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('an existing file on a remote WebDAV server with new content'), making the purpose immediately understandable. It distinguishes itself from siblings like 'webdav_create_remote_file' by specifying 'existing file' and 'update', though it doesn't explicitly contrast with other modification tools like 'webdav_move_remote_item' or 'webdav_copy_remote_item'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., file must exist), exclusions (e.g., not for directories), or comparisons with siblings like 'webdav_move_remote_item' for moving files or 'webdav_create_remote_file' for new files. Usage is implied but not explicitly defined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • First observedwebdav_copy_remote_item
    • First observedwebdav_create_remote_directory
    • First observedwebdav_create_remote_file
    • First observedwebdav_delete_remote_item
    • First observedwebdav_get_remote_file
    • First observedwebdav_list_remote_directory
    • First observedwebdav_move_remote_item
    • First observedwebdav_update_remote_file

TDQS

A3.5/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity. The actions (copy, create, delete, get, list, move, update) are well-defined and target specific operations on files or directories, making it easy for an agent to select the correct tool for any task.

Naming Consistency5/5

All tools follow a consistent 'webdav_verb_remote_noun' pattern using snake_case. This predictable naming convention makes the tool set easy to understand and navigate, with no deviations or mixed styles.

Tool Count5/5

With 8 tools, this server is well-scoped for WebDAV file operations. Each tool earns its place by covering essential CRUD and management functions, providing a comprehensive yet manageable surface for interacting with remote WebDAV servers.

Completeness5/5

The tool set offers complete coverage for WebDAV file and directory management. It includes all core operations: create (file and directory), read (get and list), update (file), delete, copy, and move, with no obvious gaps that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    A Model Context Protocol server that extends AI capabilities by providing file system access and management functionalities to Claude or other AI assistants.
    224 npm
    5
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables Claude Desktop to perform file operations like reading, writing, listing directories, and managing files through natural language commands.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready Model Context Protocol server that provides comprehensive file system management capabilities for seamless integration with Claude Desktop.
    1
    MIT