calendar-mcp
Allows interaction with Apple Calendar data via EventKit, providing tools for listing, creating, updating, and deleting calendar events.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@calendar-mcp list my events for next Monday"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
calendar-mcp
Local MCP server that exposes Apple Calendar data through an EventKit helper app.
Built entirely by OpenAI GPT-5.4 via Codex.
Install
git clone https://github.com/<your-account>/calendar-mcp.git
cd calendar-mcp
./bootstrap.shRelated MCP server: mcp-eventkit
Run
npm run startPermissions
Run calendar_permissions once with prompt: true and access: "full".
The helper app is intended to be built with the project’s normal code signing so macOS can attribute Calendar access to a stable app identity.
If the prompt does not appear from inside Codex, launch the helper app directly once:
open CalendarMCPHelperApp/build/Build/Products/Release/CalendarMCPHelperApp.appWhen opened directly, the app will request Calendar access and show a status alert. After that initial grant, the MCP tools can read and write events normally.
Delete safety is intentionally narrow: each calendar_delete_event call can remove only one resolved target. Recurring deletes support one occurrence or one entire series, but not futureEvents or any bulk-delete shape.
calendar_update_event updates an event in place instead of forcing a delete-and-recreate flow. Omitted fields stay unchanged. To clear nullable fields, pass one of clearLocation, clearNotes, clearUrl, or clearTimeZone.
Date Inputs
All tool date inputs accept these wire formats:
2026-04-02for a local calendar day2026-04-02T09:30or2026-04-02T09:30:00for a local wall-clock time2026-04-02T09:30:00-05:00or2026-04-02T14:30:00Zfor an exact instant
Local date-only and local date-time inputs are interpreted in the helper app's current macOS time zone. Returned event payloads always use ISO-8601 timestamps with timezone offsets.
calendar_list_events treats start and end as the exact time window after parsing those inputs.
occurrenceDate for recurring-event lookups also accepts YYYY-MM-DD. In that case the helper matches the occurrence by local calendar day. When you already have an occurrenceDate timestamp from a previous tool response, prefer passing that exact timestamp back.
MCP config
{
"mcpServers": {
"calendar": {
"command": "node",
"args": ["/absolute/path/to/calendar-mcp/dist/index.js"],
"env": {
"CALENDAR_MCP_HELPER_APP_PATH": "/absolute/path/to/calendar-mcp/CalendarMCPHelperApp/build/Build/Products/Release/CalendarMCPHelperApp.app"
}
}
}
}Verify
npm run verifyAvailable Tools
7 toolscalendar_create_eventCreate EventA
Create a calendar event in the default calendar or a specified calendar. start and end accept local dates, local times, or timezone-bearing ISO-8601 timestamps.
Inputs: end (required), start (required), title (required), url, +5 more.
calendar_delete_eventDelete EventA
Delete exactly one calendar target by identifier. For recurring events, choose whether to remove one occurrence or the entire series.
Inputs: scope, occurrenceDate, eventIdentifier, calendarItemIdentifier.
calendar_get_eventGet EventARead-only
Fetch a single event by identifier. Pass occurrenceDate when targeting one instance of a recurring series.
Inputs: occurrenceDate, eventIdentifier, externalIdentifier, calendarItemIdentifier.
calendar_list_calendarsList CalendarsARead-only
List event calendars available to the helper app.
Inputs: no named parameters.
calendar_list_eventsList EventsARead-only
List calendar events in a time window. start and end accept local dates, local times, or timezone-bearing ISO-8601 timestamps.
Inputs: end (required), start (required), calendarIds.
calendar_permissionsCalendar PermissionsB
Check and optionally prompt for Apple Calendar access used by the helper app.
Inputs: access, prompt.
calendar_update_eventUpdate EventA
Update an existing calendar event in place. Omitted fields are left unchanged. Use clear flags to remove location, notes, url, or timeZone.
Inputs: end, url, notes, scope, +14 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool targets a distinct action and resource: permissions for access, list_calendars for available calendars, list_events and get_event for reading events, and create/update/delete for writing events. No two tools perform the same function.
All tools share the calendar_ prefix and use snake_case, with most following a verb_noun pattern (list_events, create_event). The exception is calendar_permissions, which is noun-only, causing a slight deviation from the otherwise consistent pattern.
Seven tools is well within the ideal range for a focused domain. Each tool (permissions, list calendars, list events, get event, create, update, delete) serves a distinct purpose without redundancy or bloat.
The tool set covers the full lifecycle of calendar event management: permission check, listing calendars, listing/fetching events, and create/update/delete. It also handles recurrence edge cases in get/update/delete, leaving no obvious gaps for typical calendar tasks.
Maintenance
Related MCP Connectors
Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay
Read AddEvent calendars, events, RSVPs and subscribers; create and update calendars and events.
Read and send iCloud Mail, manage iCloud Calendar. Needs an approved account at icloud.mcp.visin.ch.
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and interact with macOS Calendar.app events and reminders, including viewing, searching, and filtering calendar data.30 PyPI2MIT
- FlicenseNot gradedqualityFmaintenanceEnables reading, creating, updating, and deleting Apple Reminders directly on macOS via the EventKit framework.-
- AlicenseNot gradedqualityDmaintenanceProvides native integration with Apple Calendar on macOS via EventKit, enabling CRUD operations on calendar events and calendars through a standardized MCP interface.750 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to interact with Apple Calendar locally on macOS through EventKit, including listing calendars and events, creating events, and updating events with privacy-conscious safeguards.MIT