icloud-calendar-mcp
icloud-calendar-mcp
信頼性が高く軽量な Apple iCloud Calendar MCP サーバーです。ネイティブ TypeScript/Node.js で、CalDAV 経由で iCloud に直接接続します。Java、Python、Go、AppleScript、macOS、Calendar.app には依存しません。
English summary: A production-oriented, cross-platform TypeScript MCP server for Apple iCloud Calendar. It provides guarded CalDAV CRUD, persistent opaque handles, idempotent writes, ETag concurrency control, recurrence expansion, stdio and secured Streamable HTTP transports.
インストール
Node.js 20 以降が必要です。Apple の「アプリケーション固有のパスワード」を使用する必要があります。Apple アカウントのマスターパスワードは使用しないでください。
npx icloud-calendar-mcpアプリケーション固有のパスワードを作成する: account.apple.com にログインし、「ログインとセキュリティ」→「アプリケーション固有のパスワード」に進みます。Apple は同時にアクティブにできるアプリケーション固有のパスワードの数を制限する場合があります。パスワードを取り消すと、本サービスは AUTH_FAILED を受信します。
stdio クライアント設定:
{
"mcpServers": {
"icloud-calendar": {
"command": "npx",
"args": ["-y", "icloud-calendar-mcp"],
"env": {
"ICLOUD_USERNAME": "you@example.com",
"ICLOUD_APP_PASSWORD": "xxxx-xxxx-xxxx-xxxx"
}
}
}
}stdout は JSON-RPC 専用です。すべてのログは stderr に書き込まれます。
Related MCP server: Chronos MCP
ツールと MCP コンテンツ
名前 | 説明 |
| iCloud カレンダーを一覧表示する |
| 明示的な時間範囲、タイムゾーン、カーソル、上限でクエリを実行する。CalDAV サーバーに occurrence の展開を要求する |
| プロセス間で永続化された不透明なハンドルを使用してイベントを読み取る |
|
|
| 永続ハンドルと |
| 永続ハンドルと |
| 時間的に重複するイベントを検索する |
| 現在読み取り可能なイベントから、クライアント側で確実にビジー時間を計算する |
ツールは structuredContent とテキスト JSON の両方を返し、read-only/destructive/idempotent/open-world の注釈を宣言します。リソース: calendar://calendars。明示的なユーザーテンプレートプロンプト: schedule_event、reschedule_event、find_conflicts。これらはユーザーに代わって自主的にスケジュールを決定することはありません。
イベントは、時刻指定/終日、タイトル、説明、場所、URL、RRULE、DISPLAY アラーム、参加者をサポートします。参加者フィールドは iCloud とカレンダー共有の権限に制限されます。本サービスは「ATTENDEE への書き込み」を招待状の送信成功として誤って報告することはありません。
時刻と繰り返しイベントのセマンティクス
時刻指定イベントの入力には ISO 8601 時刻と IANA
timezoneを指定する必要があります。出力でもタイムゾーンが明示的に返されます。終日イベントの
start/endはYYYY-MM-DDを使用します。endはイベントに 含まれません。例: 8月18日の終日イベントはstart=2026-08-18、end=2026-08-19となります。iCalendar は
ical.jsを使用して構築および解析されます。ユーザーフィールドを文字列連結することはありません。テストでは DST、UTC、終日の境界をカバーします。list_eventsは CalDAVcalendar-data/expandリクエストを通じて RRULE occurrence を展開します。whole_seriesは更新/削除をサポートします。single_occurrence、this_and_futureは、iCloud の繰り返し例外機能が検証されていない場合、UNSUPPORTED_OPERATIONを返し、決して静かにシリーズ全体に変更することはありません。
HTTP モード
HTTP はデフォルトでオフになっています。有効にすると loopback のみをリッスンし、bearer token は少なくとも 24 文字必要です:
ICLOUD_MCP_TRANSPORT=http \
ICLOUD_MCP_HTTP_TOKEN='replace-with-a-long-random-token' \
ICLOUD_MCP_HTTP_PORT=3000 \
npx icloud-calendar-mcpMCP エンドポイント:
POST /mcpヘルスチェック:
GET /healthz(Apple にアクセスせず、アカウントの状態も漏洩しません)bearer token を強制します。固定された Host allowlist。Origin はデフォルトですべて拒否。デフォルトのリクエスト上限は 1 MiB。ローカルの読み取り/書き込みレート制限。タイムアウトとセキュリティ応答ヘッダーの境界。
ICLOUD_MCP_CONFIG=/absolute/path/config.jsonを使用して、allowedHosts、allowedOrigins、timeoutMs、maxEvents、読み取り/書き込みレート制限、リクエスト上限などの安定したパラメータを設定します。認証情報はこのファイルに入れることはできません。
完全な設定契約については docs/tool-contracts.md を、セキュリティモデルについては docs/security.md を参照してください。
信頼性
create の UID は
request_idの安定した SHA-256 派生値です。重複したリクエストによって2つ目のイベントが生成されることはありません。create は
If-None-Match: *を使用し、update/delete は既に読み取った ETag のIf-Matchを使用します。ジャーナルはアトミックな rename でユーザーデータディレクトリ(デフォルトは
~/.icloud-caldav-mcp/journal.json、権限は厳格化)に書き込まれ、リクエストのリプレイと不透明なハンドルを保存します。429/5xx/ネットワークの一時的な障害には、ジッター付きの指数バックオフを使用し、
Retry-Afterを尊重します。応答に ETag がない場合は、read-after-write の可視性ポーリングを行います。安定したエラーコード:
AUTH_FAILED、CALENDAR_NOT_FOUND、EVENT_NOT_FOUND、ETAG_CONFLICT、INVALID_EVENT、RATE_LIMITED、TEMPORARY_UNAVAILABLE、UNSUPPORTED_OPERATION。
開発と実アカウントを用いた smoke test
pnpm install
pnpm check
pnpm packユーザーに影響のある変更は pnpm changeset を使用して記録します。main にプッシュすると、Changesets が自動的に Release PR を作成または更新します。その PR がマージされると、npm Trusted Publishing を通じて自動的に公開され、provenance が付与されます。初めて有効にする前に、npm パッケージ設定で .github/workflows/release.yml を Trusted Publisher として設定する必要があります。
CI は fake adapter/HTTP fixtures を使用するため、実際の Apple アカウントは必要ありません。オプションの実際のテストは、ローカルで明示的に ICLOUD_USERNAME と ICLOUD_APP_PASSWORD を指定した場合にのみ実行されます: pnpm smoke:icloud。現在の smoke スイートはデフォルトで書き込み操作をスキップします。最初の実際の検証では、専用のテストカレンダーを使用して、discovery/list/create/update/delete/recurrence exception の動作を手動で検証することをお勧めします。
トラブルシューティング: 401/403 の場合はアプリケーション固有のパスワードを確認してください。412 は ETag の同時実行競合を示します。list_events/get_event を再実行してください。429 の場合は待機してから再試行してください。不明なハンドルは、ジャーナルが削除されたか、データディレクトリが変更されたことを示します。完全な CalDAV URL、Authorization、またはイベント本文を issue に貼り付けないでください。
ライセンス
MIT。独立したオリジナルコードとして実装されています。公開プロジェクトはインターフェースとアーキテクチャの差異調査のためだけに使用されており、サードパーティのソースコードはコピーされていません。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceAn HTTP Model Context Protocol (MCP) server exposing iCloud Calendar (CalDAV) tools so MCP-aware clients can list calendars, read events, and create/update/delete events using an iCloud app-specific password.2MIT
- AlicenseBqualityCmaintenanceA comprehensive MCP server for CalDAV calendar management, supporting multi-account CRUD operations, recurring events, tasks, journals, and advanced search.2726MIT
- AlicenseAqualityBmaintenanceMCP server for Apple Calendar and CalDAV providers. Enables listing, creating, updating, deleting events, and checking free/busy status with per-calendar write protection.86MIT
- Flicense-qualityDmaintenanceRemote MCP server for managing iCloud calendar events via CalDAV, supporting CRUD operations, ICS import, and deployment on Prefect Horizon.
Related MCP Connectors
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.
Hosted MCP server for business-day math, deadline planning, meeting overlap, and SLA calculations.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/IceyWu/icloud-calendar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server