{
  "markdown": "# webdav-mcp\n\nA zero-dependency WebDAV MCP server — single static binary, no Node.js or Python required.\n\nImplements the [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) over JSON-RPC 2.0 via stdio, exposing 8 WebDAV operations as tools that any MCP-compatible AI agent can call.\n\n## Why this exists\n\nEvery 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.\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `list` | List files and directories at a path |\n| `read` | Read file contents as text |\n| `write` | Write (create or overwrite) a file |\n| `delete` | Delete a file or directory |\n| `mkdir` | Create a directory |\n| `move` | Move or rename a file or directory |\n| `copy` | Copy a file or directory (sends `Depth: infinity` per RFC 4918 §9.8.2) |\n| `stat` | Get metadata for a single file or directory (PROPFIND Depth:0) |\n\n### Tool parameters\n\n**`list`**\n- `path` (required) — directory path relative to WebDAV root\n- `recursive` (boolean, default `false`) — if `true`, lists recursively using `Depth: infinity`. Note: some servers (IIS, some nginx configs) block recursive listing.\n\n**`read`**\n- `path` (required) — file path relative to WebDAV root\n- `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.\n\n**`write`**\n- `path` (required) — file path relative to WebDAV root\n- `content` (required) — content to write\n- `content_type` (string, default `application/octet-stream`) — MIME type for the file (e.g. `text/plain`, `application/json`)\n- `create_parents` (boolean, default `false`) — if `true` and the parent directory does not exist, automatically creates all missing ancestor directories via MKCOL before writing\n\n**`stat`**\n- `path` (required) — path to stat relative to WebDAV root\n- Returns: `file` or `dir` or `missing`, plus `size=`, `modified=`, `etag=`, and `type=` when available\n\n## Configuration\n\nSet these environment variables before launching the server:\n\n| Variable | Description | Example |\n|----------|-------------|---------|\n| `WEBDAV_URL` | Base URL of the WebDAV server | `http://192.168.1.10:8080` |\n| `WEBDAV_USER` | Username | `admin` |\n| `WEBDAV_PASS` | Password | `secret` |\n\n### Credential security\n\nCredentials are sent via native Zig HTTP networking using the `Authorization: Basic ...` header. No external `curl` process is spawned.\n\n## Building from source\n\nRequires [Zig 0.16.0](https://ziglang.org/download/).\n\n```bash\n# Development build\nzig build\n\n# Optimized release build (~100-160 KB)\nzig build -Doptimize=ReleaseSmall\n\n# Cross-compile for all platforms (outputs to zig-out/release/)\nzig build cross\n```\n\n### Cross-compilation targets\n\n| File | Platform |\n|------|----------|\n| `webdav-mcp-macos-arm64` | macOS Apple Silicon |\n| `webdav-mcp-macos-x86_64` | macOS Intel |\n| `webdav-mcp-linux-arm64` | Linux ARM64 (static musl) |\n| `webdav-mcp-linux-x86_64` | Linux x86-64 (static musl) |\n| `webdav-mcp-linux-armv7` | Linux ARMv7 / Raspberry Pi (static musl) |\n| `webdav-mcp-windows-x86_64.exe` | Windows x86-64 |\n\n## Integration with nullclaw / *Claw bots\n\nAdd an `mcp_servers` entry to your bot's `config.json`:\n\n```json\n{\n  \"mcp_servers\": {\n    \"webdav\": {\n      \"command\": \"/path/to/webdav-mcp\",\n      \"args\": [],\n      \"env\": {\n        \"WEBDAV_URL\": \"http://your-webdav-server:8080\",\n        \"WEBDAV_USER\": \"your-username\",\n        \"WEBDAV_PASS\": \"your-password\"\n      }\n    }\n  }\n}\n```\n\nThe 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.\n\n## Running tests\n\n```bash\nzig build test --summary all\n```\n\nAll unit tests cover XML parsing, JSON-RPC dispatch, argument extraction, URL construction, percent-encoding, entity decoding, and HTTP method routing.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n<!-- mcp-name: io.github.vernonstinebaker/webdav-mcp -->\n",
  "bytes": 4157,
  "sha": "02b4a3f3f57db7919e5ace90c5cf471fe630722c126bb5cf62430d3da387325a",
  "repo_slug": "vernonstinebaker/webdav-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_vernonstinebaker_webdav_mcp_b7cfefb7/readme"
}