WebDAV MCP Server
Servidor MCP WebDAV
Un servidor de Protocolo de Contexto de Modelo (MCP) que permite operaciones CRUD en un endpoint WebDAV con autenticación básica. Este servidor permite a Claude Desktop y a otros clientes MCP interactuar con sistemas de archivos WebDAV mediante comandos de lenguaje natural.
Características
Conéctese a cualquier servidor WebDAV con autenticación opcional
Realizar operaciones CRUD en archivos y directorios
Exponer operaciones de archivos como recursos y herramientas de MCP
Ejecutar a través del transporte stdio (para la integración de Claude Desktop) o el transporte HTTP/SSE
Acceso seguro con autenticación básica opcional
Compatibilidad con contraseñas cifradas con bcrypt para la autenticación del servidor MCP (las contraseñas WebDAV deben ser texto sin formato debido a las limitaciones del protocolo)
Agrupación de conexiones para un mejor rendimiento con servidores WebDAV
Validación de configuración usando Zod
Registro estructurado para una mejor resolución de problemas
Related MCP server: Claude MCP Server Integration
Prerrequisitos
Node.js 18 o posterior
npm o hilo
Servidor WebDAV (para operaciones de archivos reales)
Instalación
Opción 1: Instalar desde el paquete npm
# Global installation
npm install -g webdav-mcp-server
# Or with npx
npx webdav-mcp-serverOpción 2: Clonar y compilar desde la fuente
# Clone repository
git clone https://github.com/yourusername/webdav-mcp-server.git
cd webdav-mcp-server
# Install dependencies
npm install
# Build the application
npm run buildOpción 3: Docker
# Build the Docker image
docker build -t webdav-mcp-server .
# Run the container without authentication
docker run -p 3000:3000 \
-e WEBDAV_ROOT_URL=http://your-webdav-server \
-e WEBDAV_ROOT_PATH=/webdav \
webdav-mcp-server
# Run the container with authentication for both WebDAV and MCP server
docker run -p 3000:3000 \
-e WEBDAV_ROOT_URL=http://your-webdav-server \
-e WEBDAV_ROOT_PATH=/webdav \
-e WEBDAV_AUTH_ENABLED=true \
-e WEBDAV_USERNAME=admin \
-e WEBDAV_PASSWORD=password \
-e AUTH_ENABLED=true \
-e AUTH_USERNAME=user \
-e AUTH_PASSWORD=pass \
webdav-mcp-serverConfiguración
Cree un archivo .env en el directorio raíz con las siguientes variables:
# WebDAV configuration
WEBDAV_ROOT_URL=http://localhost:4080
WEBDAV_ROOT_PATH=/webdav
# WebDAV authentication (optional)
WEBDAV_AUTH_ENABLED=true
WEBDAV_USERNAME=admin
# WebDAV password must be plain text (required when auth enabled)
# The WebDAV protocol requires sending the actual password to the server
WEBDAV_PASSWORD=password
# Server configuration (for HTTP mode)
SERVER_PORT=3000
# Authentication configuration for MCP server (optional)
AUTH_ENABLED=true
AUTH_USERNAME=user
AUTH_PASSWORD=pass
AUTH_REALM=MCP WebDAV Server
# Auth password for MCP server can be a bcrypt hash (unlike WebDAV passwords)
# AUTH_PASSWORD={bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJByContraseñas cifradas para la autenticación del servidor MCP
Para una mayor seguridad del servidor MCP (no de las conexiones WebDAV), puede utilizar contraseñas cifradas con bcrypt en lugar de almacenarlas en texto sin formato:
Generar un hash bcrypt:
# Using the built-in utility npm run generate-hash -- yourpassword # Or with npx npx webdav-mcp-generate-hash yourpasswordAgregue el hash a su archivo .env con el prefijo {bcrypt}:
AUTH_PASSWORD={bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy
De esta forma, la contraseña de su servidor MCP se almacena de forma segura. Tenga en cuenta que, debido a los requisitos del protocolo, las contraseñas WebDAV deben estar siempre en texto plano.
Uso
Ejecutando con el transporte stdio
Este modo es ideal para la integración directa con Claude Desktop.
# If installed globally
webdav-mcp-server
# If using npx
npx webdav-mcp-server
# If built from source
node dist/index.jsEjecución con transporte HTTP/SSE
Este modo permite acceder al servidor a través de HTTP con eventos enviados por el servidor para comunicación en tiempo real.
# If installed globally
webdav-mcp-server --http
# If using npx
npx webdav-mcp-server --http
# If built from source
node dist/index.js --httpInicio rápido con Docker Compose
La forma más sencilla de comenzar con el servidor WebDAV y el servidor MCP es usar Docker Compose:
# Start both WebDAV and MCP servers
cd docker
docker-compose up -d
# This will start:
# - hacdias/webdav server on port 4080 (username: admin, password: admin)
# - MCP server on port 3000 (username: user, password: pass)Esta configuración utiliza hacdias/webdav , un servidor WebDAV simple e independiente escrito en Go. La configuración del servidor WebDAV se almacena en webdav_config.yml , que puede modificar para ajustar permisos, agregar usuarios o cambiar otras configuraciones.
El servidor WebDAV almacena todos los archivos en un volumen Docker llamado webdav_data , que persiste después de los reinicios del contenedor.
Configuración del servidor WebDAV
El archivo webdav_config.yml configura el servidor hacdias/webdav utilizado en la configuración de Docker Compose. Puedes personalizar lo siguiente:
# Server address and port
address: 0.0.0.0
port: 6060
# Root data directory
directory: /data
# Enable/disable CORS
cors:
enabled: true
# Additional CORS settings...
# Default permissions (C=Create, R=Read, U=Update, D=Delete)
permissions: CRUD
# User definitions
users:
- username: admin
password: admin # Plain text password
permissions: CRUD # Full permissions
- username: reader
password: reader
permissions: R # Read-only permissions
# You can also use bcrypt-encrypted passwords
- username: secure
password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"Para obtener opciones de configuración más avanzadas, consulte la documentación de hacdias/webdav .
Pruebas
Para ejecutar las pruebas:
npm testIntegración con Claude Desktop
Asegúrese de que la función MCP esté habilitada en Claude Desktop
Recursos MCP disponibles
webdav://{path}/list- Lista los archivos en un directoriowebdav://{path}/content- Obtener el contenido del archivowebdav://{path}/info- Obtener información del archivo o directorio
Herramientas MCP disponibles
webdav_create_remote_file: crea un nuevo archivo en un servidor WebDAV remotowebdav_get_remote_file: recupera contenido de un archivo almacenado en un servidor WebDAV remotowebdav_update_remote_file: actualiza un archivo existente en un servidor WebDAV remotowebdav_delete_remote_item: elimina un archivo o directorio de un servidor WebDAV remotowebdav_create_remote_directory: crea un nuevo directorio en un servidor WebDAV remotowebdav_move_remote_item: mueve o renombra un archivo/directorio en un servidor WebDAV remotowebdav_copy_remote_item: copia un archivo/directorio a una nueva ubicación en un servidor WebDAV remotowebdav_list_remote_directory: enumera archivos y directorios en un servidor WebDAV remoto
Indicaciones de MCP disponibles
webdav_create_remote_file: solicitud para crear un nuevo archivo en un servidor WebDAV remotowebdav_get_remote_file: solicitud para recuperar contenido de un archivo WebDAV remotowebdav_update_remote_file: solicitud para actualizar un archivo en un servidor WebDAV remotowebdav_delete_remote_item: solicitud para eliminar un archivo o directorio de un servidor WebDAV remotowebdav_list_remote_directory: solicitud para listar el contenido del directorio en un servidor WebDAV remotowebdav_create_remote_directory: solicitud para crear un directorio en un servidor WebDAV remotowebdav_move_remote_item: solicitud para mover o renombrar un archivo o directorio en un servidor WebDAV remotowebdav_copy_remote_item: solicitud para copiar un archivo o directorio en un servidor WebDAV remoto
Consultas de ejemplo en Claude
A continuación se muestran algunas consultas de ejemplo que puede utilizar en Claude Desktop una vez que el servidor WebDAV MCP esté conectado:
"Enumerar archivos en mi servidor WebDAV remoto"
"Crear un nuevo archivo de texto llamado notes.txt en mi servidor WebDAV remoto con el siguiente contenido: Hola mundo"
Obtener el contenido de document.txt desde mi servidor WebDAV remoto
"Actualizar config.json en mi servidor WebDAV remoto con esta nueva configuración"
"Crear un directorio llamado proyectos en mi servidor WebDAV remoto"
Copiar el informe.docx a una ubicación de respaldo en mi servidor WebDAV remoto
"Mover el archivo old_name.txt a new_name.txt en mi servidor WebDAV remoto"
"Eliminar temp.txt de mi servidor WebDAV remoto"
Uso programático
También puedes utilizar este paquete programáticamente en tus propios proyectos:
import { startWebDAVServer } from 'webdav-mcp-server';
// For stdio transport without authentication
await startWebDAVServer({
webdavConfig: {
rootUrl: 'http://your-webdav-server',
rootPath: '/webdav',
authEnabled: false
},
useHttp: false
});
// For stdio transport with WebDAV authentication (password must be plain text)
await startWebDAVServer({
webdavConfig: {
rootUrl: 'http://your-webdav-server',
rootPath: '/webdav',
authEnabled: true,
username: 'admin',
password: 'password'
},
useHttp: false
});
// With bcrypt hash for MCP server password (HTTP auth only)
await startWebDAVServer({
webdavConfig: {
rootUrl: 'http://your-webdav-server',
rootPath: '/webdav',
authEnabled: true,
username: 'admin',
password: 'password' // WebDAV password must be plain text
},
useHttp: true,
httpConfig: {
port: 3000,
auth: {
enabled: true,
username: 'user',
password: '{bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy'
}
}
});
// For HTTP transport with MCP authentication
await startWebDAVServer({
webdavConfig: {
rootUrl: 'http://your-webdav-server',
rootPath: '/webdav',
authEnabled: true,
username: 'admin',
password: 'password'
},
useHttp: true,
httpConfig: {
port: 3000,
auth: {
enabled: true,
username: 'user',
password: 'pass',
realm: 'MCP WebDAV Server'
}
}
});
// For HTTP transport without authentication
await startWebDAVServer({
webdavConfig: {
rootUrl: 'http://your-webdav-server',
rootPath: '/webdav',
authEnabled: false
},
useHttp: true,
httpConfig: {
port: 3000,
auth: {
enabled: false
}
}
});Licencia
Instituto Tecnológico de Massachusetts (MIT)
Available Tools
8 toolswebdav_copy_remote_itemC
Copy a file or directory to a new location on a remote WebDAV server
| Name | Required | Description | Default |
|---|---|---|---|
| fromPath | Yes | ||
| toPath | Yes | ||
| overwrite | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes | ||
| overwrite | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | / |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| fromPath | Yes | ||
| toPath | Yes | ||
| overwrite | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes |
TDQS
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.
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.
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.
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.
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.
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.
8 tool updates
- First observed
webdav_copy_remote_item - First observed
webdav_create_remote_directory - First observed
webdav_create_remote_file - First observed
webdav_delete_remote_item - First observed
webdav_get_remote_file - First observed
webdav_list_remote_directory - First observed
webdav_move_remote_item - First observed
webdav_update_remote_file
TDQS
Scored across 8 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that extends AI capabilities by providing file system access and management functionalities to Claude or other AI assistants.224 npm5-
- FlicenseNot gradedqualityDmaintenanceIntegration project for Model Context Protocol (MCP) servers with Claude Desktop App, enabling filesystem operations, development support, and file management through natural language.-
- AlicenseNot gradedqualityDmaintenanceA 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
- AlicenseNot gradedqualityDmaintenanceA production-ready Model Context Protocol server that provides comprehensive file system management capabilities for seamless integration with Claude Desktop.1MIT