Control Apple Calendar with Natural Language
MCP connector for natural-language macOS Calendar management: create, reschedule, and query events including via Google sync.
Maintainer of this project? Claim this page to edit the listing.
1.0.0Add to Favorites
Why it matters
Interact with your macOS Calendar using natural language. Create, modify, and manage events, schedules, and find available time slots effortlessly.
Outcomes
What it gets done
Create events with natural language input, including location and notes.
Manage schedules, set recurring events, and smart reminders.
Check availability for new meetings.
Update and modify existing calendar entries.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-apple-calendar | bash Capabilities
Tools your agent gets
Create a calendar event using natural language with support for location, notes, reminders, and recurring patterns.
Update and modify existing calendar events with smart change detection.
View calendar schedule for a specified time period.
Find available time slots for scheduling meetings of specified duration.
View all available calendars including iCloud and synced Google Calendar.
Overview
Apple Calendar MCP Server
An MCP connector for macOS Calendar enabling natural-language event creation, schedule queries, availability search, and event updates. Use it when you want to manage macOS Calendar conversationally through Claude, including calendars synced from Google.
What it does
This MCP server turns the native macOS Calendar app into a conversational tool via natural language, using PyObjC to interact with Calendar directly. It creates events from plain-language descriptions (with custom calendar selection, location, notes, smart reminders, and recurring patterns), answers schedule queries ("what's on my calendar next week") with smart formatting, finds available time slots for a meeting of a given length, updates existing events naturally (rescheduling time/date, changing calendar, updating location or notes, adjusting reminders or recurrence), and lists all available calendars with smart suggestions. Because it can target any calendar by name, if a Google Calendar is synced into iCloud Calendar, this server can create and modify events in that Google Calendar too by specifying it as the target.
When to use - and when NOT to
Use this connector when you want to manage your macOS Calendar conversationally - creating a detailed or recurring event from a natural-language description, checking your schedule for an upcoming period, finding open time slots for a meeting, rescheduling or updating an existing event, or creating an event in a specific calendar (including a Google Calendar synced via iCloud).
It requires macOS with the Calendar app configured, and Claude Desktop must be launched from the terminal the first time so macOS properly prompts for calendar access - launching from Finder will not trigger that permission prompt. Non-standard recurring schedules may not always set correctly, and results are noted to be better with more capable models.
Capabilities
- Event creation: create events from natural language with calendar selection, location, notes, smart reminders, and recurrence patterns
- Schedule queries: answer natural-language questions about upcoming events with clean formatting
- Availability finding: identify open time slots of a specified duration within a date range
- Event updates: reschedule, move between calendars, update location/notes/reminders, or change recurrence patterns for existing events
- Calendar listing: view all available calendars, including any Google Calendar synced via iCloud
How to install
Clone the repository, install with uv, and configure Claude Desktop to run it, then launch Claude from the terminal so macOS prompts for calendar permission:
git clone https://github.com/Omar-V2/mcp-ical.git
cd mcp-ical
uv sync
{
"mcpServers": {
"mcp-ical": {
"command": "uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp-ical", "run", "mcp-ical"]
}
}
}
Then launch Claude via /Applications/Claude.app/Contents/MacOS/Claude from the terminal (not from Finder) so the calendar access permission prompt appears.
Who it's for
macOS users who want to create, query, and update Calendar events conversationally through Claude instead of clicking through the Calendar app's UI.
Source README
MCP iCal Server
π Overview
Transform how you interact with your macOS calendar using natural language! The mcp-ical server leverages the Model Context Protocol (MCP) to turn your calendar management into a conversational experience.
You: "What's my schedule for next week?"
Claude: "Let me check that for you..."
[Displays a clean overview of your upcoming week]
You: "Add a lunch meeting with Sarah tomorrow at noon"
Claude: "β¨ π
Created: Lunch with Sarah Tomorrow, 12:00 PM"
β¨ Features
π Event Creation
Transform natural language into calendar events instantly!
"Schedule a team lunch next Thursday at 1 PM at Bistro Garden"
β
π Created: Team Lunch
π
Thursday, 1:00 PM
π Bistro Garden
Supported Features
- Custom calendar selection
- Location and notes
- Smart reminders
- Recurring events
Power User Examples
π Recurring Events:
"Set up my weekly team sync every Monday at 9 AM with a 15-minute reminder"
π Detailed Events:
"Schedule a product review meeting tomorrow from 2-4 PM in the Engineering calendar,
add notes about reviewing Q1 metrics, and remind me 1 hour before"
π± Multi-Calendar Support:
"Add a dentist appointment to my Personal calendar for next Wednesday at 3 PM"
π Smart Schedule Management & Availability
Quick access to your schedule with natural queries:
"What's on my calendar for next week?"
β
π Shows your upcoming events with smart formatting
"When am I free to schedule a 2-hour meeting next Tuesday?"
β
π Available time slots found:
β’ Tuesday 10:00 AM - 12:00 PM
β’ Tuesday 2:00 PM - 4:00 PM
βοΈ Intelligent Event Updates
Modify events naturally:
Before: "Move tomorrow's team meeting to 3 PM instead"
β
After: β¨ Meeting rescheduled to 3:00 PM
Update Capabilities
- Time and date modifications
- Calendar transfers
- Location updates
- Note additions
- Reminder adjustments
- Recurring pattern changes
π Calendar Management
- View all available calendars
- Smart calendar suggestions
- Seamless Google Calendar integration when configured with iCloud
π‘ Pro Tip: Since you can create events in custom calendars, if you have your Google Calendar synced with your iCloud Calendar, you can use this MCP server to create events in your Google Calendar too! Just specify the Google calendar when creating/updating events.
π Quick Start
π‘ Note: While these instructions focus on setting up the MCP server with Claude for Desktop, this server can be used with any MCP-compatible client. For more details on using different clients, see the MCP documentation.
Prerequisites
- uv package manager
- macOS with Calendar app configured
- An MCP client - Claude for desktop is recommended
Installation
Whilst this MCP server can be used with any MCP compatible client, the instructions below are for use with Claude for desktop.
Clone and Setup
# Clone the repository git clone https://github.com/Omar-V2/mcp-ical.git cd mcp-ical # Install dependencies uv syncConfigure Claude for Desktop
Create or edit
~/Library/Application\ Support/Claude/claude_desktop_config.json:{ "mcpServers": { "mcp-ical": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp-ical", "run", "mcp-ical" ] } } }Launch Claude for Calendar Access
β οΈ Critical: Claude must be launched from the terminal to properly request calendar permissions. Launching directly from Finder will not trigger the permissions prompt.
Run the following command in your terminal.
/Applications/Claude.app/Contents/MacOS/Claudeβ οΈ Warning: Alternatively, you can manually grant calendar access, but this involves modifying system files and should only be done if you understand the risks involved.
Start Using!
Try: "What's my schedule looking like for next week?"
π Note: When you first use a calendar-related command, macOS will prompt for calendar access. This prompt will only appear if you launched Claude from the terminal as specified above.
π§ͺ Testing
β οΈ Warning: Tests will create temporary calendars and events. While cleanup is automatic, only run tests in development environments.
# Install dev dependencies
uv sync --dev
# Run test suite
uv run pytest tests
π Known Issues
Recurring Events
- Non-standard recurring schedules may not always be set correctly
- Better results with Claude 3.5 Sonnet compared to Haiku
- Reminder timing for recurring all-day events may be off by one day
π€ Contributing
Feedback and contributions are welcome. Here's how you can help:
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
- Built with Model Context Protocol
- macOS Calendar integration built with PyObjC
FAQ
Common questions
Discussion
Questions & comments Β· 0
Sign In Sign in to leave a comment.