mcpField
D
dav-mcp

dav-mcp

ローカル
github.com/PhilflowIO生産性423 週間前に更新

dav-mcp について

dav-mcp は、CalDAV、CardDAV、VTODO の各プロトコルを通じて AI エージェントにカレンダー、連絡先、タスクの管理機能を提供する MCP サーバーです。イベント、連絡先、ToDo の作成・取得・更新・削除をカバーする 27 のツールを備え、RFC 4791 および RFC 6352 に準拠したサーバーで利用できます。

主な機能

  1. 01カレンダー、連絡先、タスクにわたる 27 のツール
  2. 02CalDAV イベントの作成・取得・更新・削除
  3. 03CardDAV 連絡先の管理とフィルター検索
  4. 04ステータスや期限による VTODO タスク管理
  5. 05クライアント側での空き時間計算
  6. 06Basic、Digest、OAuth の認証方式

活用シーン

  1. 01AI アシスタントによる予定の確認と会議の登録
  2. 02n8n ワークフローでの連絡先やタスクの条件検索
  3. 03完了済みタスクの定期的な整理

MCP 対応

dav-mcp 自体が MCP サーバーとして、カレンダー、連絡先、タスクに関するツールを MCP クライアントに公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"dav": {
"command": "npx",
"args": [
"-y",
"dav-mcp"
],
"env": {
"CALDAV_SERVER_URL": "<CALDAV_SERVER_URL>",
"CALDAV_USERNAME": "<CALDAV_USERNAME>",
"CALDAV_PASSWORD": "<CALDAV_PASSWORD>",
"AUTH_METHOD": "<AUTH_METHOD>",
"GOOGLE_SERVER_URL": "<GOOGLE_SERVER_URL>",
"GOOGLE_USER": "<GOOGLE_USER>",
"GOOGLE_CLIENT_ID": "<GOOGLE_CLIENT_ID>",
"GOOGLE_CLIENT_SECRET": "<GOOGLE_CLIENT_SECRET>",
"GOOGLE_REFRESH_TOKEN": "<GOOGLE_REFRESH_TOKEN>",
"GOOGLE_TOKEN_URL": "<GOOGLE_TOKEN_URL>"
}
}
}
}
起動コマンドnpx -y dav-mcp
設定が必要な環境変数
CALDAV_SERVER_URLBase URL of your CalDAV/CardDAV server (e.g. https://example.com/dav.php/)
CALDAV_USERNAMEUsername for DAV server authentication
CALDAV_PASSWORDシークレットPassword or app-specific password for DAV server authentication
AUTH_METHODシークレットAuthentication method, case-insensitive: 'Basic' (default; switches to Digest by itself when the server only offers Digest), 'Digest' (Digest-only servers without ever sending the password) or 'OAuth' for Google
GOOGLE_SERVER_URLGoogle CalDAV endpoint; required when AUTH_METHOD=oauth2
GOOGLE_USERGoogle account email; required when AUTH_METHOD=oauth2
GOOGLE_CLIENT_IDOAuth2 client ID; required when AUTH_METHOD=oauth2
GOOGLE_CLIENT_SECRETシークレットOAuth2 client secret; required when AUTH_METHOD=oauth2
GOOGLE_REFRESH_TOKENシークレットOAuth2 refresh token; required when AUTH_METHOD=oauth2
GOOGLE_TOKEN_URLシークレットOAuth2 token endpoint for AUTH_METHOD=oauth2 (default: https://oauth2.googleapis.com/token)

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

パッケージ
npmdav-mcp5.0.0

ツール

27

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

このツールにパラメーターはありません。

詳細

dav-mcp

AI エージェントに組織化の力を与えましょう — カレンダー、連絡先、タスクを管理する、オーケストレーションを担うアシスタントへと変身させます。

CalDAV、CardDAV、VTODO プロトコルに対応する、実運用向けの27個のツールを搭載しています。

License: MIT npm version


クイックスタート

ワンクリックインストール(Claude Desktop)
  1. 最新リリースからdav-mcp-<version>.mcpbをダウンロードします。4.1.2以降のリリースにはこのファイルが含まれています。
  2. Claude Desktop(macOSまたはWindows)で開きます。Claudeにインストールダイアログが表示されます。
  3. サーバーのURL、ユーザー名、パスワードを入力します。パスワードはシークレットとして保存されます。サーバーでDigestが必要な場合を除き、認証方式はBasicのままにしてください。

.mcpbファイルはMCP Bundleです。依存関係を含むサーバーが同梱されているため、Node.jsもnpxもインストールする必要はありません。

Claude Desktop / Cursor(ローカル)

MCP設定ファイルに追加します。

{
  "mcpServers": {
    "dav-mcp": {
      "command": "npx",
      "args": ["-y", "dav-mcp"],
      "env": {
        "CALDAV_SERVER_URL": "https://dav.example.com",
        "CALDAV_USERNAME": "your_username",
        "CALDAV_PASSWORD": "your_password"
      }
    }
  }
}

設定ファイルの場所:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json

設定を追加した後、Claude Desktopを再起動してください。


n8n(リモートHTTP)

HTTPサーバーを起動します。

CALDAV_SERVER_URL=https://dav.example.com \
CALDAV_USERNAME=your_username \
CALDAV_PASSWORD=your_password \
BEARER_TOKEN=your-secret-token \
npx dav-mcp --http

次に、n8nで以下を行います。

  1. AI Agentノードを追加します
  2. MCP Client Toolノードを追加し、AI Agentに接続します
  3. 以下を設定します。
    • MCP Endpoint:http://localhost:3000/mcp
    • Authentication:Bearer
    • Token:your-secret-token

カスタムポート:

npx dav-mcp --http --port=8080

Docker

公開済みのイメージを取得します(distroless、root以外のユーザーで実行、シェルなし)。

docker run -d --name dav-mcp -p 3000:3000 --env-file .env \
  ghcr.io/philflowio/dav-mcp:latest

タグ:latest、正確なリリース番号(5.0.0)、マイナーバージョン系列(5.0)。 別のポートで待ち受けるにはPORTを設定します。ヘルスチェックもそれに従います。

または、ソースからビルドします。

git clone https://github.com/PhilflowIO/dav-mcp.git
cd dav-mcp
cp .env.example .env
# Edit .env with your credentials
docker-compose up

オーケストレーション

ツールが不完全だとAIはその場しのぎの対応を強いられますが、包括的なツールがあれば、すべてのコンポーネントに対して正確な操作を実行できます。

機能dav-mcpほとんどのMCP
カレンダー管理完全なCRUD(12個のツール)作成+一覧表示のみ(2~3個のツール)
連絡先管理完全なCardDAV(8個のツール)まったく対応していない場合が多い
タスク管理完全なVTODO対応(7個のツール)含まれていることはまれ
フィールド単位の更新すべてのRFCプロパティ+カスタムフィールド対応していることはまれ
空き時間/予定ありすべてのサーバーで動作(クライアント側)ネイティブREPORT。ほとんどのサーバーでは未対応
サーバー側フィルタリング効率的なクエリすべてのデータをダンプ
マルチプロバイダー対応あらゆるCalDAV/CardDAVサーバー対応プロバイダーに制限あり
ツール合計数27個のツール2~6個のツール

利用可能なツール(合計27個)

CalDAVツール(12個)
  1. list_calendars - 利用可能なすべてのカレンダーを一覧表示
  2. list_events - すべてのイベントを一覧表示(絞り込み検索にはcalendar_queryを使用)
  3. create_event - 新しいカレンダーイベントを作成
  4. update_event - 推奨:任意のイベントフィールド(SUMMARY、LOCATION、STATUS、カスタムX-*プロパティ)を更新。start_date/end_date/all_dayを使ってイベントを移動または変換
  5. update_event_raw - 生のiCalデータでイベントを更新(上級者向け)
  6. delete_event - イベントを完全に削除
  7. calendar_query - 推奨:テキスト、日付範囲、場所でイベントを効率的に検索・絞り込み
  8. make_calendar - 新しいカレンダーコレクションを作成。必要に応じてタイムゾーンも指定できます(Europe/BerlinなどのIANA名。VTIMEZONEとして送信)
  9. update_calendar - カレンダーのプロパティ(表示名、説明、色、タイムゾーン)を更新
  10. delete_calendar - カレンダーとそのすべてのイベントを削除
  11. calendar_multi_get - URLを指定して複数のイベントを一括取得
  12. freebusy_query - 範囲を指定して空き時間と予定ありの時間を調べます(「いつ空いていますか?」)。クライアント側で計算されます
CardDAV ツール(8 個)
  1. list_addressbooks - 利用可能なすべてのアドレス帳を一覧表示します
  2. list_contacts - すべての連絡先を一覧表示します(絞り込み検索には addressbook_query を使用してください)
  3. create_contact - 新しい連絡先(vCard)を作成します
  4. update_contact - 推奨:連絡先の任意のフィールド(FN、EMAIL、TEL、ORG、ADR、カスタム X-* プロパティ)を更新します
  5. update_contact_raw - 生の vCard データで連絡先を更新します(上級者向け)
  6. delete_contact - 連絡先を完全に削除します
  7. addressbook_query - 推奨:名前、メールアドレス、または組織で連絡先を効率的に検索・絞り込みます
  8. addressbook_multi_get - URL を指定して複数の特定の連絡先を一括取得します
VTODO ツール(7 個)
  1. list_todos - すべての ToDo/タスクを一覧表示します(絞り込み検索には todo_query を使用してください)
  2. create_todo - 期限日、優先度、ステータスを任意で指定して新しい ToDo/タスクを作成します
  3. update_todo - 推奨:ToDo の任意のフィールド(SUMMARY、STATUS、PRIORITY、DUE、PERCENT-COMPLETE、カスタム X-* プロパティ)を更新します
  4. update_todo_raw - 生の VTODO iCal データで ToDo を更新します(上級者向け)
  5. delete_todo - ToDo/タスクを完全に削除します
  6. todo_query - 推奨:ステータス/期限日で ToDo を効率的に検索・絞り込みます
  7. todo_multi_get - URL を指定して複数の特定の ToDo を一括取得します
タイムゾーン

タイムゾーンを指定せずに作成されたイベントや ToDo(DTSTART:20261010T090000 のような「フローティング」時刻や終日の日付)は、CalDAV の仕様(RFC 4791 §9.9)に従って、そのカレンダーのタイムゾーンで読み取られます。これは make_calendar/update_calendar で設定され、list_calendars で確認できます。タイムゾーンが設定されていないカレンダーは、dav-mcp が実行されているタイムゾーンで読み取られます。これは TZ 環境変数(たとえば Docker または HTTP デプロイメントでの TZ=Europe/Berlin)で指定され、指定がない場合はシステムのタイムゾーンが使われます。作成ツールや更新ツールにタイムゾーンなしで指定した時刻も同様に読み取られ、タイムゾーンなしで保存されたイベントは、移動後もタイムゾーンなしのままです。freebusy_query は空き時間枠をカレンダーのタイムゾーンで表示し、そのタイムゾーン名も示します。


実際の活用例

n8n 自動化ワークフロー
  • 会議の管理:「金曜日の会議をすべて表示して」→ 日付フィルター付きの calendar_query が該当するイベントのみを返します
  • 連絡先の検索:「Google の社員を全員探して」→ 組織フィルター付きの addressbook_query が該当する連絡先を効率的に見つけます
  • タスクのレポート:「期限超過の優先度が高いタスクを表示して」→ フィルター付きの todo_query が該当する結果を返します
  • 定期的な整理:毎日の cron ジョブで、対象を絞ったクエリを使って完了済みタスクを削除します
Claude Desktop との連携
  • イベントのすばやい作成:「明日の午後 2 時にチーム会議を作成して」→ create_event がすぐに実行されます
  • 連絡先の検索:「Sarah のメールアドレスは?」→ 名前フィルター付きの addressbook_query が連絡先を見つけます
  • カレンダーの概要:「来週のカレンダーには何が入っている?」→ 期間を指定した calendar_query がイベントを表示します
  • カレンダーの管理:「Project Luna という新しいカレンダーを作成して」→ make_calendar がコレクションを作成します

主要なプロバイダーすべてで利用可能

RFC 4791 および RFC 6352 に準拠する CalDAV/CardDAV サーバーであれば、どれでも利用できます。

  • Nextcloud - 完全対応
  • Baikal - 完全対応
  • Radicale - 完全対応
  • iCloud - アプリ専用パスワードで利用可能
  • RFC 準拠のサーバー - 標準プロトコルに対応

認証

AUTH_METHOD は、dav-mcp のログイン方法を選択します(大文字と小文字は区別されません)。

AUTH_METHOD認証情報使用対象
Basic(デフォルト)CALDAV_USERNAME、CALDAV_PASSWORDほとんどすべてのサーバー。サーバーが Digest のみを提供する場合(たとえば、Digest に設定された Baikal)、dav-mcp は自動的に Digest に切り替えます。設定は不要です。
DigestCALDAV_USERNAME、CALDAV_PASSWORDDigest(RFC 7616)のみを受け付けるサーバー。Basic で自動的に切り替わる場合は、まずパスワードを Basic 形式で一度送信してから拒否されますが、Digest ではパスワードを送信しません。HTTPS でない接続ではこちらを使用してください。
OAuth(または OAuth2)GOOGLE_*、詳細は以下Google Calendar

dav-mcp には Node.js 22 以降が必要です。設定が間違っている場合(不明な AUTH_METHOD 値や、選択した方式に必要な認証情報が不足している場合)、Basic にフォールバックせず、サーバーの起動が停止します。


Google Calendar(OAuth2)

Google Calendar では、OAuth2 認証を使用してください。

{
  "mcpServers": {
    "dav-mcp": {
      "command": "npx",
      "args": ["-y", "dav-mcp"],
      "env": {
        "AUTH_METHOD": "OAuth",
        "GOOGLE_USER": "[email protected]",
        "GOOGLE_CLIENT_ID": "your-client-id",
        "GOOGLE_CLIENT_SECRET": "your-client-secret",
        "GOOGLE_REFRESH_TOKEN": "your-refresh-token"
      }
    }
  }
}

セキュリティ

  • 入力検証:実行前に、すべての入力を Zod スキーマで検証します。
  • レート制限(HTTP モード):クライアントアドレスごとに 15 分あたり 100 リクエストです。ベアラートークンの確認前にカウントされます。ループバックまたはプライベートネットワーク(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)上のクライアント(たとえば、同じ Docker ネットワーク上の別のコンテナ)には 10,000 リクエストが適用されます。制限事項:dav-mcp が認識するのは、接続元のアドレスです。Docker のポートマッピングやリバースプロキシの背後では、そのアドレスはブリッジゲートウェイまたはプロキシになるため、外部クライアントはすべてその 1 つのアドレス、カウンター、引き上げられた上限を共有します。HTTP トランスポートを公開する場合は、プロキシでクライアントごとにレート制限を設定してください。
  • ベアラー認証:HTTP トランスポートのトークン認証です。
  • 認証情報を保存しない:受け渡しのみを行い、ログ記録やキャッシュはしません。
  • 構造化ログ:リクエスト ID を使った監査証跡を記録し、個人を特定できる情報は公開しません。
  • ツール呼び出しログはデフォルトで無効:デバッグ用に LOG_TOOL_CALLS=true を設定すると、すべてのツール呼び出しとその引数を ~/.local/state/dav-mcp/tool-calls.jsonl(または $XDG_STATE_HOME、Windows では %LOCALAPPDATA%、あるいは TOOL_CALL_LOG_FILE)に記録します。このファイルはユーザー本人のみが読み取れます。TOOL_CALL_LOG_MODE=console を設定すると、代わりに stderr に出力します。
  • CORS 保護:許可リストに登録されたオリジンのみを許可し、クロスサイト攻撃をブロックします。

プライバシーポリシー

dav-mcp はお使いのマシン(またはご自身のサーバー)で実行され、設定した DAV サーバーとのみ通信します。テレメトリーはなく、メンテナーや第三者と情報を共有することもありません。ツールの結果は、ツールを呼び出した AI アシスタントに渡されます。認証情報やカレンダーデータは dav-mcp に保存されません。オプションのツール呼び出しログはデフォルトで無効です。ポリシー全文:PRIVACY.md。お問い合わせ:[email protected]。


ドキュメント


コントリビューション

プルリクエストを歓迎します!ガイドラインについては、CONTRIBUTING.md をお読みください。


ライセンス

MIT License - 詳細は LICENSE をご覧ください。


謝辞

以下を使用して構築されています:

  • tsdav - 優れた TypeScript CalDAV/CardDAV ライブラリ
  • tsdav-utils - RFC 準拠のフィールド更新を行う、フィールドに依存しないユーティリティレイヤー
  • MCP SDK - Anthropic による Model Context Protocol
  • ical.js - RFC 準拠の iCalendar パーサー

質問や問題がありますか? GitHub issue を作成してください。


カレンダー、連絡先、タスクを管理する AI エージェントのために構築されています。

コメント

MCP は初めてですか?

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

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