# iCloud Calendar (CalDAV) (pypi · mcp-icloud-caldav)

iCloud Calendar over CalDAV: list, create, update, move and delete events. Optional read-only mode.

- Trust score: 53/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-17

## Components

- pypi · `mcp-icloud-caldav`: 53/100 (this document), [markdown](https://verifymcp.io/servers/glob0x17-mcp-icloud-caldav/mcp-icloud-caldav.md), [page](https://verifymcp.io/servers/glob0x17-mcp-icloud-caldav/mcp-icloud-caldav)

## Channel facts

- Registry: `pypi`
- Package: `mcp-icloud-caldav`
- Version: `0.2.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-17.

- **Supply Chain Security**: 49/100
  - Malware scan not yet available for this package.
  - Known CVEs were checked across the 56 of 57 dependencies we could resolve, so this covers what we could see, not the whole tree.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - Dependency health was assessed across the 56 of 57 dependencies we could resolve, so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 5 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1296 tokens (~185/item across 7 items; 6 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the iCloud Calendar (CalDAV) MCP server?

iCloud Calendar (CalDAV) runs locally as a PyPI package, launched with uvx mcp-icloud-caldav. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add glob0x17-mcp-icloud-caldav -- uvx mcp-icloud-caldav
```

### Cursor

```json
{
  "mcpServers": {
    "glob0x17-mcp-icloud-caldav": {
      "command": "uvx",
      "args": [
        "mcp-icloud-caldav"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "glob0x17-mcp-icloud-caldav": {
      "command": "uvx",
      "args": [
        "mcp-icloud-caldav"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add glob0x17-mcp-icloud-caldav -- uvx mcp-icloud-caldav
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "glob0x17-mcp-icloud-caldav": {
      "type": "local",
      "command": [
        "uvx",
        "mcp-icloud-caldav"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add glob0x17-mcp-icloud-caldav --command uvx --arg mcp-icloud-caldav
```

### Hermes

```yaml
mcp_servers:
  glob0x17-mcp-icloud-caldav:
    command: "uvx"
    args: ["mcp-icloud-caldav"]
```

### Netclaw

```json
{
  "McpServers": {
    "glob0x17-mcp-icloud-caldav": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "mcp-icloud-caldav"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add glob0x17-mcp-icloud-caldav -t stdio -c uvx -a mcp-icloud-caldav
```

### Other

```json
{
  "mcpServers": {
    "glob0x17-mcp-icloud-caldav": {
      "command": "uvx",
      "args": [
        "mcp-icloud-caldav"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-17 (score 53, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-16 (score 68, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-15 (score 53, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-14 (score 68, +44)

- [security improvement] Malware scan: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional] First check of Tool coverage: 0
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: fail
- [functional] First check of Destructive annotations: 100
- [functional] First check of Schema quality: good
- [functional] First check of Tool coverage: 100

### 2026-10-13 (score 24, +11)

- [security improvement] Known CVEs: unverified → partial
- [functional improvement] Dependency health: unverified → partial

### 2026-10-12 (score 13)

First indexed and scored.

## MCP tools (6)

### `list_calendars` (~15 tokens)

List all available calendars.

Output parameters:

- `result` (string)

### `list_events` (~163 tokens)

List calendar events in a date range.

The start_date should always use the time such that it represents the beginning of that day (00:00:00).
The end_date should always use the time such that it represents the end of that day (23:59:59).
This way, range based searches are always inclusive and can locate all events in that date range.

Args:
    start_date: Start date in ISO8601 format (YYYY-MM-DDT00:00:00).
    end_date: Optional end date in ISO8601 format (YYYY-MM-DDT23:59:59).
    calendar_name: Optional calendar name to filter by

Input parameters:

- `calendar_name`
- `end_date` (string, required)
- `start_date` (string, required)

Output parameters:

- `result` (string)

### `debug_calendar_connection` (~58 tokens)

Debug calendar connection and provide detailed diagnostic information.

This tool helps diagnose why events might not be showing up.
It will test:
1\. CalDAV connection status
2\. Calendar accessibility
3\. Event search capabilities
4\. Recent events count

Output parameters:

- `result` (string)

### `create_event` (~473 tokens)

Create a new calendar event.

Before using this tool, make sure to:
1\. Ask the user which calendar they want to use if not specified (check calendars://list)
2\. Ask if they want to add a location if none provided
3\. Ask if they want to add any notes/description if none provided
4\. Confirm the date and time with the user
5\. Ask if they want to set reminders for the event

Args:
    title: Event title
    start_time: Start time in ISO format (YYYY-MM-DDTHH:MM:SS)
    end_time: End time in ISO format (YYYY-MM-DDTHH:MM:SS)
    notes: Optional event notes/description. Ask user if they want to add notes.
    location: Optional event location. Ask user if they want to specify a location.
    calendar_name: Optional calendar name. Ask user which calendar to use, referencing calendars://list.
    all_day: Whether this is an all-day event
    reminder_offsets: List of minutes before the event to trigger reminders            e.g. [60, 1440] means two reminders, the first 24 hours before the event and the second one hour before.
    recurrence_rule: Optional recurrence rule for the event. This should be an instance of `RecurrenceRule` with the following fields:
        - frequency: Frequency of the recurrence (e.g., DAILY, WEEKLY, MONTHLY, YEARLY).
        - interval: Interval between recurrences (e.g., every 2 weeks).
        - end_date: Optional end date for the recurrence. If specified, the recurrence will stop on this date.
        - occurrence_count: Optional number of occurrences. If specified, the recurrence will stop after this many occurrences.
        - days_of_week: Optional list of weekdays for the event. Use integers to represent days:
            - Sunday: 1
            - Monday: 2
            - Tuesday: 3
            - Wednesday: 4
            - Thursday: 5
            - Friday: 6
            - Saturday: 7

Note: Both `end_date` and `occurrence_count` should not be set simultaneously; choose one or the other, or leave both unset.

Input parameters:

- `create_event_request` (required)

Output parameters:

- `result` (string)

### `update_event` (~486 tokens)

Update an existing calendar event.

Before using this tool, make sure to:
1\. Ask the user which fields they want to update
2\. If moving to a different calendar, verify the calendar exists using calendars://list
3\. If updating time, confirm the new time with the user
4\. Ask if they want to add/update location if not specified
5\. Ask if they want to add/update notes if not specified
6\. Ask if they want to set reminders for the event

Args:
    event_id: Unique identifier of the event to update
    title: Optional new title
    start_time: Optional new start time in ISO format
    end_time: Optional new end time in ISO format
    notes: Optional new notes/description. Ask user if they want to update notes.
    location: Optional new location. Ask user if they want to specify/update location.
    calendar_name: Optional new calendar. Ask user which calendar to use, referencing calendars://list.
    all_day: Optional all-day flag
    reminder_offsets: List of minutes before the event to trigger reminders            e.g. [60, 1440] means two reminders, the first 24 hours before the event and the second one hour before.
    recurrence_rule: Optional recurrence rule for the event. This should be an instance of `RecurrenceRule` with the following fields:
        - frequency: Frequency of the recurrence (e.g., DAILY, WEEKLY, MONTHLY, YEARLY).
        - interval: Interval between recurrences (e.g., every 2 weeks).
        - end_date: Optional end date for the recurrence. If specified, the recurrence will stop on this date.
        - occurrence_count: Optional number of occurrences. If specified, the recurrence will stop after this many occurrences.
        - days_of_week: Optional list of weekdays for the event. Use integers to represent days:
            - Sunday: 1
            - Monday: 2
            - Tuesday: 3
            - Wednesday: 4
            - Thursday: 5
            - Friday: 6
            - Saturday: 7

Note: Both `end_date` and `occurrence_count` should not be…

Input parameters:

- `event_id` (string, required)
- `update_event_request` (required)

Output parameters:

- `result` (string)

### `delete_event` (~82 tokens)

Delete a calendar event by its identifier.

Before using this tool, make sure to:
1\. Confirm with the user that they want to delete the event
2\. Verify the event exists by listing events first
3\. Note that this action cannot be undone

Args:
    event_id: Unique identifier of the event to delete

Input parameters:

- `event_id` (string, required)

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/glob0x17-mcp-icloud-caldav/mcp-icloud-caldav#diagnostics

## Score history

- 2026-10-17: 53
- 2026-10-16: 68
- 2026-10-15: 53
- 2026-10-14: 68
- 2026-10-13: 24
- 2026-10-12: 13

## Common questions

### What is the iCloud Calendar (CalDAV) MCP server?

iCloud Calendar (CalDAV) is an MCP server listed in the public MCP registry as io.github.Glob0x17/mcp-icloud-caldav. iCloud Calendar over CalDAV: list, create, update, move and delete events. Optional read-only mode. This page covers its PyPI package (mcp-icloud-caldav).

### Is the iCloud Calendar (CalDAV) MCP server safe to use?

iCloud Calendar (CalDAV) scores 53 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the iCloud Calendar (CalDAV) MCP server expose?

iCloud Calendar (CalDAV) exposes 6 tools: list_calendars, list_events, debug_calendar_connection, create_event, update_event, delete_event. Their descriptions and schemas cost roughly 1,277 tokens of context every time the server is loaded.

### Is the iCloud Calendar (CalDAV) MCP server still maintained?

iCloud Calendar (CalDAV) is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the iCloud Calendar (CalDAV) MCP server under?

iCloud Calendar (CalDAV) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/mcp-icloud-caldav/
- Socket report: https://socket.dev/pypi/package/mcp-icloud-caldav
- Repository: https://github.com/Glob0x17/mcp-icloud-caldav
- Changelog RSS feed: https://verifymcp.io/servers/glob0x17-mcp-icloud-caldav/mcp-icloud-caldav.xml
- Changelog JSON feed: https://verifymcp.io/servers/glob0x17-mcp-icloud-caldav/mcp-icloud-caldav.json
- HTML version of this page: https://verifymcp.io/servers/glob0x17-mcp-icloud-caldav/mcp-icloud-caldav
