calendar-ics-reader-events-freebusy-conflicts について
エクスポートした .ics カレンダーを読み込み、予定、空き時間、重複を確認できるローカル優先の MCP サーバーです。繰り返し予定を展開し、元のカレンダーを変更せずに選択した予定を出力できます。
主な機能
- 01.ics ファイルやフィードの取り込み
- 02予定の一覧表示と検索
- 03勤務時間内の空き時間を表示
- 04予定の重複を検出
- 05選択した予定を .ics に出力
- 06会議を作業時間記録に変換
活用シーン
- 01複数カレンダーの週予定を確認する
- 02勤務時間内の空きを探す
- 03仕事と個人予定の重複を見つける
- 04出力や請求対象の会議を整理する
MCP 対応
MCP クライアントにカレンダー取り込み、予定、空き時間、重複確認、出力のツールを提供し、今日の予定リソースと日程計画プロンプトも公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.zovo.one/mcp/calendarclaude mcp add --transport http theluckystrike-calendar-ics-reader-events-freebusy-conflicts https://mcp.zovo.one/mcp/calendar{"mcpServers":{"theluckystrike-calendar-ics-reader-events-freebusy-conflicts":{"type":"http","url":"https://mcp.zovo.one/mcp/calendar"}}}Cursor で開く{"servers":{"theluckystrike-calendar-ics-reader-events-freebusy-conflicts":{"type":"http","url":"https://mcp.zovo.one/mcp/calendar"}}}VS Code で開く{"mcpServers":{"theluckystrike-calendar-ics-reader-events-freebusy-conflicts":{"type":"http","url":"https://mcp.zovo.one/mcp/calendar"}}}{"mcpServers":{"theluckystrike-calendar-ics-reader-events-freebusy-conflicts":{"serverUrl":"https://mcp.zovo.one/mcp/calendar"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.zovo.one/mcp/calendar認証が必要ツール
12このツールにパラメーターはありません。
詳細
mcp-calendar
カレンダーアプリでは次の火曜日に何があるかを確認できます。しかし、実際に一週間をどう過ごしたのか、同じ時間に引き受けてしまった予定が2つあるかどうか、先月の会議が請求可能な時間にすると何時間分だったのかは教えてくれません。このサーバーは、カレンダーがすでにエクスポートしている.icsファイルを読み込み、そうした質問に答えます。あらゆる期間の予定を取得し、繰り返し予定も正しく展開します。予定の入った時間帯をまとめ、勤務時間内の実際の空き時間を確認できます。仕事用と個人用のカレンダーをまたいで、すべての二重予約を一度に検出できます。選択した予定だけを含むシンプルな.icsファイルを作成でき、請求すべき会議の正確な時間記録も確認できます。アカウントへの接続も同期も不要で、カレンダーファイルはプレーンテキストのままお使いのマシンに保存されます。
theluckystrikeが開発しました。
公式 MCP Registryに登録されています(io.github.theluckystrike/calendar-ics-reader-events-freebusy-conflicts)。
AI Product Indexに掲載されています - mcp.zovo.one/s/calendarでリモートエンドポイントを利用できます。無料プランがあり、登録は不要です。

カレンダーからエクスポートした.icsファイルをインポートして、予定や空き時間、重複する予定について質問できます。設定は不要で、すべてローカルで処理されます。
60秒でインストール
@theluckystrike/mcp-calendarのnpm公開は保留中です。それまでは、以下で動作確認済みのワンクリック.mcpbバンドル、またはクローンしてビルドする方法をご利用ください。
ワンクリック(.mcpb):最新リリースからcalendar.mcpbをダウンロードし、Claude Desktopでダブルクリックします:
https://github.com/theluckystrike/mcp-servers/releases/latest
(claude_desktop_config.json):
{
"mcpServers": {
"calendar": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-calendar"]
}
}
}
Claude Code:
claude mcp add calendar -- npx -y @theluckystrike/mcp-calendar
(.cursor/mcp.json):
{
"mcpServers": {
"calendar": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-calendar"]
}
}
}
上記のnpx形式は、パッケージの公開後すぐに使えるようになります。それまでは、上記の.mcpbバンドルを使うか、次の4つのコマンドだけでソースからビルドしてください:
git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/timezone -w servers/calendar
次に、クライアントのcommandを、1つの引数としてservers/calendar/dist/index.jsの絶対パスを指定したnodeに設定します。
Proモードで実行するには、同じ設定ブロックでMCP_LICENSE_KEYを設定するか、キーを指定してlicense_activateを一度呼び出します。
カレンダーから.icsを取得する
| アプリ | 場所 |
|---|---|
| Google Calendar | Settings -> Import & export -> Export。zipファイルがダウンロードされます。その中の.icsをインポートしてください。 |
| Apple Calendar | File -> Export -> Export... |
| Outlook(デスクトップ) | File -> Save Calendar、形式はiCalendar(.ics) |
| Outlook / Microsoft 365(ウェブ) | Settings -> Calendar -> Shared calendars -> Publishを開き、ICSリンクを使用します(Pro)。 |
| その他 | .icsで終わる公開フィードURL、またはwebcal://(Pro) |
次に、ics_import {path: "~/Downloads/[email protected]", name: "work"}を実行します。
ツール
| ツール | 説明 |
|---|---|
ics_import | .ics ファイル(path)、貼り付けた内容(text)、または公開フィード(url、Pro)を読み込み、名前を付けてローカルに保存します。同じ名前で再度インポートすると、既存の内容が置き換わります。 |
calendars_list | インポートしたすべてのカレンダーについて、名前、ソース、イベント数、サイズ、インポート日時を表示します。 |
events_list | 2つの日付の間にあるすべてのイベントを、繰り返しシリーズを実際の開催日時に展開し、並べ替えて、あなたのタイムゾーンで表示します。各行には ID が付いています。 |
events_search | タイトル、説明、場所、主催者、または参加者に指定した語句が含まれるイベントを検索します。 |
free_busy | 日ごとに、重複をまとめた予定ありの時間帯と、勤務時間内の空き時間を表示します。空き/透明としてマークされたイベントは、予定ありとして扱われません。 |
conflicts | 重複するイベントのすべての組み合わせを、重複時間(分)とともに表示します。すべてのカレンダーを対象にするため、クライアントとの通話と子どもの送り迎えの予定が重なっている場合も検出できます。期間が長すぎる場合は、空き状況を確認できる31日間に短縮して回答し、拒否することはありません。 |
next_event | まだ開始していない次の予定と、開始までの時間を表示します。 |
event_export | 指定したイベント(ID で指定)または期間内のすべてのイベントを、新しい .ics ファイルに書き出して送信できるようにします。時刻は UTC で記録されるため、どのクライアントでも正しく表示されます。 |
event_to_time_entry | 1件の会議を、タイムトラッカーの entry_add に渡す正確な引数に変換します。通話を再入力せずに請求対象の時間として記録できます。 |
ics_forget | カレンダーとそのローカルコピーを削除します。 |
license_status / license_activate | プランを表示し、Pro キーをオフラインで有効化します。 |
リソース calendar://today を使うと、今日の予定を一度に確認できます。プロンプト plan_my_day は一連の作業を通して、予定の内容、重複する予定、まとまった空き時間、請求対象にできる終了済みの会議を確認します。
パーサーが処理できる形式
仕様だけでなく、実際のエクスポートデータに基づいて実装しています。行の折り返し(CRLF、単独の LF と CR、Exchange がマルチバイト文字の途中に挿入した折り返しにも対応し、デコード前にバイト列を再結合します)、\n \, \; \\ エスケープ、排他的な DTEND を持つ終日イベント、DTEND の代わりの DURATION、TZID と UTC 時刻、浮動時刻、COUNT、UNTIL(終端を含む)、INTERVAL、序数(2MO、-1FR)を含む BYDAY、BYMONTHDAY、BYMONTH、BYSETPOS を指定した HOURLY、DAILY、WEEKLY、MONTHLY、YEARLY の RRULE、EXDATE、RDATE、RECURRENCE-ID による上書き(移動した予定が元の予定と置き換わり、二重に表示されることはありません)、STATUS:CANCELLED、TRANSP:TRANSPARENT、イベント内の VALARM ブロックに対応しています。読み取れないイベントは、ファイルの残りを無駄にせず、スキップして件数を記録します。
FREQ=MINUTELY と FREQ=SECONDLY は意図的に展開しません。このようなルールは期間内に数千件もの予定を作成し、週のほかの予定が埋もれてしまうためです。該当イベントは最初の発生日時に表示し、その理由も明示します。COUNT も UNTIL もないルールは、指定された期間内に限って展開されます。
このサーバーが書き出すファイルでは、終日イベントは DATE 値として保持されます。そのため、祝日はインポート時と同じ日に表示され、使用しているマシンのタイムゾーンで前日の時間指定イベントになることはありません。
VTIMEZONE は意図的に無視します。ファイルに埋め込まれた夏時間ルールが最新かどうかは、そのファイルを書き出したアプリ次第です。TZID は保持し、代わりに Node ビルドに含まれる ICU データからすべてのオフセットを計算します。これにより、ワルシャワ時間の毎週10:00の会議は、3月の時計変更後も現地時間の10:00に保たれます。
Free と Pro
| Free | Pro(19ドル、買い切り) | |
|---|---|---|
| 保存できるカレンダー数 | 2 | 無制限 |
| 1回の問い合わせあたりの期間 | 最大31日 | 任意の期間 |
長い期間での conflicts | 最初の31日分を回答し、上限を明示 | 任意の期間 |
| エクスポートできるイベント数 | 50 | 無制限 |
| URL または webcal フィードからのインポート | -- | 対応 |
| その他すべて | すべて利用可能 | すべて利用可能 |
Pro を入手、またはスイート内のすべてのサーバーを39ドルで生涯利用できます。
プライバシー
すべてローカルで処理されます。インポートしたカレンダーファイルは
${XDG_DATA_HOME:-~/.local/share}/mcp-servers/calendar/ にコピーされ、そこから読み込まれます。このディレクトリを削除すると、サーバーはリセットされます。サーバー全体でネットワーク通信は1回だけで、url を自分で指定した場合に限ります。指定されたアドレスを、タイムアウト12秒、上限5 MBで一度だけ取得します。また、ループバック、プライベート、クラウドメタデータの各アドレスへの接続は拒否します。アップロードはなく、アカウントも連携されず、ライセンスキーはオフラインで検証されます。
組み合わせて使う
- mcp-timezone:このサーバーは、タイムゾーンと
.icsエンジンをここから読み込みます。会議の時刻を変換したり、複数の国にまたがる空き時間を見つけたり、招待状を作成したりできます。 - mcp-time-tracker:
event_to_time_entryで終了した会議を渡すと、作業時間を追跡してレポートします。 - mcp-invoice:追跡した作業時間を、番号付きの請求書に変換できます。
- office-suite:複数のサーバーを1回のインストールで利用でき、設定項目も1つで済みます。
よくある質問
いいえ。OAuthもトークンも同期もありません。ファイルをエクスポートするか(Proでは公開フィードの URL を貼り付け)、ローカルで読み込みます。そのため、インポートされるのはスナップショットです。カレンダーが更新されたら、再度インポートしてください。
はい。コードの大部分を占めています。週次の予定は壁時計の時刻に基づいて展開されるため、ワルシャワの10:00の会議は、DSTの切り替え後も10:00のままで、11:00にずれることはありません。毎月31日の予定は2月をスキップし、3月に繰り越されません。UNTIL と完全に同じ日時に当たる予定も含まれ、個別に移動された予定は元の予定に置き換わります。
そうではありません。RFC 5545では、終日イベントの DTEND は終了日を含まないため、6月1日から3日までは1日と2日を意味します。このサーバーは仕様に準拠しており、カレンダーアプリも同じ動作をします。
event_export で .ics ファイルを書き出せるため、どこにでもインポートできます。読み込んだカレンダーが変更されることはありません。
上限は5 MBで、数千件のイベントに相当します。全履歴がそれを超える場合は、日付範囲を狭めてエクスポートしてください。
これらのドキュメントを MCP サーバーとして使う
Claude、Cursor、Windsurf、VS Code などのあらゆる MCP クライアントは、インストール不要で、GitMCP を通じてこのリポジトリのドキュメントを直接読み込めます。
- ドキュメントの MCP URL:https://gitmcp.io/theluckystrike/mcp-calendar
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。