Skip to main content
Glama
LaubPlusCo

WebDAV MCP Server

by LaubPlusCo

WebDAV MCP Server

A Model Context Protocol (MCP) server that enables CRUD operations on a WebDAV endpoint with basic authentication. This server enables Claude Desktop and other MCP clients to interact with WebDAV file systems through natural language commands.

Features

  • Connect to any WebDAV server with optional authentication

  • Perform CRUD operations on files and directories

  • Expose file operations as MCP resources and tools

  • Run via stdio transport (for Claude Desktop integration) or HTTP/SSE transport

  • Secure access with optional basic authentication

  • Support for bcrypt-encrypted passwords for MCP server authentication (WebDAV passwords must be plain text due to protocol limitations)

  • Connection pooling for better performance with WebDAV servers

  • Configuration validation using Zod

  • Structured logging for better troubleshooting

Related MCP server: Claude MCP Server Integration

Prerequisites

  • Node.js 18 or later

  • npm or yarn

  • WebDAV server (for actual file operations)

Installation

Option 1: Install from npm package

# Global installation
npm install -g webdav-mcp-server

# Or with npx
npx webdav-mcp-server

Option 2: Clone and build from source

# 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

Option 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

Configuration

Create a .env file in the root directory with the following 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

Encrypted Passwords for MCP Server Authentication

For enhanced security of the MCP server (not WebDAV connections), you can use bcrypt-encrypted passwords instead of storing them in plain text:

  1. Generate a bcrypt hash:

    # Using the built-in utility
    npm run generate-hash -- yourpassword
    
    # Or with npx
    npx webdav-mcp-generate-hash yourpassword
  2. Add the hash to your .env file with the {bcrypt} prefix:

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

This way, your MCP server password is stored securely. Note that WebDAV passwords must always be in plain text due to protocol requirements.

Usage

Running with stdio transport

This mode is ideal for direct integration with Claude Desktop.

# If installed globally
webdav-mcp-server

# If using npx
npx webdav-mcp-server

# If built from source
node dist/index.js

Running with HTTP/SSE transport

This mode enables the server to be accessed over HTTP with Server-Sent Events for real-time communication.

# If installed globally
webdav-mcp-server --http

# If using npx
npx webdav-mcp-server --http

# If built from source
node dist/index.js --http

Quick Start with Docker Compose

The easiest way to get started with both the WebDAV server and the MCP server is to use 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)

This setup uses hacdias/webdav, a simple and standalone WebDAV server written in Go. The configuration for the WebDAV server is stored in webdav_config.yml, which you can modify to adjust permissions, add users, or change other settings.

The WebDAV server stores all files in a Docker volume called webdav_data, which persists across container restarts.

WebDAV Server Configuration

The webdav_config.yml file configures the hacdias/webdav server used in the Docker Compose setup. Here's what you can customize:

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

For more advanced configuration options, refer to the hacdias/webdav documentation.

Testing

To run the tests:

npm test

Integrating with Claude Desktop

  1. Ensure the MCP feature is enabled in Claude Desktop

Available MCP Resources

  • webdav://{path}/list - List files in a directory

  • webdav://{path}/content - Get file content

  • webdav://{path}/info - Get file or directory information

Available MCP Tools

  • webdav_create_remote_file - Create a new file on a remote WebDAV server

  • webdav_get_remote_file - Retrieve content from a file stored on a remote WebDAV server

  • webdav_update_remote_file - Update an existing file on a remote WebDAV server

  • webdav_delete_remote_item - Delete a file or directory from a remote WebDAV server

  • webdav_create_remote_directory - Create a new directory on a remote WebDAV server

  • webdav_move_remote_item - Move or rename a file/directory on a remote WebDAV server

  • webdav_copy_remote_item - Copy a file/directory to a new location on a remote WebDAV server

  • webdav_list_remote_directory - List files and directories on a remote WebDAV server

Available MCP Prompts

  • webdav_create_remote_file - Prompt to create a new file on a remote WebDAV server

  • webdav_get_remote_file - Prompt to retrieve content from a remote WebDAV file

  • webdav_update_remote_file - Prompt to update a file on a remote WebDAV server

  • webdav_delete_remote_item - Prompt to delete a file/directory from a remote WebDAV server

  • webdav_list_remote_directory - Prompt to list directory contents on a remote WebDAV server

  • webdav_create_remote_directory - Prompt to create a directory on a remote WebDAV server

  • webdav_move_remote_item - Prompt to move/rename a file/directory on a remote WebDAV server

  • webdav_copy_remote_item - Prompt to copy a file/directory on a remote WebDAV server

Example Queries in Claude

Here are some example queries you can use in Claude Desktop once the WebDAV MCP server is connected:

  • "List files on my remote WebDAV server"

  • "Create a new text file called notes.txt on my remote WebDAV server with the following content: Hello World"

  • "Get the content of document.txt from my remote WebDAV server"

  • "Update config.json on my remote WebDAV server with this new configuration"

  • "Create a directory called projects on my remote WebDAV server"

  • "Copy report.docx to a backup location on my remote WebDAV server"

  • "Move the file old_name.txt to new_name.txt on my remote WebDAV server"

  • "Delete temp.txt from my remote WebDAV server"

Programmatic Usage

You can also use this package programmatically in your own projects:

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

License

MIT

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. Dates show when Glama detected each change.

  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
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
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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.
    242
    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

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