Apple Calendar MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
cd ~/mcp-servers/calendar
npm install
npm run build
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add apple-calendar -- node "<FULL_PATH_TO_APPLE_CALENDAR_MCP>/dist/index.js"

Replace <FULL_PATH_TO_APPLE_CALENDAR_MCP>/dist/index.js with the actual folder you prepared in step 1.

README.md

Full access to Apple Calendar for smart scheduling and management

Apple Calendar MCP Server

Note: This MCP server requires macOS with Apple Calendar.

A Model Context Protocol (MCP) server that provides Claude with full access to Apple Calendar for smart scheduling, calendar management, and time management assistance.

Features

Calendar Management

  • list_calendars - List all available calendars
  • create_calendar - Create new calendars
  • delete_calendar - Delete calendars
  • rename_calendar - Rename existing calendars

Event Operations

  • create_event - Create events with natural language date parsing
    • Supports "tomorrow at 3pm", "next Friday", "in 2 hours", etc.
  • list_events - List events in a specific calendar
  • list_all_events - List events across all calendars
  • search_events - Search for events by keyword (searches title, location, description)
  • update_event - Update event properties
  • delete_event - Delete events
  • move_event - Move events between calendars

Smart Scheduling

  • find_free_time - Find available time slots
    • Optional business hours filter (9am-5pm)
  • check_conflicts - Check for scheduling conflicts
  • suggest_optimal_time - AI-powered time suggestions with preferences

Templates

  • create_template - Save event configurations as reusable templates
  • use_template - Create events from templates
  • list_templates - View all saved templates
  • delete_template - Remove templates

Analytics

  • analyze_schedule - Get insights on:
    • Meeting density (meetings per day)
    • Total time spent in meetings
    • Daily breakdown of schedule

Installation

Prerequisites

  • macOS (required for Apple Calendar)
  • Node.js 20+ and npm
  • Apple Calendar app
  • Claude Code CLI

Setup

  1. Clone/Install the server:

    cd ~/mcp-servers/calendar
    npm install
    npm run build
    
  2. Grant Calendar Access:

    • System Preferences > Security & Privacy > Privacy > Automation
    • Enable Terminal (or your terminal app) to control Calendar
  3. Configure Claude Code:

    The server is already configured in: ~/Library/Application Support/Claude/claude_desktop_config.json

    {
      "mcpServers": {
        "apple-calendar": {
          "command": "node",
          "args": [
            "/path/to/apple-calendar-mcp/dist/index.js"
          ]
        }
      }
    }
    
  4. Restart Claude Code:

    The server will auto-start when Claude Code launches.

Usage Examples

Basic Calendar Operations

"List my calendars"
"Create a calendar called Work"
"Rename the Work calendar to Office"
"Delete the Test calendar"

Creating Events

"Create an event 'Team Meeting' tomorrow at 2pm in the life calendar"
"Schedule 'Dentist Appointment' next Tuesday at 10am with 1 hour duration"
"Add 'Coffee with Sarah' at 3pm today at Starbucks"

Natural Language Date Parsing

The server understands:

  • "tomorrow at 3pm"
  • "next Friday"
  • "in 2 hours"
  • "Jan 15 at 10:30am"
  • "this weekend"

Smart Scheduling

"Find free time tomorrow for a 1 hour meeting"
"Check if I'm free Friday at 3pm"
"Suggest the best time for a meeting next week, I prefer mornings"
"Find free time during business hours only"

Searching Events

"Search for 'dentist' events this month"
"Find all events with 'meeting' in the title from last week"
"Search for events at 'Starbucks' this year"

Using Templates

"Create a template called 'standup' with 15 minute duration"
"Schedule a standup meeting from template tomorrow at 9am"
"List all my templates"

Analytics

"Analyze my schedule for this week"
"Show insights for next week"
"How busy am I this month?"

Architecture

~/mcp-servers/calendar/
├── src/
│   ├── index.ts                 # Entry point
│   ├── server.ts                # MCP server with all tools
│   ├── applescript/
│   │   ├── bridge.ts            # AppleScript execution wrapper
│   │   ├── calendar-ops.ts      # Calendar CRUD operations
│   │   └── event-ops.ts         # Event CRUD operations
│   ├── utils/
│   │   ├── date-parser.ts       # Natural language date parsing (chrono-node)
│   │   └── conflict-detector.ts # Conflict detection & free time finding
│   └── storage/
│       └── database.ts          # SQLite for templates & history
├── storage/
│   └── calendar.db              # SQLite database (auto-created)
└── dist/                        # Compiled JavaScript

Technical Details

Natural Language Processing

  • Uses chrono-node for parsing natural language dates
  • Supports relative dates, absolute dates, and common phrases
  • Automatically handles time zones and ambiguity

Appl

Tools (19)

list_calendarsList all available calendars
create_calendarCreate new calendars
delete_calendarDelete calendars
rename_calendarRename existing calendars
create_eventCreate events with natural language date parsing
list_eventsList events in a specific calendar
list_all_eventsList events across all calendars
search_eventsSearch for events by keyword
update_eventUpdate event properties
delete_eventDelete events
move_eventMove events between calendars
find_free_timeFind available time slots
check_conflictsCheck for scheduling conflicts
suggest_optimal_timeAI-powered time suggestions with preferences
create_templateSave event configurations as reusable templates
use_templateCreate events from templates
list_templatesView all saved templates
delete_templateRemove templates
analyze_scheduleGet insights on meeting density and time spent

Configuration

claude_desktop_config.json
{"mcpServers": {"apple-calendar": {"command": "node", "args": ["/path/to/apple-calendar-mcp/dist/index.js"]}}}

Try it

Create an event 'Team Meeting' tomorrow at 2pm in the work calendar.
Find free time tomorrow for a 1 hour meeting during business hours.
Analyze my schedule for this week and tell me how busy I am.
Suggest the best time for a meeting next week, I prefer mornings.
Search for all events with 'dentist' in the title this month.

Frequently Asked Questions

What are the key features of Apple Calendar?

Natural language event creation and date parsing. Smart scheduling with conflict detection and optimal time suggestions. Reusable event templates for recurring tasks. Schedule analytics including meeting density and time tracking. Full CRUD operations for calendars and events.

What can I use Apple Calendar for?

Automating the scheduling of recurring meetings using templates. Quickly finding free time slots for new appointments without manual calendar checking. Analyzing weekly meeting load to improve time management. Managing multiple calendars through natural language commands.

How do I install Apple Calendar?

Install Apple Calendar by running: cd ~/mcp-servers/calendar && npm install && npm run build

What MCP clients work with Apple Calendar?

Apple Calendar works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Apple Calendar docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare