使用说明
Apple Reminders & Calendar MCP Server
A Model Context Protocol (MCP) server that integrates Apple Reminders and Apple Calendar with Claude, enabling task management and calendar scheduling directly through conversations.
Built entirely in Swift using EventKit for native, fast, and reliable access.
Features
Reminders / Task Management:
- Create, update, complete, and delete reminders across multiple lists
- Move existing reminders between lists with
move_reminder, preserving their properties - Daily planning with
list_today_reminders(due today + overdue) - Priority levels (0=none, 1-4=high, 5=medium, 6-9=low)
Calendar Events:
- Create, update, and delete calendar events
- View today's schedule with
list_today_events - Query events by date range with
list_events - Support for location, URL (video call links), and all-day events
Transport:
- Stdio for local use (Claude Desktop)
- Streamable HTTP for remote access (Claude Web, iOS, etc.)
- OAuth bearer-token authentication for HTTP mode
Prerequisites
- macOS 14.0 (Sonoma) or later
- Swift 5.9 or later
- Claude Desktop app (for stdio mode) or any MCP client (for HTTP mode)
Installation
- Clone this repository
- Build the Swift package:
swift build -c release
- The executable will be built at
.build/release/apple-events-mcp
Transport Modes
Stdio (default)
For local use with Claude Desktop. No configuration file needed.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"apple-events": {
"command": "/absolute/path/to/apple-events-mcp/.build/release/apple-events-mcp"
}
}
}
Streamable HTTP
For remote access from Claude Web, Claude iOS, or other MCP clients.
- Create a
config.jsonin the working directory:
{
"port": 3031,
"password": "your-server-password"
}
Generate a secure server password:
openssl rand -hex 32
- Start the server:
.build/release/apple-events-mcp --http
- The MCP endpoint will be available at:
POST http://localhost:3031/
POST http://localhost:3031/mcp
- Health check (no auth required):
GET http://localhost:3031/health
Both MCP routes use the same OAuth bearer-token authentication and tool handler. The /mcp route remains available for existing Claude connections. For the hosted ChatGPT connection, use https://apple-events-mcp.adamfarmer.dev/ with OAuth. Enter the server password on its authorization page; do not put passwords or tokens in the URL. Use HTTPS for remote access.
Permissions
The first time you run this, macOS will prompt you to grant access to both Reminders and Calendar. Click "Allow" for each.
License
MIT
Moving reminders
Call list_reminder_lists to get destination names and IDs, then call
move_reminder with reminder_id and exactly one of list_id or list_name.
Use list_id when names are duplicated. Missing, ambiguous, or read-only
destinations return an error. Moving to the current list succeeds without a save.
The result includes reminder_id, list_id, and list_name; use the returned
reminder ID for subsequent calls because EventKit identifiers can change on moves.
{"name":"move_reminder","arguments":{"reminder_id":"REMINDER_ID","list_id":"DESTINATION_LIST_ID"}}
Run the live integration test with python3 test-move-reminder.py after building.
It creates a temporary reminder, checks moves and field preservation, and deletes
its test reminder. To test the running local HTTP service using its existing
credentials, run python3 test-move-reminder.py --http-repo /path/to/apple-events-mcp.
Rebuilding this unsigned command-line server may require approving Reminders and Calendar access again. Allow both macOS prompts; the server requests them in that order during startup.