# Apple Calendar

Connects macOS Calendar to MCP clients. It lets an AI assistant view schedules, book meetings, modify event details, and delete entries.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 31
- Author: JonathanRReed
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/JonathanRReed/Apple-MCPs/tree/HEAD/apple-calendar-mcp
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/mcp/apple-calendar

## What it does

This server gives your AI assistant access to the macOS Calendar application. The model can inspect your upcoming schedule, create appointments, edit existing entries, or clear cancelled meetings. You need macOS, Python 3.11+, and the `uv` package manager installed on your machine.

Communication works over standard input and output via `uvx apple-calendar-mcp`. Environment variables like `APPLE_CALENDAR_MCP_ALLOWED_CALENDARS` and `APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS` let you isolate specific calendars from read or write actions. Supplying a blank or invalid safety configuration automatically drops the connection into read-only mode.

Local execution does not prevent data leaks. The host MCP client forwards retrieved schedule information to its model provider, while macOS may also sync calendars via iCloud. You must also approve calendar access manually in macOS privacy settings. Without that permission, all event calls fail.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `APPLE_CALENDAR_MCP_SAFETY_MODE`, `APPLE_CALENDAR_MCP_ALLOWED_CALENDARS`, `APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> --env APPLE_CALENDAR_MCP_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS> --env APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS> --transport stdio apple-calendar-mcp -- uvx apple-calendar-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add apple-calendar-mcp --env APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> --env APPLE_CALENDAR_MCP_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS> --env APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS> -- uvx apple-calendar-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "apple-calendar-mcp": {
            "command": "uvx",
            "args": [
                "apple-calendar-mcp"
            ],
            "env": {
                "APPLE_CALENDAR_MCP_SAFETY_MODE": "<APPLE_CALENDAR_MCP_SAFETY_MODE>",
                "APPLE_CALENDAR_MCP_ALLOWED_CALENDARS": "<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS>",
                "APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS": "<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "apple-calendar-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "apple-calendar-mcp"
            ],
            "env": {
                "APPLE_CALENDAR_MCP_SAFETY_MODE": "<APPLE_CALENDAR_MCP_SAFETY_MODE>",
                "APPLE_CALENDAR_MCP_ALLOWED_CALENDARS": "<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS>",
                "APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS": "<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> -e APPLE_CALENDAR_MCP_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS> -e APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS> apple-calendar-mcp uvx apple-calendar-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>

## When to use it
- Check macOS calendar availability before scheduling a call
- Add new appointments with exact dates and titles
- Modify times or descriptions for existing meetings
- Remove cancelled events from selected calendars

## Example prompts
- Check my schedule in Calendar for tomorrow after 2 PM
- Add a 30-minute project sync to my work calendar on Friday at 11 AM
- Run calendar_health to confirm the integration has proper macOS permissions

## Similar
- [apple-calendar](https://affpapa.org/en/nevibecode/skills/apple-calendar.md) — skill · 726 installs
- [Apple Shortcuts Integration](https://affpapa.org/en/nevibecode/skills/apple-shortcuts-integration.md) — skill · 4700 installs
- [icloud-calendar-mcp](https://affpapa.org/en/nevibecode/mcp/icloud-calendar-mcp.md) — MCP server · ★ 23
- [Mac Shortcuts — read your Mac from any agent](https://affpapa.org/en/nevibecode/mcp/mac-shortcuts-read-your-mac-from-any-agent.md) — MCP server · ★ 14
- [intents-mcp](https://affpapa.org/en/nevibecode/mcp/intents-mcp.md) — MCP server · ★ 6
- [apple-launch-film](https://affpapa.org/en/nevibecode/skills/apple-launch-film.md) — skill · 1500 installs

## Other versions with the same name
- [Apple Calendar · mgcrea](https://affpapa.org/en/nevibecode/mcp/mgcrea-apple-calendar.md) — ★ 5

From the same set: [jonathanrreed/apple-mcps](https://affpapa.org/en/nevibecode/by/jonathanrreed/apple-mcps.md) — 11 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
