MCP iCal Server
Agent-powered calendar management for macOS that transforms natural language into calendar operations through a single MCP tool interface.
README
MCP iCal Server
<div align="center">
🗓️ Agent-Powered Calendar Management for macOS
</div>
This project is based on Omar-V2/mcp-ical with a reimplemented user interaction layer using an agent-based approach.
🌟 Overview
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:
- 🧠 Single Tool Interface: Just one MCP tool (
send_to_calendar_agent) that delegates to a specialized calendar agent - 🤖 Stateful Conversations: The agent maintains context between requests in the same session
- 🔄 Zero-Config Operation: Natural language processing handled automatically by the specialized agent
You: "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"
✨ 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:
"Move tomorrow's team meeting to 3 PM instead"
↓
✨ 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
- OpenAI API key (set as
OPENAI_API_KEYenvironment variable)
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/yourusername/mcp-ical.git
cd mcp-ical
# Install dependencies
uv sync
- Configure Claude for Desktop with API Key
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"
}
}
}
}
- 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.
/Applications/Claude.app/Contents/MacOS/Claude
- 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
🧠 How It Works
This implementation uses a unique architecture:
- A single MCP tool (
send_to_calendar_agent) is exposed to the client - When invoked, this tool passes the request to a specialized calendar agent built with the OpenAI Agent SDK
- The agent processes the natural language request and calls the appropriate calendar operations
- Results are formatted and returned to the client
This approach offers several advantages:
- Simplified client integration: Only one tool to invoke
- Improved context handling: The agent maintains conversation state
- More natural interactions: The specialized agent understands calendar-specific terminology and intent
❓ How This Project Differs From The Original
This implementation maintains much of the core calendar functionality from Omar-V2/mcp-ical but completely reimplements the user interaction layer:
- Single Entry Point: Instead of exposing multiple MCP tools directly to the client, we've implemented a single entry point that delegates to an OpenAI-powered agent
- Agent-Based Processing: Added an OpenAI Agent to handle natural language understanding and translation to calendar operations
- Stateful Conversations: Added conversation context tracking between requests in the same session
- Simplified Client Integration: Clients only need to know about one tool instead of multiple calendar operations
The core calendar operations (event creation, listing, etc.) and macOS integration remain largely unchanged from the original implementation.
🐛 Known Issues
Recurring Events
- Non-standard recurring schedules may not always be set correctly
- Better results with more powerful LLM models
- Reminder timing for recurring all-day events may be off by one day
🤝 Contributing
Feedback and contributions are welcomed! 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
- Original Project: Based on Omar-V2/mcp-ical by Omar-V2
- Built with Model Context Protocol
- Calendar integration built with PyObjC
- Agent capabilities powered by OpenAI Agent SDK
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。