# Apple Calendar (CalDAV)

> Read and create events in Apple Calendar via CalDAV from any MCP client.

[Canonical HTML page](https://top-mcps.com/mcp/apple-calendar) · [server.json](https://top-mcps.com/mcp/apple-calendar.json) · [methodology](https://top-mcps.com/about/methodology)

## Install

### Claude Desktop — `claude_desktop_config.json`

Paste under mcpServers. Fully quit and reopen Claude after editing.

```json
{
  "mcpServers": {
    "apple-calendar": {
      "command": "npx",
      "args": [
        "-y",
        "caldav-mcp"
      ],
      "env": {
        "CALDAV_URL": "${CALDAV_URL}",
        "CALDAV_USERNAME": "${CALDAV_USERNAME}",
        "CALDAV_PASSWORD": "${CALDAV_PASSWORD}"
      }
    }
  }
}
```

### Claude Code — `CLI or .mcp.json`

Run from your repo. Commit .mcp.json to share with your team.

```shell
# export CALDAV_URL=https://caldav.icloud.com
# export CALDAV_USERNAME=you@icloud.com
# export CALDAV_PASSWORD=app-specific-password
claude mcp add apple-calendar -- npx -y caldav-mcp
```

### Cursor — `.cursor/mcp.json`

Global path: ~/.cursor/mcp.json. Reload window after editing.

```json
{
  "mcpServers": {
    "apple-calendar": {
      "command": "npx",
      "args": [
        "-y",
        "caldav-mcp"
      ],
      "env": {
        "CALDAV_URL": "${CALDAV_URL}",
        "CALDAV_USERNAME": "${CALDAV_USERNAME}",
        "CALDAV_PASSWORD": "${CALDAV_PASSWORD}"
      }
    }
  }
}
```

### VS Code — `.vscode/mcp.json`

VS Code uses the "servers" key (not "mcpServers").

```jsonc
{
  "servers": {
    "apple-calendar": {
      "command": "npx",
      "args": [
        "-y",
        "caldav-mcp"
      ],
      "env": {
        "CALDAV_URL": "${CALDAV_URL}",
        "CALDAV_USERNAME": "${CALDAV_USERNAME}",
        "CALDAV_PASSWORD": "${CALDAV_PASSWORD}"
      }
    }
  }
}
```

### Windsurf — `~/.codeium/windsurf/mcp_config.json`

Open via Cascade → hammer icon → Configure.

```json
{
  "mcpServers": {
    "apple-calendar": {
      "command": "npx",
      "args": [
        "-y",
        "caldav-mcp"
      ],
      "env": {
        "CALDAV_URL": "${CALDAV_URL}",
        "CALDAV_USERNAME": "${CALDAV_USERNAME}",
        "CALDAV_PASSWORD": "${CALDAV_PASSWORD}"
      }
    }
  }
}
```

### Cline — `cline_mcp_settings.json`

Open via the Cline sidebar → MCP Servers → Edit.

```json
{
  "mcpServers": {
    "apple-calendar": {
      "command": "npx",
      "args": [
        "-y",
        "caldav-mcp"
      ],
      "env": {
        "CALDAV_URL": "${CALDAV_URL}",
        "CALDAV_USERNAME": "${CALDAV_USERNAME}",
        "CALDAV_PASSWORD": "${CALDAV_PASSWORD}"
      }
    }
  }
}
```

### Continue — `~/.continue/config.json`

Continue uses modelContextProtocolServers with a transport block.

```json
{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "caldav-mcp"
          ],
          "env": {
            "CALDAV_URL": "${CALDAV_URL}",
            "CALDAV_USERNAME": "${CALDAV_USERNAME}",
            "CALDAV_PASSWORD": "${CALDAV_PASSWORD}"
          }
        }
      }
    ]
  }
}
```

### Codex CLI — `~/.codex/config.toml`

Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.

```shell
# ~/.codex/config.toml
[mcp_servers.apple-calendar]
command = "npx"
args = [
  "-y",
  "caldav-mcp",
]
env = { CALDAV_URL = "${CALDAV_URL}", CALDAV_USERNAME = "${CALDAV_USERNAME}", CALDAV_PASSWORD = "${CALDAV_PASSWORD}" }
```

### Zed — `~/.config/zed/settings.json`

Zed calls them "context_servers". Settings live-reload on save.

```jsonc
{
  "context_servers": {
    "apple-calendar": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "caldav-mcp"
        ]
      },
      "env": {
        "CALDAV_URL": "${CALDAV_URL}",
        "CALDAV_USERNAME": "${CALDAV_USERNAME}",
        "CALDAV_PASSWORD": "${CALDAV_PASSWORD}"
      }
    }
  }
}
```

### ChatGPT — `ChatGPT → Apps directory`

Apple Calendar (CalDAV) doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.

```none

```

## At a glance

- **Maintainer:** Community
- **Transport:** stdio
- **Auth model:** API key
- **Required secrets:** CALDAV_URL, CALDAV_USERNAME, CALDAV_PASSWORD
- **Supported clients:** Claude, Cursor, Any MCP-compatible client
- **License:** MIT
- **Language:** TypeScript
- **Latest version:** latest
- **Last verified:** 2026-05-26
- **Score:** 53/100 (rubric 2026-04 — see https://top-mcps.com/about/methodology)
- **Source:** https://github.com/dwain-barnes/caldav-mcp

## Security & scope

- **Access scope:** read-write
- **Sandbox:** Connects to a CalDAV endpoint over HTTPS with username/password (app-specific for iCloud).
- **Gotchas:**
  - Credentials sit in MCP env vars; rotate app-specific passwords if leaked.
  - CalDAV does not have fine-grained scopes — credentials unlock all calendars.

## Quick answer

**What it does.** Provides MCP tools for CalDAV calendar discovery, event CRUD, and timezone-aware querying against iCloud and other CalDAV providers.

**Best for:**
- iCloud calendar access
- Self-hosted CalDAV setups
- Local-only calendar workflows
- Privacy-conscious scheduling

**Not for:**
- Google Workspace primary surfaces
- Workflows with complex invitee status tracking

## Description

The Apple Calendar MCP speaks CalDAV against iCloud and any compatible calendar server (Fastmail, mailbox.org, self-hosted Radicale). The agent can list calendars, query upcoming events, create new ones, and update or delete existing entries.

## Why it matters

Apple Calendar is the default for tens of millions of macOS and iOS users and has no official API. CalDAV is the working standard for talking to it; the MCP wrapper exposes that to agents without the user writing protocol code.

## Key features

- CalDAV protocol
- iCloud and Fastmail support
- Timezone handling
- Recurring-event reads
- Event CRUD

## FAQ

### Do I need an app-specific password for iCloud?

Yes. iCloud requires an app-specific password generated at appleid.apple.com. Your regular password will not work.

### Does it support recurring events?

Read yes — recurring rules are returned with each occurrence. Creating recurring events is supported but limited; complex RRULE patterns are best authored in the Calendar app.

### Will it work with Fastmail?

Yes — Fastmail supports CalDAV at `https://caldav.fastmail.com`. Configure the URL and credentials accordingly.

## Changelog

- **2026-05-26** — Refreshed install snippets and fact sheet; verified for 2026.
- **2025-02-25** — Initial directory listing.
