Skip to main content
Glama
LaubPlusCo

WebDAV MCP Server

by LaubPlusCo

WebDAV MCP 서버

기본 인증을 통해 WebDAV 엔드포인트에서 CRUD 작업을 수행할 수 있는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버를 통해 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 패키지에서 설치

지엑스피1

옵션 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)

이 설정은 Go로 작성된 간단한 독립형 WebDAV 서버인 hacdias/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
    }
  }
});

특허

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.

  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