mcpField
C
caldav-mcp

caldav-mcp

ローカル
github.com/dominik1001生産性105今日更新

caldav-mcp について

caldav-mcp は、CalDAV のカレンダーとタスク操作を AI アシスタントに公開する MCP サーバーです。MCP クライアントから予定やタスクを確認・管理したい人向けで、作成、更新、削除にも対応します。

主な機能

  1. 01CalDAV サーバーへの接続とカレンダー一覧表示
  2. 02期間を指定したイベント検索
  3. 03イベントの作成、更新、削除
  4. 04タスクの一覧表示とページング・絞り込み
  5. 05タスクの作成、更新、完了、削除

活用シーン

  1. 01AI アシスタントで指定期間の予定を確認
  2. 02カレンダーの会議を作成または編集
  3. 03期限付きタスクを管理

MCP 対応

MCP クライアントに CalDAV のカレンダーとタスクのツールを公開し、カレンダー、イベント、VTODO の操作を提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"caldav": {
"command": "npx",
"args": [
"-y",
"caldav-mcp"
],
"env": {
"CALDAV_BASE_URL": "<CALDAV_BASE_URL>",
"CALDAV_USERNAME": "<CALDAV_USERNAME>",
"CALDAV_PASSWORD": "<CALDAV_PASSWORD>"
}
}
}
}
起動コマンドnpx -y caldav-mcp
設定が必要な環境変数
CALDAV_BASE_URLBase URL of the CalDAV server (e.g. https://caldav.example.com)
CALDAV_USERNAMEUsername for CalDAV authentication
CALDAV_PASSWORDシークレットPassword for CalDAV authentication

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

パッケージ
npmcaldav-mcp0.9.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

caldav-mcp

🗓️ AI アシスタント向けにカレンダー操作をツールとして公開する、CalDAV Model Context Protocol(MCP)サーバーです。

Release npm version MIT License code style: prettier MCP Compatible semantic-release: angular

✨ 機能

  • CalDAV サーバーに接続する
  • カレンダーを一覧表示する
  • 指定した期間内のカレンダーイベントを一覧表示する
  • カレンダーイベントを作成する
  • カレンダーイベントを更新する
  • UID を指定してカレンダーイベントを削除する

セットアップ

{
  "mcpServers": {
    ...,
    "calendar": {
      "command": "npx",
      "args": [
        "caldav-mcp"
      ],
      "env": {
        "CALDAV_BASE_URL": "<CalDAV server URL>",
        "CALDAV_USERNAME": "<CalDAV username>",
        "CALDAV_PASSWORD": "<CalDAV password>"
      }
    }
  }
}

開発

クイックスタート

自動再読み込みを有効にして、MCP サーバーを開発モードで実行します。

npm run dev

これにより、TypeScript コードがウォッチモードで直接実行され、.env から環境変数が自動的に読み込まれます。

手動ビルド

または、TypeScript を JavaScript にコンパイルして実行できます。

  1. コンパイル:
npx tsc
  1. 実行:
node dist/index.js

利用可能なツール

list-calendars

すべてのカレンダーを一覧表示し、名前と絶対 URL の両方を返します。他のツールに渡す calendarUrl には、カレンダーの url を変更せずに指定してください。

パラメーター:なし

戻り値:

  • 利用可能なすべてのカレンダーの一覧
list-events

URL で指定したカレンダー内の、開始日から終了日までのすべてのイベントを一覧表示します。

パラメーター:

  • calendarUrl:string
  • end:string — 終了日(ISO 8601)
  • start:string — 開始日(ISO 8601)

戻り値:

  • 指定された期間内のイベント一覧。各イベントには uid、summary、start、end が含まれ、description と location が含まれる場合もあります。
create-event

URL で指定したカレンダーにイベントを作成します。終日イベントの場合は、wholeDay を true に設定してください。1 日の終日イベントでは、start と end に同じカレンダー日付の日時を指定します。タイムスタンプは同一である必要はありません。

パラメーター:

  • calendarUrl:string
  • description:string(任意)
  • end:string — 終了日時(ISO 8601)
  • location:string(任意)
  • recurrenceRule:object(任意)
    • byday:string の配列(任意)
    • bymonth:number の配列(任意)
    • bymonthday:number の配列(任意)
    • count:number(任意)
    • freq:enum(DAILY | WEEKLY | MONTHLY | YEARLY)(任意)
    • interval:number(任意)
    • until:string(任意)
  • start:string — 開始日時(ISO 8601)
  • summary:string
  • wholeDay:boolean(任意)— 終日イベントとして作成します

戻り値:

  • 作成したイベントの一意の ID
update-event

URL で指定したカレンダー内の既存のイベントを更新します。指定したフィールドのみが変更されます。1 日の終日イベントの場合は、wholeDay を true に設定し、start と end に同じカレンダー日を指定してください。

パラメーター:

  • calendarUrl:string
  • description:string(任意)
  • end:string(任意)
  • location:string(任意)
  • recurrenceRule:object(任意)
    • byday:string の配列(任意)
    • bymonth:number の配列(任意)
    • bymonthday:number の配列(任意)
    • count:number(任意)
    • freq:enum(DAILY | WEEKLY | MONTHLY | YEARLY)(任意)
    • interval:number(任意)
    • until:string(任意)
  • start:string(任意)
  • summary:string(任意)
  • uid:string — 更新するイベントの一意の識別子(list-events で取得)
  • wholeDay:boolean(任意)— 終日イベントかどうかを更新します

戻り値:

  • 更新したイベントの一意の ID
delete-event

URLで指定されたカレンダーのイベントを削除します

Parameters:

  • calendarUrl: 文字列
  • uid: 文字列 — 削除するイベントの一意の識別子(list-eventsから取得)

Returns:

  • イベントが正常に削除された場合の確認メッセージ
list-todos

URLで指定されたカレンダーのタスク(VTODO)を一覧表示します。デフォルトでは、未完了のタスク(NEEDS-ACTIONおよびIN-PROCESS)のみを、手動の順序、次に期限の順で返します。statusを使用すると、完了済み(COMPLETED)またはすべて(ALL)のタスクを含めることができます。また、limit/offsetを使用すると、長いリストをページ分割できます。

Parameters:

  • calendarUrl: 文字列
  • due_after: 文字列(省略可)— この日時(ISO 8601)以降が期限のタスクのみを対象とします。期限の範囲を設定すると、期限が設定されていないタスクは除外されます。
  • due_before: 文字列(省略可)— この日時(ISO 8601)以前が期限のタスクのみを対象とします。期限の範囲を設定すると、期限が設定されていないタスクは除外されます。
  • limit: 数値(省略可)— 返すタスクの最大数(デフォルト50、最大500)
  • offset: 数値(省略可)— スキップするタスク数(デフォルト0)
  • status: enum(OPEN | ALL | NEEDS-ACTION | COMPLETED | IN-PROCESS | CANCELLED)(省略可)— ステータスで絞り込みます。OPEN(デフォルト)= NEEDS-ACTION + IN-PROCESS、ALL = すべて、または特定のステータス(NEEDS-ACTION、COMPLETED、IN-PROCESS、CANCELLED)を指定します。

Returns:

  • { todos, total, limit, offset }オブジェクト。totalはページ分割前の件数です。各todoにはuid、summary、statusが含まれ、due、start、completed、description、locationが含まれる場合もあります。
create-todo

URLで指定されたカレンダーにタスク(VTODO)を作成します。必須項目はsummaryのみで、日付を設定しないタスクも作成できます。期限にはdueを、作業開始日時にはstartを使用します。

Parameters:

  • calendarUrl: 文字列
  • description: 文字列(省略可)
  • due: 文字列(省略可)— 期限日時(ISO 8601)
  • location: 文字列(省略可)
  • start: 文字列(省略可)— 開始日時(ISO 8601)
  • status: enum(NEEDS-ACTION | COMPLETED | IN-PROCESS | CANCELLED)(省略可)— 省略した場合、デフォルトはNEEDS-ACTIONです
  • summary: 文字列

Returns:

  • 作成したtodoの一意のID
update-todo

URLで指定されたカレンダーの既存のタスク(VTODO)を更新します。指定したフィールドのみが変更されます。タスクを完了にする場合は、complete-todoツールを使用してください。

Parameters:

  • calendarUrl: 文字列
  • description: 文字列(省略可)
  • due: 文字列(省略可)
  • location: 文字列(省略可)
  • start: 文字列(省略可)
  • status: enum(NEEDS-ACTION | COMPLETED | IN-PROCESS | CANCELLED)(省略可)
  • summary: 文字列(省略可)
  • uid: 文字列 — 更新するtodoの一意の識別子(list-todosから取得)

Returns:

  • 更新したtodoの一意のID
complete-todo

タスク(VTODO)を完了としてマークします。ステータスをCOMPLETEDに設定し、完了時刻を記録します。

Parameters:

  • calendarUrl: 文字列
  • uid: 文字列 — 完了するtodoの一意の識別子(list-todosから取得)

Returns:

  • 完了したtodoの一意のID
delete-todo

URLで指定されたカレンダーのタスク(VTODO)を削除します

Parameters:

  • calendarUrl: 文字列
  • uid: 文字列 — 削除するtodoの一意の識別子(list-todosから取得)

Returns:

  • todoが正常に削除された場合の確認メッセージ

ライセンス

MIT

コメント

MCP は初めてですか?

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

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