mcpField
W
WebDAV MCP Server

WebDAV MCP Server

ローカル
github.com/LaubPlusCoファイル・ストレージ1984 週間前に更新

WebDAV MCP Server について

WebDAV MCP サーバーは、ベーシック認証で保護された WebDAV エンドポイントに対してファイルやディレクトリの作成、読み取り、更新、削除を行います。Claude Desktop などの MCP クライアントから、自然言語でリモートの WebDAV ファイルを操作できます。MCP クライアントからファイルにアクセスしたいユーザー向けです。

主な機能

  1. 01リモート WebDAV のファイルとディレクトリの CRUD 操作
  2. 02stdio と HTTP/SSE の両方のトランスポートに対応
  3. 03任意のベーシック認証と bcrypt によるパスワード保護
  4. 04コネクションプールと Zod による設定検証

活用シーン

  1. 01自然言語によるリモート WebDAV 上のファイル作成や更新
  2. 02WebDAV 内のファイルの移動、コピー、名前変更
  3. 03リモートディレクトリの内容一覧の取得

MCP 対応

本プロジェクトは WebDAV のファイル操作を MCP リソースとツールとして公開する MCP サーバーです。リソースはディレクトリ一覧、ファイル内容、ファイル情報を提供し、ツールは作成、取得、更新、削除、移動、コピーを担当します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mpc-webdav-server": {
"command": "npx",
"args": [
"-y",
"webdav-mcp-server"
]
}
}
}
起動コマンドnpx -y webdav-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmwebdav-mcp-server

ツール

8

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
pathstringはい
contentstringはい
overwritebooleanいいえ

詳細

WebDAV MCP サーバー

基本認証を使用して、WebDAV エンドポイントで CRUD 操作を実行できる Model Context Protocol(MCP)サーバーです。このサーバーを使用すると、Claude Desktop やその他の MCP クライアントが、自然言語コマンドで WebDAV ファイルシステムを操作できます。

特長

  • オプションの認証を使用して、任意の WebDAV サーバーに接続
  • ファイルやディレクトリに対する CRUD 操作を実行
  • ファイル操作を MCP のリソースおよびツールとして公開
  • stdio トランスポート(Claude Desktop との統合用)または HTTP/SSE トランスポートで実行
  • オプションの基本認証でアクセスを保護
  • MCP サーバーの認証に bcrypt で暗号化したパスワードをサポート(プロトコルの制限により、WebDAV のパスワードは平文である必要があります)
  • WebDAV サーバーのパフォーマンスを向上させるコネクションプーリング
  • Zod を使用した設定の検証
  • トラブルシューティングを容易にする構造化ログ

前提条件

  • Node.js 18 以降
  • npm または yarn
  • WebDAV サーバー(実際のファイル操作に使用)

インストール

オプション 1:npm パッケージからインストール
# Global installation
npm install -g webdav-mcp-server

# Or with npx
npx webdav-mcp-server
オプション 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 トランスポートでの実行

このモードでは、リアルタイム通信のために Server-Sent Events を使用し、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 機能が有効になっていることを確認します。
npx を使用 2. Claude Desktop の設定を開き、「設定を編集」をクリックします(`claude_desktop_config.json`)。 3. 以下を追加します。 ```json { "mcpServers": { "webdav": { "command": "npx", "args": [ "-y", "webdav-mcp-server" ], "env": { "WEBDAV_ROOT_URL": "", "WEBDAV_ROOT_PATH": "", "WEBDAV_USERNAME": "", "WEBDAV_PASSWORD": "", "WEBDAV_AUTH_ENABLED": "true|false" } } } } ```
node とローカルビルドを使用 2. このリポジトリをクローンし、mac/linux では `setup.sh` を、windows では `setup.bat` を実行します。 3. Claude Desktop の設定を開き、「設定を編集」をクリックします(`claude_desktop_config.json`)。 4. 以下を追加します。 ```json { "mcpServers": { "webdav": { "command": "node", "args": [ "/dist/index.js" ], "env": { "WEBDAV_ROOT_URL": "", "WEBDAV_ROOT_PATH": "", "WEBDAV_USERNAME": "", "WEBDAV_PASSWORD": "", "WEBDAV_AUTH_ENABLED": "true|false" } } } } ```

利用可能な 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 というディレクトリを作成して"
  • "リモート WebDAV サーバー上のバックアップ先に report.docx をコピーして"
  • "リモート 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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。