Apple Calendar

io.github.redpop由 GitHub 帳號 redpop 發布v0.2.1更新於 Nov 3, 2026

Read and create Apple Calendar events on macOS, and find free time across calendars.

已驗證STDIO僅桌面位置與生活效率與工作流

概覽

AI 產生的概覽

在本機執行的 macOS MCP 伺服器,讓助理讀取、建立、修改與刪除 Apple 行事曆事件,並跨行事曆找出空閒時間。

可以做什麼
  • 列出行事曆,依日期範圍讀取事件,並可搭配文字搜尋
  • 建立、更新與刪除事件,可設定地點、備註、提醒、全天或指定時間
  • 尋找空閒時間:回傳可用空檔而非忙碌時段,支援工作/個人時段規則與會議前後緩衝
  • 將重複事件以個別場次回傳;修改或刪除某一場次時,必須明確指定僅此一次或之後全部
適用情境
適合在 Mac 上讓助理處理行程安排,例如找出本週兩小時的專注時段、為通話建議時間,或直接在 Apple 行事曆中新增與編輯事件。
執行需求
需要 macOS 14(Sonoma)或更新版本,以及 Node.js 20 或更新版本;透過 npx 在本機執行,無需環境變數。首次使用時 macOS 會要求為隨套件提供的 calendar-helper 授予行事曆存取權,須在系統設定中選取「完整存取」而非「僅限加入」。
安裝前請注意
助理可以建立、更新與刪除行事曆事件(包含重複事件的單一場次),會改動真實資料。它需要完整行事曆存取權,範圍大於唯讀。行事曆資料僅在本機傳遞,專案聲明不含任何網路程式碼。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Apple Calendar,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

apple-calendar-mcp

An MCP server that lets an AI assistant read and create events in Apple Calendar — and work out when you actually have time.

macOS only. It talks to EventKit, Apple's own calendar framework, which has no cross-platform equivalent.

bash
claude mcp add apple-calendar -- npx -y @redpop/apple-calendar-mcp

No Xcode, no Swift toolchain, no repository clone. The signed helper binary ships inside the package.

What it does

Most calendar integrations answer what is on my calendar. This one also answers when am I free:

"Find me two hours for deep work this week, outside meetings""When could I fit a 30-minute call with someone in Berlin?""Book focus time Thursday morning"

find_free_time returns the open gaps, not the busy blocks. It understands that "work" means weekdays during working hours, that "personal" means any day, and that all-day events usually shouldn't count as busy.

It can also keep a buffer around each meeting, because a gap wedged directly between two calls is free on paper and useless in practice.

Alongside that, the usual: list calendars, read events in a range with optional text search, create, update and delete events with location, notes, alarms, all-day or timed. Recurring events come back as individual occurrences, not as the master event — a detail AppleScript-based servers routinely get wrong.

Changing or deleting an occurrence of a recurring event requires saying explicitly whether you mean just that one or every later one too. There is no default for that, because "cancel this Tuesday" and "never again" are not the kind of thing to guess at.

Full parameter reference: docs/tools.md.

Requirements

  • macOS 14 (Sonoma) or newer
  • Node.js 20 or newer

Nothing else. Building from source additionally needs Xcode Command Line Tools, but installing from npm does not.

Setup

1. Add the server to your client.

Claude Code
bash
claude mcp add apple-calendar -- npx -y @redpop/apple-calendar-mcp
Claude Desktop

Quit Claude Desktop first (Cmd+Q) — it rewrites its config on exit, so editing while it runs discards your change. Then add to ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "apple-calendar": {      "command": "npx",      "args": ["-y", "@redpop/apple-calendar-mcp"]    }  }}
Cursor, Windsurf, Zed and other MCP clients

Any client that speaks MCP over stdio works. The command is npx, the arguments are -y @redpop/apple-calendar-mcp, and no environment variables are needed.

2. Grant calendar access on first use.

Ask your assistant "what calendars do I have?". A system dialog appears asking to let calendar-helper — not your assistant, the helper itself — access your calendar.

Confirm it, then open System Settings → Privacy & Security → Calendars → calendar-helper → Options… and make sure Full Access is selected, not "Add Only". Read-only access is not enough; the helper checks for full access at startup.

This one dialog is the only manual step, and no package format can take it away. It appears once and survives updates.

Why the dialog says "calendar-helper"

macOS grants calendar permission to the responsible parent process, not to the program actually asking. An AI client that declares no calendar usage in its bundle therefore locks out everything it starts — silently, with no dialog and no entry in System Settings. Several MCP calendar servers work around this by telling you to launch your client from a terminal.

This one doesn't need that. The helper disclaims that inherited responsibility at startup and becomes its own permission identity, so macOS reads the usage description from its bundle and prompts under its own name. One grant then covers every client on the machine.

The full story: docs/architecture.md.

Updating

bash
npx -y @redpop/apple-calendar-mcp@latest

Your calendar grant survives updates: the helper is installed to a fixed path, and macOS binds the grant to that path rather than to the binary's contents.

Uninstalling

Remove the apple-calendar entry from your client's MCP configuration and restart it. Then delete the helper and its permission:

bash
rm -rf ~/Library/Application\ Support/apple-calendar-mcp

The entry under System Settings → Privacy & Security → Calendars stays behind — macOS keeps those even when the binary is gone. Switch it off there if you want it revoked.

Building from source

bash
git clone https://github.com/redpop/apple-calendar-mcp.gitcd apple-calendar-mcpnpm install && npm run build && ./swift/build.sh

Then point your client at dist/index.js with node instead of using npx. Without a Developer ID certificate the helper is signed ad-hoc, and macOS then ties the calendar grant to the exact build — expect a new permission dialog after every rebuild.

Learn more

Privacy

Everything runs locally. Calendar data goes from EventKit to the helper to the MCP server to your client, and nowhere else. There is no network code in this project.

License

MIT — see LICENSE.

來源:README.md,提交 76eab81

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.2.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分