About
Eventkit — Model Context Protocol server
README
A Model Context Protocol (MCP) server that provides native integration with Apple's EventKit framework, allowing Claude to manage Reminders and Calendar events directly in macOS.
Features
Reminders
- Create reminders that appear instantly in Reminders.app
- List and search reminders with filters (completed, flagged, priority, date range)
- Complete reminders with a single command
- Update reminders (title, notes, due date, priority)
- List tags from your reminders (requires Full Disk Access)
Calendar Events
- List calendars available for events
- List events within a date range
- Create events with title, dates, location, notes
- Update events
- Delete events
Sync
- iCloud sync - changes sync automatically to all your Apple devices
Installation
Option 1: Installer Package (Recommended)
Download and run the .pkg installer:
# Build the installer (see Building the Installer below)
open dist/MCP-EventKit-Server-1.1.0.pkg
The installer will:
- Install the server binary to
/usr/local/lib/mcp-eventkit/ - Configure Claude Desktop automatically
- Install an uninstaller app in
/Applications/
Option 2: Manual Installation
- Clone the repository:
git clone https://github.com/yourusername/mcp-server-eventkit.git
cd mcp-server-eventkit
- Install dependencies:
bun install
- Build the Swift bridge:
bun run build
- Grant permissions when prompted (or manually in System Settings > Privacy & Security)
Requirements
- macOS 13.0 (Ventura) or later
- Bun runtime (for development only)
- Xcode Command Line Tools (for building from source)
Configuration
Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"eventkit": {
"command": "/usr/local/bin/mcp-eventkit"
}
}
}
Or for development:
{
"mcpServers": {
"eventkit": {
"command": "bun",
"args": ["run", "/absolute/path/to/mcp-server-eventkit/src/index.ts"]
}
}
}
Claude Code
claude mcp add --transport stdio --scope user eventkit -- /usr/local/bin/mcp-eventkit
Available Tools
Reminder Tools
| Tool | Description |
|---|---|
list_reminders |
List incomplete or completed reminders |
create_reminder |
Create a new reminder |
complete_reminder |
Mark a reminder as completed |
delete_reminder |
Delete a reminder permanently |
update_reminder |
Update reminder title, notes, due date, priority |
search_reminders |
Search reminders with text query and filters |
list_reminders_filtered |
List reminders with advanced filters |
toggle_flag |
Toggle the flagged status of a reminder |
list_calendars |
List all reminder lists/calendars |
list_tags |
List all tags from reminders (requires Full Disk Access) |
Calendar Event Tools
| Tool | Description |
|---|---|
list_event_calendars |
List all calendars available for events |
list_calendar_events |
List events within a date range |
create_calendar_event |
Create a new calendar event |
update_calendar_event |
Update an existing event |
delete_calendar_event |
Delete a calendar event |
Building the Installer
To create a distributable .pkg installer:
Prerequisites
- macOS with Xcode Command Line Tools
- Bun runtime
Build Steps
# 1. Install dependencies
bun install
# 2. Build the Swift bridge (creates libEventKitBridge.dylib)
./src/swift-bridge/build.sh
# 3. Compile standalone binary (bundles TypeScript into single executable)
bun build --compile --outfile build/mcp-eventkit src/index.ts
# 4. Build the .pkg installer
./installer/build-pkg.sh 1.1.0
The installer will be created at dist/MCP-EventKit-Server-1.1.0.pkg
Installer Contents
The .pkg installs:
| Component | Location |
|---|---|
| Server binary | /usr/local/lib/mcp-eventkit/mcp-eventkit |
| Swift library | /usr/local/lib/mcp-eventkit/libEventKitBridge.dylib |
| Symlink | /usr/local/bin/mcp-eventkit |
| Uninstaller | /Applications/Uninstall MCP EventKit.app |
Signing (Optional)
To sign the package for distribution:
productsign --sign "Developer ID Installer: Your Name" \
dist/MCP-EventKit-Server-1.1.0.pkg \
dist/MCP-EventKit-Server-1.1.0-signed.pkg
Development
Project Structure
mcp-server-eventkit/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── server.ts # Server configuration
│ ├── swift-bridge/
│ │ ├── EventKitBridge.swift # Native Swift module
│ │ ├── eventkit-bridge.ts # TypeScript FFI bindings
│ │ └── build.sh # Swift compilation script
│ ├── tools/ # MCP tool implementations
│ ├── schemas/ # Zod validation schemas
│ └── prompts/ # MCP prompts
├── installer/
│ ├── build-pkg.sh # Installer build script
│ ├── scripts/ # Pre/post install scripts
│ ├── resources/ # Installer UI resources
│ └── payload/ # Files to install
├── build/
│ ├── mcp-eventkit # Compiled binary
│ └── libEventKitBridge.dylib # Compiled Swift library
├── dist/ # Generated installers
└── docs/ # Documentation
├── adr/ # Architecture Decision Records
└── prd/ # Product Requirements Documents
Running in Development
# Build Swift bridge
bun run build
# Run server (for testing)
bun run start
# Run with hot reload
bun run dev
Architecture
The server uses a three-layer architecture:
- MCP Layer (TypeScript): Handles MCP protocol, tool registration, and validation
- FFI Bridge (Bun FFI): Connects TypeScript to Swift via C-compatible functions
- Native Layer (Swift): Interacts with EventKit framework
See Architecture Decision Records for detailed design decisions.
Permissions
Reminders Access
Required for all reminder operations. Grant in:
- System Settings > Privacy & Security > Reminders
Calendar Access
Required for calendar event operations. Grant in:
- System Settings > Privacy & Security > Calendars
Full Disk Access (Optional)
Required only for list_tags tool. Grant in:
- System Settings > Privacy & Security > Full Disk Access
- Add
/usr/local/bin/mcp-eventkit(or your terminal app for development)
Troubleshooting
"No access to Reminders" error
The app doesn't have permission to access Reminders. Grant access in System Settings > Privacy & Security > Reminders.
"No default calendar for reminders" error
You don't have any Reminders lists. Open the Reminders app and create at least one list.
Tags not working
The list_tags feature requires Full Disk Access because it reads directly from the Reminders SQLite database. Grant access in System Settings > Privacy & Security > Full Disk Access.
Build fails with Swift errors
Ensure you have Xcode Command Line Tools installed:
xcode-select --install
Calendar events not showing
Make sure you've granted Calendar access in System Settings > Privacy & Security > Calendars.
Uninstalling
If installed via .pkg
- Open Applications in Finder
- Double-click Uninstall MCP EventKit
- Confirm and enter admin password
Manual uninstall
sudo rm -rf /usr/local/lib/mcp-eventkit
sudo rm -f /usr/local/bin/mcp-eventkit
rm -rf "/Applications/Uninstall MCP EventKit.app"
Then remove the eventkit entry from your Claude Desktop config.
License
MIT
Installing Eventkit
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/pailat/mcp-server-eventkitFAQ
Is Eventkit MCP free?
Yes, Eventkit MCP is free — one-click install via Unyly at no cost.
Does Eventkit need an API key?
No, Eventkit runs without API keys or environment variables.
Is Eventkit hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Eventkit in Claude Desktop, Claude Code or Cursor?
Open Eventkit on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Eventkit with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
