Skip to main content
Glama

Apple Calendar MCP

一个 Claude Desktop 扩展,通过 Apple 的一流 EventKit 框架,让 Claude 完全访问 macOS 上的 Apple Calendar。读取、搜索、创建、更新和删除事件——包括重复事件(按单个事件或所有未来事件编辑)、提醒、结构化位置、参与者回读以及忙/闲可用性。

打包为 MCPB 桌面扩展,带有 Calendar.app 图标,一键安装。

Apple MailApple RemindersApple NotesApple Messages 连接器配套使用。


功能

工具

描述

list_calendars

每个日历的 id、标题、颜色、来源/账户、写入权限标志,以及哪个是默认日历

create_calendar

创建新日历(可选颜色和来源)

update_calendar

重命名或重新着色现有日历

delete_calendar

删除日历及其所有事件(破坏性操作)

get_stats

日历数量、今天的事件、未来 7 天的事件、下一个即将到来的事件

list_events

日期范围内的事件发生,带过滤器:日历、文本、全天、已取消

search_events

在标题、备注和位置中进行全文搜索,可选日期范围

get_event

完整详情——备注、URL、组织者、参与者及其回复、重复规则、提醒、位置、时区

get_event_link

ical:// URL,用于在 Calendar.app 中打开事件

get_availability

在范围内合并的忙区间(忙/闲)——间隙就是你的空闲时段

create_event

使用完整属性集创建:重复规则、提醒、结构化位置、可用性、时区

update_event

更新任意属性子集;occurrence_date + span 控制重复范围;clear_* 标志移除字段

delete_event

删除事件或重复系列的单个事件(支持范围感知)

Related MCP server: Apple EventKit MCP Server

工作原理

与 Calendar 的通信通过 EventKitEKEventStoreEKEventEKCalendarEKRecurrenceRuleEKAlarmEKStructuredLocation)经由 PyObjC 完成——这与 Calendar.app 本身使用的一流框架相同,读取相同的本地存储(包括 iCloud、Google 和 Exchange 同步的日历)。

这与配套的 Apple Reminders 连接器采用相同的方法,不同于 AppleScript/JXA 路线:EventKit 暴露了完整的数据模型(重复规则回读、按事件编辑、参与者回复、结构化位置),并且速度显著更快。与 Reminders 不同,事件获取在 EventKit 中是同步的,因此无需异步桥接;唯一的小问题是事件谓词每次查询最多跨越约 4 年,因此更宽的范围会被透明地分块处理。

重复事件

重复事件的每次发生共享一个稳定的 event_idlist_events 返回的每个发生也带有 occurrence_date。写入工具接受两者:

  • occurrence_date 选择你针对哪个发生

  • span 选择范围this_event(仅该发生,将其分离)或 future_events(该发生及其之后的所有内容)


要求

  • macOS 14 Sonoma 或更高版本(requestFullAccessToEvents 在 14 中添加)

  • Python 3.11+

  • 支持扩展的 Claude Desktop

  • 日历权限——完全访问——授予 Claude Desktop(见下文)


安装

选项 1:桌面扩展(推荐)

Releases 下载最新的 .mcpb,然后双击安装。

或从源码构建:

git clone https://github.com/falconbradley/claude-connector-apple-calendar.git
cd claude-connector-apple-calendar
./build.sh

然后双击 dist/apple-calendar.mcpb(或将其拖入 Claude Desktop)。

该扩展出现在 设置 > 扩展 中,带有日历图标。

选项 2:手动 MCP 配置

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "apple-calendar": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/claude-connector-apple-calendar", "apple-calendar-mcp"]
    }
  }
}

权限

Claude 首次调用日历工具时,macOS 会提示你授予日历访问权限。选择完全访问——macOS 14+ 的“仅添加”授权无法回读事件,因此每个读取工具(以及每次写入后的回读)都会失败。

如果提示未出现(当未签名的解释器作为子进程启动时可能发生):

  1. 打开 系统设置 → 隐私与安全性 → 日历

  2. 添加 Claude Desktop(或运行 uv 的任何进程)并启用完全访问

  3. 退出并重新启动 Claude Desktop

要验证访问状态,请运行:

sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db \
  "SELECT client, auth_value FROM access WHERE service='kTCCServiceCalendar'"

auth_value2 = 完全访问,0 = 拒绝。)


使用示例

安装后,只需自然地向 Claude 提问:

  • “我今天有什么日程?”

  • “明天下午我什么时候有空一小时?”

  • “周五中午在 Zuni Café 与 Sam 安排午餐。”

  • “把我的 3 点移到 4:30,并设为 45 分钟。”

  • “设置每周二上午 10 点的团队同步会议,持续 8 周。”

  • “只取消下周一的工作站会,保留系列其余部分。”

  • “给我的牙医预约添加一个提前 10 分钟的提醒。”

  • “谁还没有回复异地会议邀请?”

  • “创建一个‘旅行’日历,把我的航班行程放上去。”


从源码构建

# Install mcpb CLI (one time)
npm install -g @anthropic-ai/mcpb

# Install uv (one time, if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Build the extension
./build.sh

# Or manually:
mcpb validate manifest.json
mcpb pack . dist/apple-calendar.mcpb

项目结构

claude-connector-apple-calendar/
├── manifest.json                    # MCPB desktop extension manifest
├── icon.png                         # Calendar.app icon (512x512)
├── icons/                           # Multi-size icons
│   ├── icon-128.png
│   ├── icon-256.png
│   └── icon-512.png
├── pyproject.toml                   # Python package + dependencies
├── build.sh                         # Validate + pack build script (gates on version drift)
├── tools/                           # Dev-only icon extraction (not packed)
├── tests/
│   └── test_e2e.py                  # End-to-end tests
└── src/
    └── apple_calendar_mcp/
        ├── __init__.py
        ├── server.py                # MCP tools (MCPServer)
        ├── calendars.py             # EventKit-backed CalendarStore
        ├── permissions.py           # TCC grant helpers
        └── models.py                # Pydantic data models

测试

# Static tests (model shapes, validation, helpers — no permission needed)
uv run python tests/test_e2e.py --skip-live

# Full suite (requires Calendar permission)
uv run python tests/test_e2e.py

实时测试针对一个专用的 __claude_mcp_test__ 日历运行,该日历在设置时创建,在结束时拆除。


安全与隐私

  • 所有数据都保留在你的 Mac 上——这是一个本地 MCP 服务器。EventKit 从 Calendar.app 使用的同一存储中读取,包括 iCloud/Google/Exchange 同步的日历。

  • 操作受 macOS TCC 门控:在你授予日历访问权限之前,不会发生任何操作。

  • 仅限 macOS(清单中的 "platforms": ["darwin"])。

  • 连接器从不超出日历实体——不涉及提醒、联系人或文件。

  • 破坏性操作(delete_calendardelete_event)是模型必须选择调用的显式工具;它们不会作为读取的副作用运行。

  • 创建或修改事件绝不会发送电子邮件邀请——EventKit 的公共 API 无法添加参与者,因此不会有任何内容离开你的机器。


故障排除

“未授予 Apple Calendar 访问权限” 打开 系统设置 → 隐私与安全性 → 日历,确保 Claude Desktop 已列出并具有完全访问(而非“仅添加”),然后重新启动 Claude Desktop。

权限提示不出现 由 Claude Desktop 启动的未签名 Python 解释器有时不会自动触发提示。在 系统设置 → 隐私与安全性 → 日历 下手动添加 Claude Desktop。

超过约 4 年的事件不显示 EventKit 的事件谓词每次查询最多跨越 4 年。连接器会自动分块更宽的范围,但极宽的范围会变慢——请优先使用较窄的窗口。

重复事件编辑更改了整个系列 传递 occurrence_date(来自 list_events)以针对单个发生,并保持 span='this_event'span='future_events' 会故意重写该发生及其之后的所有内容。

Claude 可以邀请人们参加会议吗? 不能——EventKit 的公共 API 将参与者暴露为只读。Claude 可以读取谁被邀请以及他们的回复,但你需要自己在 Calendar.app 中添加邀请者。

安装后扩展不出现 确保你运行的是支持 MCPB 扩展的最新 Claude Desktop。安装后重新启动 Claude Desktop。


路线图

v1 — 已发布

  • 列出、创建、重命名、删除日历

  • 列出、搜索、获取事件,带过滤器和分页

  • 创建、更新、删除事件(对重复系列支持范围感知)

  • 重复规则(每日/每周/每月/每年,带间隔、按天、按月、设置位置、结束条件)

  • 提醒(相对、绝对)

  • 结构化(地理编码)位置

  • 参与者和组织者回读,带回复状态

  • 忙/闲可用性,带区间合并

  • ical:// 深层链接

v2 — 考虑中

  • RSVP / 回复邀请(受限于公共 EventKit API)

  • 在 EventKit 暴露的地方回读行程时间和会议 URL

  • 批量操作(移动/删除多个事件)

  • 在 get_availability 之上构建自然的“为 N 人找空位”辅助功能


许可证

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides Claude with full access to Apple Calendar on macOS for event management, smart scheduling, and schedule analytics. It enables natural language event creation, conflict detection, and template-based scheduling through AppleScript integration.
    23
    1
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides Claude Desktop with access to Apple Calendar and Reminders on macOS for managing schedules and tasks through natural language. It supports comprehensive operations like creating, editing, and searching events and reminders, along with a custom hashtag-based tagging system.
    3
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    23
    4
    MIT

View all related MCP servers

Related MCP Connectors

  • Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.

  • Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

View all MCP Connectors

Latest Blog Posts

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/falconbradley/claude-connector-apple-calendar'

If you have feedback or need assistance with the MCP directory API, please join our Discord server