LABSCO SUMMARY
Choosing the calendar per event is what makes the Google trick work.
Because you can name the target calendar on creation, a Google Calendar synced into iCloud is writable through the same path — no second integration. The permission step is the one that catches people: start the client from the terminal once, or macOS never asks and nothing works.
What it is
A server over the macOS Calendar app, so events can be created, read and changed in conversation.
What you get
- Event creation with a custom calendar, location, notes, reminders and recurrence
- Schedule queries — what is on next week, and where the free slots are for a meeting of a given length
- Updates to an existing event: time and date, which calendar it lives in, location, notes, reminder timing and the recurrence pattern
- A list of your available calendars
- Google Calendar reachable too, when it is synced into iCloud — name the Google calendar when creating the event
Requirements
macOS with the Calendar app configured, the uv package manager, and an MCP client. Clone and uv sync, then point the client at the project directory. One critical step: launch Claude from the terminal the first time, because launching from Finder never triggers the macOS calendar permission prompt. Known rough edges: unusual recurrence patterns are not always set correctly, and reminder timing on recurring all-day events can be off by a day.
Setup effort
Build from source — git clone https://github.com/Omar-V2/mcp-ical.git
USE CASES
01
Booking something while you are still talking about it
Say the time, place and who is coming, and the event exists.
02
Finding when you are actually free
Ask for a two-hour window next Tuesday and get the open slots back.
03
Setting up a weekly recurring meeting
Describe the pattern and the reminder lead time in one sentence.
04
Moving a meeting
Change the time on an existing event rather than deleting and recreating it.
BEFORE YOU INSTALL
What to know first
Requires
- macOS with the Calendar app configured
- uv on PATH
- Python 3.12 or later
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
TERMINAL
git clone https://github.com/Omar-V2/mcp-ical.git
cd mcp-ical
uv syncMCP Clients
Claude Desktop
<YOUR_PATH_TO_PARENT_FOLDER_MCP_ICAL> is the full path of the mcp-ical folder you cloned. Create or edit ~/Library/Application Support/Claude/claude_desktop_config.json:
CLAUDE DESKTOP · JSON
{
"mcpServers": {
"mcp-ical": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_PARENT_FOLDER_MCP_ICAL>",
"run",
"mcp-ical"
]
}
}
}Then quit Claude and launch it from the terminal with /Applications/Claude.app/Contents/MacOS/Claude — launching from Finder never triggers the macOS calendar permission prompt, which appears the first time you use a calendar command.