Apple Calendar MCP
Provides tools for interacting with Apple Calendar on macOS, enabling AI assistants to read and manage calendars, events, availability, and permissions with allowlist and safety controls.
Click on "Install 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., "@Apple Calendar MCPWhat's on my calendar for tomorrow?"
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.
Apple Calendar MCP
Apple Calendar MCP is a local-first Model Context Protocol server for safely connecting AI assistants to Apple Calendar on macOS.
It uses a TypeScript MCP server, a Swift EventKit helper, SQLite local state, and a native macOS setup app. Calendar data stays on the Mac, users choose which calendars are visible, and writes are guarded by permission modes, confirmation gates, duplicate checks, idempotency, rollback records, audit logs, and change feeds.
Key Features
Read Apple Calendar calendars, events, availability, and permissions through MCP tools.
Create, update, reschedule, and delete events with preview-confirm safety by default.
Enforce calendar allowlists server-side so blocked calendars remain hidden from agents.
Track rollback records, audit records, compact snapshots, and token-efficient change feeds.
Generate client configs for Claude Desktop, Codex, Cursor, OpenClaw, and generic MCP clients.
Provide a native macOS setup wizard for Calendar permission, allowlists, permission mode, config generation, and verification.
Related MCP server: nucleus-apple-mcp
Architecture
flowchart TD
A["MCP Client<br/>Claude, Codex, Cursor, OpenClaw"] --> B["TypeScript MCP Server"]
B --> C["Calendar Service Layer"]
C --> D["Swift EventKit Helper"]
D --> E["Apple Calendar / EventKit"]
C --> F["SQLite Local State"]
F --> G["Config, Audit, Rollback,<br/>Snapshots, Change Feed,<br/>Idempotency"]
H["Native macOS Setup App"] --> D
H --> FThe MCP server communicates over stdio. Logs are written to stderr or an optional local log file, never stdout, so MCP protocol traffic remains clean.
Requirements
macOS with Apple Calendar and EventKit access.
Node.js
>=22.5.Swift toolchain through Xcode Command Line Tools or Xcode.
An MCP client such as Claude Desktop, Codex, Cursor, OpenClaw, or another stdio-compatible client.
Install From Source
git clone <repo-url>
cd apple-calendar-mcp
npm install
npm run build
npm run helper:bundle
npm run helper:setupThe setup app walks through:
Calendar permission explanation and request.
Calendar allowlist selection.
Permission mode selection.
MCP client config generation.
Verification checks and test connection.
Generated local config is stored under:
~/Library/Application Support/AppleCalendarMCP/MCP Client Setup
Generate validated client configs:
npm run client-configs:generateCopy or merge the generated file from .generated/client-configs/ into your client:
Claude Desktop:
claude_desktop_config.jsonCodex: append
codex.config.tomlto~/.codex/config.tomlCursor: copy or merge
cursor.mcp.jsoninto~/.cursor/mcp.jsonor a project.cursor/mcp.jsonOpenClaw: merge
openclaw.openclaw.jsoninto~/.openclaw/openclaw.jsonGeneric MCP clients: use
generic-mcp-client.json
Validate after copying:
npm run client-configs:validate
npm run client-configs:diagnoseThe generated configs use an absolute Node executable, an absolute MCP server entrypoint, and an env block. Command and args are never combined into a shell string, which avoids failures with paths containing spaces.
npx Startup Path
The publishable server package exposes this binary:
npx apple-calendar-mcpFor local development and release candidates, prefer:
npm run start:mcpBefore publishing to npm, publish the internal workspace packages in dependency order or use the release artifacts generated by npm run release:package.
Security Model
Apple Calendar MCP is designed around defense in depth:
macOS Calendar permission is required before EventKit access.
Calendar allowlists restrict which calendars agents can see.
Read-only, ask-before-write, trusted-write, and full-write modes control write risk.
MVP writes require explicit confirmation or preview-confirm flow.
Destructive and ambiguous operations return semantic errors instead of guessing.
Recurring event writes require explicit scope.
Calendar content is treated as untrusted input.
Audit records, rollback records, idempotency keys, and change feeds are written locally.
See docs/Security Specification.md for the full security model.
Screenshots
Release screenshot placeholders:
Setup wizard welcome and Calendar permission step.
Calendar allowlist and permission mode step.
Client configuration and verification step.
Settings and diagnostics screen.
Capture signed-release screenshots before public distribution.
Troubleshooting
Calendar access denied: open System Settings > Privacy & Security > Calendars and enable the helper app.
MCP server startup red in setup: run
npm run buildand verifypackages/mcp-server/dist/index.jsexists.Cursor or Codex cannot connect: regenerate configs with
npm run client-configs:generateand ensure the copied config uses absolute paths.Client sees the server but no tools: restart the MCP client after config changes, then run
npm run client-configs:diagnose.stdout/stderr separation fails: remove any stdout logging from the MCP server path; logs must go to stderr.
Large reads fail: use narrower date ranges. The read service chunks large windows internally, but very large EventKit requests may still need retry.
Development
npm install
npm run build
npm test
npm run helper:bundle
npm run helper:setupUseful commands:
npm run typechecknpm run client-configs:generatenpm run client-configs:validatenpm run release:verifynpm run release:package
Read docs/Development Guide.md before making security-sensitive changes.
Repository Structure
apps/macos-helper/ Swift EventKit bridge and native setup app
packages/mcp-server/ MCP stdio server and tool registration
packages/calendar-service/Business logic for reads, writes, rollback, snapshots
packages/sqlite-store/ Local SQLite persistence and migrations
packages/shared/ Shared schemas and typed contracts
scripts/ Helper, config, diagnostics, and release scripts
tests/ Phase-based safety and behavior tests
docs/ Consolidated maintainer and release documentationRelease
Create reproducible local release artifacts:
npm run release:packageArtifacts and checksums are written to:
dist/release/The GitHub release workflow runs the same package script on tag pushes matching v*.
Roadmap
Signed and notarized macOS release packaging.
Public npm publication workflow after package namespace confirmation.
More end-to-end client smoke tests across supported MCP clients.
Expanded snapshot/change-feed pagination benchmarks.
Better in-app screenshot capture and public documentation assets.
Contributing
Security, reliability, user trust, MCP compliance, and maintainability come before convenience. Keep changes scoped, run the full test suite, and update docs when behavior changes. Do not bypass permission checks, allowlists, confirmation gates, rollback records, audit records, idempotency checks, or semantic errors.
Start with:
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables direct integration with macOS Calendar application using AppleScript, allowing users to create, list, and search calendar events without requiring OAuth setup.86MIT
- AlicenseBqualityBmaintenanceA macOS MCP server that provides AI agents with secure access to Calendar, Reminders, Notes, and Health data via native Apple APIs.3018MIT
- AlicenseNot gradedqualityFmaintenanceA comprehensive MCP server that provides AI assistants with natural language access to Apple Calendar, enabling reading, searching, creating, and managing calendar events.3MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that connects ChatGPT to Apple Calendar via a local Mac agent, enabling event listing, searching, and creation while keeping data on your machine.MIT
Related MCP Connectors
Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OwenSuyko/Apple-Calendar-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server