webdav-mcp

webdav-mcp

Provides 8 WebDAV file operations as MCP tools for AI agents to interact with remote WebDAV servers.

Category
Visit Server

README

webdav-mcp

A zero-dependency WebDAV MCP server — single static binary, no Node.js or Python required.

Implements the Model Context Protocol (MCP) over JSON-RPC 2.0 via stdio, exposing 8 WebDAV operations as tools that any MCP-compatible AI agent can call.

Why this exists

Every other WebDAV MCP server on GitHub requires a Node.js or Python runtime. This one is a single self-contained binary (~100–160 KB) compiled from Zig. It runs anywhere without installing a runtime, and it cross-compiles to all major platforms from one machine.

Tools

Tool Description
list List files and directories at a path
read Read file contents as text
write Write (create or overwrite) a file
delete Delete a file or directory
mkdir Create a directory
move Move or rename a file or directory
copy Copy a file or directory (sends Depth: infinity per RFC 4918 §9.8.2)
stat Get metadata for a single file or directory (PROPFIND Depth:0)

Tool parameters

list

  • path (required) — directory path relative to WebDAV root
  • recursive (boolean, default false) — if true, lists recursively using Depth: infinity. Note: some servers (IIS, some nginx configs) block recursive listing.

read

  • path (required) — file path relative to WebDAV root
  • max_bytes (integer, default 1048576) — maximum file size to read in bytes. Returns an error if the file is larger. Increase this for large files.

write

  • path (required) — file path relative to WebDAV root
  • content (required) — content to write
  • content_type (string, default application/octet-stream) — MIME type for the file (e.g. text/plain, application/json)
  • create_parents (boolean, default false) — if true and the parent directory does not exist, automatically creates all missing ancestor directories via MKCOL before writing

stat

  • path (required) — path to stat relative to WebDAV root
  • Returns: file or dir or missing, plus size=, modified=, etag=, and type= when available

Configuration

Set these environment variables before launching the server:

Variable Description Example
WEBDAV_URL Base URL of the WebDAV server http://192.168.1.10:8080
WEBDAV_USER Username admin
WEBDAV_PASS Password secret

Credential security

Credentials are sent via native Zig HTTP networking using the Authorization: Basic ... header. No external curl process is spawned.

Building from source

Requires Zig 0.16.0.

# Development build
zig build

# Optimized release build (~100-160 KB)
zig build -Doptimize=ReleaseSmall

# Cross-compile for all platforms (outputs to zig-out/release/)
zig build cross

Cross-compilation targets

File Platform
webdav-mcp-macos-arm64 macOS Apple Silicon
webdav-mcp-macos-x86_64 macOS Intel
webdav-mcp-linux-arm64 Linux ARM64 (static musl)
webdav-mcp-linux-x86_64 Linux x86-64 (static musl)
webdav-mcp-linux-armv7 Linux ARMv7 / Raspberry Pi (static musl)
webdav-mcp-windows-x86_64.exe Windows x86-64

Integration with nullclaw / *Claw bots

Add an mcp_servers entry to your bot's config.json:

{
  "mcp_servers": {
    "webdav": {
      "command": "/path/to/webdav-mcp",
      "args": [],
      "env": {
        "WEBDAV_URL": "http://your-webdav-server:8080",
        "WEBDAV_USER": "your-username",
        "WEBDAV_PASS": "your-password"
      }
    }
  }
}

The server speaks JSON-RPC 2.0 over stdio (newline-delimited), which is the standard MCP transport. Once registered, the agent can call all 8 tools as normal tool calls.

Running tests

zig build test --summary all

All unit tests cover XML parsing, JSON-RPC dispatch, argument extraction, URL construction, percent-encoding, entity decoding, and HTTP method routing.

License

MIT — see LICENSE.

<!-- mcp-name: io.github.vernonstinebaker/webdav-mcp -->

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured