Agent-powered calendar management for macOS that transforms natural language into calendar operations through a single MCP tool interface.
๐๏ธ Agent-Powered Calendar Management for macOS
This project is based on Omar-V2/mcp-ical with a reimplemented user interaction layer using an agent-based approach.
Transform how you interact with your macOS calendar using a dedicated AI agent! This MCP iCal server leverages the OpenAI Agent SDK to provide a single, powerful entry point for all your calendar operations.
Unlike traditional MCP implementations that expose multiple tools, this server uses an agent-based approach:
send_to_calendar_agent
) that delegates to a specialized calendar agentYou: "What's my schedule for next week?"
Claude: "Let me check that for you..."
[Calendar agent processes request and returns clean schedule]
You: "Add a lunch meeting with Sarah tomorrow at noon"
Claude: "Event created: Lunch with Sarah, tomorrow at 12:00 PM"
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
๐ 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"
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
Modify events naturally:
"Move tomorrow's team meeting to 3 PM instead"
โ
โจ Meeting rescheduled to 3:00 PM
๐ก 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.
๐ก 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.
OPENAI_API_KEY
environment variable)Whilst this MCP server can be used with any MCP compatible client, the instructions below are for use with Claude for desktop.
# Clone the repository git clone https://github.com/yourusername/mcp-ical.git cd mcp-ical # Install dependencies uv sync
Create or edit ~/Library/Application\ Support/Claude/claude_desktop_config.json
and include your OpenAI API key as an environment variable:
{ "mcpServers": { "mcp-ical": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp-ical", "run", "mcp-ical" ], "env": { "OPENAI_API_KEY": "your-api-key-here" } } } }
โ ๏ธ Critical: Claude must be launched from the terminal to properly request calendar permissions. Launching directly from Finder will not trigger the permissions prompt.
/Applications/Claude.app/Contents/MacOS/Claude
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.
โ ๏ธ 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
This implementation uses a unique architecture:
send_to_calendar_agent
) is exposed to the clientThis approach offers several advantages:
This implementation maintains much of the core calendar functionality from Omar-V2/mcp-ical but completely reimplements the user interaction layer:
The core calendar operations (event creation, listing, etc.) and macOS integration remain largely unchanged from the original implementation.
Feedback and contributions are welcomed! Here's how you can help:
This project is licensed under the MIT License - see the LICENSE file for details.
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!