Skip to main content

A Model Context Protocol server providing tools for CRUD operations for the mac-os calendar

Project description

MCP iCal Server

🗓️ Natural Language Calendar Management for macOS

MIT License Python 3.12+ MCP Compatible

🌟 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

Installation

Whilst this MCP server can be used with any MCP compatible client, the instructions below are for use with Claude for desktop.

  1. Clone and Setup

    # Clone the repository
    git clone https://github.com/Omar-V2/mcp-ical.git
    cd mcp-ical
    
    # Install dependencies
    uv sync
    
  2. Configure 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"
                ]
            }
        }
    }
    
  3. 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.

  4. 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:

  1. Fork the repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Open a Pull Request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mseep_mcp_ical-0.1.1.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mseep_mcp_ical-0.1.1-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file mseep_mcp_ical-0.1.1.tar.gz.

File metadata

  • Download URL: mseep_mcp_ical-0.1.1.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for mseep_mcp_ical-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7898b2b026a60286e72e34240238e15e2a101b6ddb27568fb1587f57b06deabf
MD5 281cd1bf772744c806ccb73049847294
BLAKE2b-256 b8b9b8aa56901b5ed6cd1cf06ab18714bfd1c818a37f13e779409820ce66b7a6

See more details on using hashes here.

File details

Details for the file mseep_mcp_ical-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mseep_mcp_ical-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for mseep_mcp_ical-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a4507cc8b97328ee71da4faccd8a4d08c4951a47ce54d628c8a018c67c6d4df5
MD5 f63839590487765127f0a2d64e8d3cf8
BLAKE2b-256 b51ad8b7b8b2c6ae7802bcd3bcb087dc3b0dd1d8c7a49ec8e1a38ccc8654ea5f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page