Apple Calendar · jonathanrreed — Claude Code MCP server: what it does, how to install
Connects macOS Calendar to MCP clients. It lets an AI assistant view schedules, book meetings, modify event details, and delete entries.
claude mcp add --env APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> --env APPLE_CALENDAR_MCP_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS> --env APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS> --transport stdio apple-calendar-mcp -- uvx apple-calendar-mcpWhat Apple Calendar does
This server gives your AI assistant access to the macOS Calendar application. The model can inspect your upcoming schedule, create appointments, edit existing entries, or clear cancelled meetings. You need macOS, Python 3.11+, and the uv package manager installed on your machine.
Communication works over standard input and output via uvx apple-calendar-mcp. Environment variables like APPLE_CALENDAR_MCP_ALLOWED_CALENDARS and APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS let you isolate specific calendars from read or write actions. Supplying a blank or invalid safety configuration automatically drops the connection into read-only mode.
Local execution does not prevent data leaks. The host MCP client forwards retrieved schedule information to its model provider, while macOS may also sync calendars via iCloud. You must also approve calendar access manually in macOS privacy settings. Without that permission, all event calls fail.
What it helps with
- Check macOS calendar availability before scheduling a call
- Add new appointments with exact dates and titles
- Modify times or descriptions for existing meetings
- Remove cancelled events from selected calendars
Example prompts for the agent
- Check my schedule in Calendar for tomorrow after 2 PM
- Add a 30-minute project sync to my work calendar on Friday at 11 AM
- Run calendar_health to confirm the integration has proper macOS permissions
How to install Apple Calendar
Platform CLI
claude mcp add --env APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> --env APPLE_CALENDAR_MCP_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS> --env APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS> --transport stdio apple-calendar-mcp -- uvx apple-calendar-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>
Platform CLI
codex mcp add apple-calendar-mcp --env APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> --env APPLE_CALENDAR_MCP_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS> --env APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS> -- uvx apple-calendar-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>
Config file
{
"mcpServers": {
"apple-calendar-mcp": {
"command": "uvx",
"args": [
"apple-calendar-mcp"
],
"env": {
"APPLE_CALENDAR_MCP_SAFETY_MODE": "<APPLE_CALENDAR_MCP_SAFETY_MODE>",
"APPLE_CALENDAR_MCP_ALLOWED_CALENDARS": "<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS>",
"APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS": "<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>
Config file
{
"servers": {
"apple-calendar-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"apple-calendar-mcp"
],
"env": {
"APPLE_CALENDAR_MCP_SAFETY_MODE": "<APPLE_CALENDAR_MCP_SAFETY_MODE>",
"APPLE_CALENDAR_MCP_ALLOWED_CALENDARS": "<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS>",
"APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS": "<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>
Platform CLI
gemini mcp add -e APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> -e APPLE_CALENDAR_MCP_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_ALLOWED_CALENDARS> -e APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS=<APPLE_CALENDAR_MCP_WRITE_ALLOWED_CALENDARS> apple-calendar-mcp uvx apple-calendar-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from apple-calendar-mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Apple Calendar
How do I install Apple Calendar in Claude Code?
Run claude mcp add apple-calendar-mcp -- uvx apple-calendar-mcp in your terminal and restart the client. Make sure your Mac has Python 3.11+ and uv ready.
What does the Apple Calendar MCP server do?
It enables an AI coding assistant to read schedules, schedule new meetings, update event details, and remove appointments from Apple Calendar on macOS.
Does calendar data stay strictly on the local machine?
No. Although the MCP binary runs locally on macOS, your AI client transmits retrieved calendar details to its AI model provider, and Apple may sync entries through iCloud.
Similar MCP servers
All MCP servers for Notes, tasks and projects →Apple Calendar by other authors comes first.