cal-mcp
Provides read-only access to local Apple Calendar events, with tools to list calendars and retrieve today's events, events for a specific date, or events in a date range, optionally filtered by calendar titles.
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., "@cal-mcpwhat's on my calendar today?"
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.
cal-mcp
A read-only MCP server that reads the local Apple Calendar on this Mac. It uses the streamable HTTP transport.
Written for the mcp Python SDK version 2.x. In that version the class FastMCP
is named MCPServer, and it lives in mcp.server.mcpserver.
Install
git clone https://github.com/burghr/cal-mcp.git
cd cal-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtRelated MCP server: calendar-app-mcp
Grant calendar access
macOS grants calendar access to the program that starts the server, not to the server itself. The first start opens a prompt. Approve it.
To change the grant later, open System Settings, then Privacy & Security, then Calendars.
Start the server
python server.pyThe endpoint is http://127.0.0.1:8001/mcp.
Set MCP_HOST, MCP_PORT, or CAL_NOTES_LIMIT to change the defaults. Port
8001 keeps this server clear of snow-mcp, which uses port 8000.
Connect Claude Code
claude mcp add --transport http cal-mcp http://127.0.0.1:8001/mcpTools
pingtests the connection.list_calendarslists the calendar titles on this Mac.get_today_eventsreturns the events of today.get_events_for_datereturns the events of one day.get_events_in_rangereturns the events between two days.
Every tool except ping accepts an optional calendars list of titles. Omit
the list to read every calendar.
Read-only
The server calls EventKit to read events. It never saves, changes, or deletes an event.
Start it at login
com.burghr.cal-mcp.plist is a launchd agent that starts the server at login
and restarts it if it stops. Replace YOUR-USERNAME in the file with your own
short user name, copy it to ~/Library/LaunchAgents/, then run:
launchctl load ~/Library/LaunchAgents/com.burghr.cal-mcp.plistYour data stays here
The server binds to 127.0.0.1, so nothing outside this Mac can reach it, and
it sends your events nowhere. The only thing that reads them is whatever MCP
client you point at the local endpoint.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay
GDPR-compliant calendar access for AI assistants: read, create, edit, RSVP. Google, MS 365, Apple.
MCP connector for Apple Reminders — search, create, complete, and edit via your own Mac.
MCP server for Cronofy — read calendars, events and free/busy, and create, update or delete events.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude and other MCP clients to directly interact with macOS Calendar.app using AppleScript for local calendar management. Provides tools for listing, searching, creating, updating, and deleting calendar events without cloud APIs or CalDAV setup.25 npm4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and interact with macOS Calendar.app events and reminders, including viewing, searching, and filtering calendar data.2MIT
- AlicenseAqualityDmaintenanceExposes Apple Calendar data through an EventKit helper app. Enables reading, creating, updating, and deleting calendar events on macOS.715 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides native integration with Apple Calendar on macOS via EventKit, enabling CRUD operations on calendar events and calendars through a standardized MCP interface.400 npmMIT