by FradSer
MCP server providing native macOS integration with Apple Reminders and Calendar via EventKit
# Add to your Claude Code skills
git clone https://github.com/FradSer/mcp-server-apple-eventsGuides for using mcp servers skills like mcp-server-apple-events.
Last scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T16:24:39.491Z",
"npmAuditRan": true,
"pipAuditRan": true
}See how mcp-server-apple-events compares with popular alternatives.
mcp-server-apple-events is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by FradSer. MCP server providing native macOS integration with Apple Reminders and Calendar via EventKit. It has 229 GitHub stars.
Yes. mcp-server-apple-events passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/FradSer/mcp-server-apple-events" and add it to your Claude Code skills directory (see the Installation section above).
mcp-server-apple-events is primarily written in TypeScript. It is open-source under FradSer on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh mcp-server-apple-events against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
From $49 · 30 days · terms & refunds
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Automated security scan — not a certification.
See comparison
English | 简体中文
A Model Context Protocol (MCP) server providing native integration with Apple Reminders and Calendar on macOS via the EventKit framework. Exposes reminders, lists, subtasks, and calendar events through a standardized interface with full CRUD operations.
The EventKit backend is the standalone event Swift CLI, vendored as a git submodule and built into bin/event during pnpm install — no separate brew install required. See docs/migration-to-event-cli.md for the v1.5.0 backend swap and the list of write fields not yet exposed by event.
YYYY-MM-DD, YYYY-MM-DD HH:mm:ss, ISO 8601) with timezone awarenessThe published npm package ships a pre-built, universal, code-signed bin/event binary, so npx users need neither Xcode nor a Swift toolchain. Building from a git clone requires the items above.
npx mcp-server-apple-events
Add the server to your MCP client. The npx form works for every client below; for a local build, replace command/args with node pointing at dist/index.js.
Settings → MCP → Add new global MCP server:
{
"mcpServers": {
"apple-reminders": {
"command": "npx",
"args": ["-y", "mcp-server-apple-events"]
}
}
}
Settings → Tools → "+", then:
stdioapple-remindersmcp-server-apple-eventsEdit claude_desktop_config.json (open it via Settings → Developer Option → Edit Config, or directly at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS / %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"apple-reminders": {
"command": "npx",
"args": ["-y", "mcp-server-apple-events"]
}
}
}
For a local build:
{
"mcpServers": {
"apple-reminders": {
"command": "node",
"args": ["/absolute/path/to/mcp-server-apple-events/dist/index.js"]
}
}
}
See the official MCP docs for connecting local servers. Restart Claude Desktop completely (quit, not just close) for changes to take effect.
The server launches the vendored event CLI directly. macOS retains its normal attribution to the application that launched the server, so authorize that host under System Settings > Privacy & Security > Reminders / Calendars. Each host needs its own approval; a grant made from a terminal does not authorize a separate desktop MCP client.
The host must support EventKit permission requests and declare the required usage descriptions. If it does not, macOS may deny access without showing a prompt. Use a host that supports these permissions. The server does not bypass this restriction by making a public helper self-responsible: doing so would let unrelated local processes reuse that helper's Calendar and Reminders grant.
When event detects a notDetermined status it calls requestFullAccessToReminders / requestFullAccessToEvents. Run ./check-permissions.sh from the same host context to diagnose access; running it in a terminal checks that terminal's permissions only. Usage descriptions are required for protected resources; see Apple's app distribution guidance.
For Failed to read calendar events, enable Full Calendar Access for the calling application under System Settings > Privacy & Security > Calendars. If no prompt appears, check that the host supports EventKit permissions and declares the usage descriptions, then restart it and retry. AppleScript Automation approval is separate from EventKit Calendar and Reminders approval.
Reinstall the package to remove the old bin/event-disclaim artifact. For a source checkout, remove that generated file before rebuilding. Revoke the old event grant in System Settings > Privacy & Security > Reminders / Calendars, then authorize each host you intend to use. Updating the server cannot revoke existing macOS grants or remove older copies installed elsewhere.
When the server runs from a context with no GUI session (SSH, launchd agent/daemon), the first EventKit call can block forever waiting on a permission prompt that can never be rendered — the MCP request never settles and a child process leaks per call. The server now kills any event call that exceeds 30 s (SIGKILL) and returns a readable error instead. Tune it with the EVENTKIT_CLI_TIMEOUT_MS environment variable (milliseconds; invalid/zero values fall back to the default — the timeout cannot be disabled, though huge values up to 2^31-1 ms are accepted). The vendored event CLI (pinned via FradSer/event#15) additionally fails fast when no GUI session exists and gives up on an unanswerable prompt after 15 s (EVENT_PERMISSION_TIMEOUT_MS), reporting Permission denied: Timed out waiting for ... so the host can show a permission-specific message before the server's kill fires (15 s < 30 s). See issue #113.
could not build module 'Foundation'If pnpm build fails with could not build module 'Foundation' (or SDK is not supported by the compiler), your Swift toolchain is older than the macOS 26 SDK requires — it needs Swift 6.3 or newer, but the Command Line Tools shipped with early macOS 26 point releases include Swift 6.2.x. pnpm build:event detects this and prints the same remediation; see issue #85. Fix by installing Xcode 26.x from the App Store, or updating Command Line Tools to a Swift 6.3+ version:
softwareupdate --list
sudo softwareupdate -i "Command Line Tools for Xcode-<latest>"
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer # if full Xcode is installed
xcrun swiftc --version # should report Apple Swift version 6.3 or newer
Once configured, ask Claude to interact with your Apple Reminders and Calendar. Example prompts:
Create a reminder to "Buy groceries" for tomorrow at 5 PM with tags shopping and errands.
Add a high-priority reminder to "Finish quarterly report" due Friday in my "Work" list.
Create "Grocery shopping" with subtasks: milk, eggs, bread, butter.
Show me all high-priority reminders due today tagged "urgent".
Show subtasks for my "Grocery shopping" reminder and mark "milk" as complete.
Update "Buy groceries" — change the title to "Buy organic groceries" and set priority to high.
Show reminders from my "Work" list, and list all my reminder lists.
Create a calendar event "Team standup" tomorrow from 9:00 to 9:30 in "Work".
Show my calendar events for the next week.
Invite alex@example.com to my "Team standup" event.
Cancel just the September 21 occurrence of my weekly "Team standup".
The server processes natural-language requests, interacts with Apple's native Reminders and Calendar apps, and returns structured results.
Alarms, recurrence rules, and location triggers are read-only via this server — configure them in Reminders.app / Calendar.app. Read tools preserve these values in structured records when the underlying app provides them.
Server write confirmation is off by default. Clients without MCP form elicitation can write. Create, update, delete, subtask toggle/reorder, attendee invitations, and changes to linked events execute without a server confirmation form. Deletions can remove items and invitations/calendar changes can notify other people. This changes the v1.6.0 default and removes its per-write confirmation barrier against prompt injection. Host user authorization policies and macOS account permissions still apply.
To require a fresh user confirmation for every write, add the startup flag to your MCP server arguments:
{
"command": "npx",
"args": ["-y", "mcp-server-apple-events", "--require-write-confirmation"]
}
For a local build, use node dist/index.js --require-write-confirmation. Omit the flag to use the default. The flag takes no value and has no negate