WebDAV MCP Server について
WebDAV MCP サーバーは、ベーシック認証で保護された WebDAV エンドポイントに対してファイルやディレクトリの作成、読み取り、更新、削除を行います。Claude Desktop などの MCP クライアントから、自然言語でリモートの WebDAV ファイルを操作できます。MCP クライアントからファイルにアクセスしたいユーザー向けです。
主な機能
- 01リモート WebDAV のファイルとディレクトリの CRUD 操作
- 02stdio と HTTP/SSE の両方のトランスポートに対応
- 03任意のベーシック認証と bcrypt によるパスワード保護
- 04コネクションプールと Zod による設定検証
活用シーン
- 01自然言語によるリモート WebDAV 上のファイル作成や更新
- 02WebDAV 内のファイルの移動、コピー、名前変更
- 03リモートディレクトリの内容一覧の取得
MCP 対応
本プロジェクトは WebDAV のファイル操作を MCP リソースとツールとして公開する MCP サーバーです。リソースはディレクトリ一覧、ファイル内容、ファイル情報を提供し、ツールは作成、取得、更新、削除、移動、コピーを担当します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | |
| content | string | はい | |
| overwrite | boolean | いいえ |
詳細
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 で暗号化したパスワードを使用できます。
-
bcrypt ハッシュを生成します。
# Using the built-in utility npm run generate-hash -- yourpassword # Or with npx npx webdav-mcp-generate-hash yourpassword -
{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 との統合
- 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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。