Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Eventkit

FreeNot checked

Eventkit — Model Context Protocol server

GitHubEmbed

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

  1. Clone the repository:
git clone https://github.com/yourusername/mcp-server-eventkit.git
cd mcp-server-eventkit
  1. Install dependencies:
bun install
  1. Build the Swift bridge:
bun run build
  1. 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:

  1. MCP Layer (TypeScript): Handles MCP protocol, tool registration, and validation
  2. FFI Bridge (Bun FFI): Connects TypeScript to Swift via C-compatible functions
  3. 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

  1. Open Applications in Finder
  2. Double-click Uninstall MCP EventKit
  3. 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

from github.com/pailat/mcp-server-eventkit

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-eventkit

FAQ

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

Compare Eventkit with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs