icloud-calendar-mcp
Allows AI agents to read and write iCloud Calendar over CalDAV, including listing calendars, listing events with recurring events expanded, and creating, updating, or deleting events.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@icloud-calendar-mcpwhat's on my calendar tomorrow?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
icloud-calendar-mcp
A remote MCP server that lets AI agents read and write your iCloud Calendar over CalDAV. It runs on Cloudflare Workers (the free plan is enough), so it works from Claude on the web, desktop, and mobile.
There is no shared public instance. You deploy your own copy to your Cloudflare account, and only you can authorize clients to use it.
Not affiliated with or endorsed by Apple. iCloud is a trademark of Apple Inc.
Tools
Tool | Description |
| Lists calendars that hold events (Reminders lists are excluded) |
| Lists events in a period, with recurring events expanded and times given with their UTC offset |
| Creates a timed or all-day event |
| Changes the title, time, location, or description, keeping alarms, attendees, and recurrence rules |
| Deletes an event |
Related MCP server: calendar-mcp
Requirements
A Cloudflare account
An Apple Account with two-factor authentication
Deploy
Create an app-specific password. Sign in at account.apple.com, open Sign-In and Security → App-Specific Passwords, and generate one. You can revoke it there at any time.
Sign in to Cloudflare. Deployment uses your Wrangler login, so no API token is needed:
bun install bunx wrangler loginConfigure. Copy the example variables and fill them in.
auth_passwordis the password you will type on the consent page when connecting a client; use at least 16 characters.cp terraform/terraform.tfvars.example terraform/terraform.tfvarsDeploy.
terraform -chdir=terraform init bun run plan # preview the changes bun run deploy # apply themBoth build the Worker first and pass your Wrangler login to Terraform. For other Terraform commands, run
scripts/terraform.sh <command>. In CI, setCLOUDFLARE_API_TOKENandTF_VAR_account_idand they are used as is.The server is served at
https://icloud-calendar-mcp.<your-subdomain>.workers.dev/mcp. Yourworkers.devsubdomain is shown on the Workers overview page of the dashboard.
terraform.tfvars and the Terraform state contain your secrets. Both are git-ignored; keep them private, and keep the state in terraform/ so later deploys update the same resources.
To update to a newer version:
git pull
bun install
bun run deployConnect to Claude
Open Settings → Connectors → Add custom connector in Claude, enter your /mcp URL, and keep the detected defaults (sign in now, Claude's public identity). Click Connect, check that the consent page shows claude.ai as a verified client, enter your auth_password, and click Allow.
Connectors added on the web are also available in the Claude mobile apps.
Verify a deployment
scripts/smoke.sh registers a test client, completes the OAuth flow, and calls list_calendars:
AUTH_PASSWORD=... scripts/smoke.sh https://icloud-calendar-mcp.<your-subdomain>.workers.devA PROPFIND ... failed: 401 result means the iCloud credentials are wrong.
How access is protected
MCP clients must complete OAuth 2.1 (with Client ID Metadata Documents or Dynamic Client Registration). Only someone who knows
auth_passwordcan approve a client, and password attempts are rate-limited to 5 per minute.Your iCloud credentials stay in Worker secrets. Tools only accept URLs under your own calendars, so a client cannot redirect the credentials to another host.
Limitations
Reminders are not available over CalDAV and are not supported.
update_eventanddelete_eventact on a recurring event as a whole series; single occurrences cannot be changed or removed on their own.Recurring events that would take too many iterations to expand (for example, a rule repeating every second) are left out of
list_eventsand reported in itsskippedfield.Workers Free allows 10 ms of CPU per request. Expanding a daily event that has repeated for decades can exceed it; the request then fails.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with iCloud Calendars via the CalDAV protocol using an app-specific password. It allows users to list, create, update, and delete calendar events through MCP-aware clients like ChatGPT.2MIT
- AlicenseNot gradedqualityFmaintenanceProvider-agnostic CalDAV calendar MCP server that connects any CalDAV calendar to AI assistants, enabling calendar operations like listing, creating, updating, and deleting events.34 PyPIAGPL 3.0
- FlicenseNot gradedqualityCmaintenanceAn AI-agent-managed calendar service with bidirectional Google Calendar and Apple iCloud sync, enabling calendar and event management via MCP tools.-
- AlicenseNot gradedqualityCmaintenanceProvides AI calendar operators full iCloud Calendar access through CalDAV, with two-factor authentication and app-specific passwords.MIT