WebDAV MCP服务器

一个无需依赖的WebDAV MCP服务器,通过Model Context Protocol(MCP)提供文件管理功能,适用于AI代理的文件操作需求。

  • by vernonstinebaker
  • Zig
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 vernonstinebaker/webdav-mcp

使用说明

webdav mcp

零依赖WebDAV MCP服务器——单个静态二进制文件,不需要Node.js或Python。

实施 模型上下文协议 (MCP)通过stdio在JSON-RPC 2.0上运行,将8个WebDAV操作作为任何兼容MCP的AI代理都可以调用的工具。

为什么存在

GitHub上的所有其他WebDAV MCP服务器都需要Node.js或Python运行时。这是一个由Zig编译的独立二进制文件(~100–160 KB)。它可以在任何地方运行,而无需安装运行时,并且可以从一台机器交叉编译到所有主要平台。

工具

工具 说明
list 列出路径中的文件和目录
read 以文本形式读取文件内容
write 写入(创建或覆盖)文件
delete 删除文件或目录
mkdir 创建目录
move 移动或重命名文件或目录
copy 复制文件或目录(发送 Depth: infinity per RFC 4918 §9.8.2)
stat 获取单个文件或目录的元数据(PROPFIND深度:0)

刀具参数

list

  • path (必需)--相对于WebDAV根目录的目录路径
  • recursive (布尔值,默认值 false)--如果 true,使用递归方式列出 Depth: infinity注意:一些服务器(IIS、一些nginx配置)阻止递归列表。

read

  • path (必需)--相对于WebDAV根目录的文件路径
  • max_bytes (整数,默认值 1048576)--要读取的最大文件大小(以字节为单位)。如果文件较大,则返回错误。对于大文件,请增加此值。

write

  • path (必需)--相对于WebDAV根目录的文件路径
  • content (必填)--要写的内容
  • content_type (字符串,默认值 application/octet-stream)--文件的MIME类型(例如。 text/plain, application/json)
  • create_parents (布尔值,默认值 false)--如果 true 如果父目录不存在,则在写入之前通过MKCOL自动创建所有缺失的祖先目录

stat

  • path (必需)--相对于WebDAV根目录的统计路径
  • 退货: file 或 dir 或 missing,加 size=, modified=, etag=,以及 type= 如果可用

配置

在启动服务器之前设置这些环境变量:

变量 描述 示例
WEBDAV_URL WebDAV服务器的基本URL http://192.168.1.10:8080
WEBDAV_USER 用户名 admin
WEBDAV_PASS 密码 secret

凭证安全

凭据传递给 curl 通过写入的临时netrc文件 /tmp 带模式 0600,而不是通过命令行参数。这可以防止用户名和密码出现在进程列表中(ps -ef, /proc/<pid>/cmdline).curl子进程退出后,临时文件将立即删除。

从源头构建

需要 Zig 0.15.2.

# 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

交叉编译目标

文件 平台
webdav-mcp-macos-arm64 macOS苹果硅
webdav-mcp-macos-x86_64 macOS英特尔
webdav-mcp-linux-arm64 Linux ARM64(静态musl)
webdav-mcp-linux-x86_64 Linux x86-64(静态musl)
webdav-mcp-linux-armv7 Linux ARMv7/树莓派(静态musl)
webdav-mcp-windows-x86_64.exe Windows x86-64

与nullclaw/*Claw机器人集成

添加一个 mcp_servers 进入你的机器人 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"
      }
    }
  }
}

服务器通过stdio(换行符分隔)传输JSON-RPC 2.0,这是标准的MCP传输。注册后,代理可以像正常的工具调用一样调用所有8个工具。

运行测试

zig build test --summary all

所有单元测试都涵盖了XML解析、JSON-RPC调度、参数提取、URL构造、百分比编码、实体解码和HTTP方法路由。

许可证

麻省理工学院——见 许可证.