by Omar-V2
Interact with the macOS Calendar through natural‑language commands, enabling creation, querying, and updating of events in a conversational way.
MCP iCal Server bridges natural language input and the native macOS Calendar app. By speaking or typing plain‑English commands, users can create, view, modify, and delete calendar events without manually navigating the UI.
uv sync
.mcp-ical
in Claude’s claude_desktop_config.json
(or any MCP‑compatible client) pointing to the command uv run mcp-ical
.Q: Do I need special permissions?\nA: Yes. Launch the MCP client (e.g., Claude) from the terminal; macOS will ask to grant Calendar access.
Q: What if I prefer a different MCP client?\nA: Add the same server entry (command
: uv
, args
: ["run", "mcp-ical"]
) to the client’s configuration file.
Q: How are recurring events handled?\nA: Most standard recurrences work; complex patterns may require manual adjustment. Results are better with Claude 3.5 Sonnet.
Q: Can I run tests safely?\nA: Yes. Tests create temporary calendars/events and clean up automatically, but run them only in a development environment.
Q: Is there a Node.js version?\nA: Currently the server is Python‑based and uses uv
for dependency management.
🗓️ Natural Language Calendar Management for macOS
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"
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:
Before: "Move tomorrow's team meeting to 3 PM instead"
↓
After: ✨ 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.
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 sync
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"
]
}
}
}
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.
⚠️ 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
Feedback and contributions are welcome. Here's how you can help:
This project is licensed under the MIT License - see the LICENSE file for details.
Please log in to share your review and rating for this MCP.
{ "mcpServers": { "mcp-ical": { "command": "uv", "args": [ "run", "mcp-ical" ], "env": {} } } }
Explore related MCPs that share similar capabilities and solve comparable challenges
by mattt
Enables AI assistants to retrieve and manage personal macOS data such as calendar events, contacts, messages, reminders, location, maps, and weather through a local MCP server, allowing personalized AI interactions without sending data off‑device.
by nspady
Provides Google Calendar integration for AI assistants, enabling event listing, creation, updating, deletion, free/busy queries, recurring event handling, and smart scheduling via natural language.
by baidu-maps
Offers a comprehensive suite of geospatial APIs and tools for developers and AI agents, enabling geocoding, reverse geocoding, POI search, route planning, weather, traffic, IP location, and real‑time traffic queries via standardized MCP interfaces.
by GongRzhe
Enables LLMs to perform travel-related tasks such as location search, place details lookup, route calculation, and timezone retrieval using Google Maps services.
by zcaceres
Integrates with Google Tasks to list, read, search, create, update, and delete tasks via MCP tools.
by v-3
Interact with Google Calendar to list, create, update, delete events and find free time slots via Claude.
by r-huijts
Provides real-time Dutch railway travel information—including departures, arrivals, journey planning, pricing, and station facilities—through an MCP server that Claude can query.
by TimLukaHorstmann
Provides hourly and daily weather forecasts via the AccuWeather API for Model Context Protocol (MCP) integration with language models.
by isdaniel
Provides current weather, historical weather ranges, and timezone‑aware current datetime for specified cities using the free Open‑Meteo API.