Apple Calendar MCP
Apple Calendar MCP
一个 Claude Desktop 扩展,通过 Apple 的一流 EventKit 框架,让 Claude 完全访问 macOS 上的 Apple Calendar。读取、搜索、创建、更新和删除事件——包括重复事件(按单个事件或所有未来事件编辑)、提醒、结构化位置、参与者回读以及忙/闲可用性。
打包为 MCPB 桌面扩展,带有 Calendar.app 图标,一键安装。
与 Apple Mail、Apple Reminders、Apple Notes 和 Apple Messages 连接器配套使用。
功能
工具 | 描述 |
| 每个日历的 id、标题、颜色、来源/账户、写入权限标志,以及哪个是默认日历 |
| 创建新日历(可选颜色和来源) |
| 重命名或重新着色现有日历 |
| 删除日历及其所有事件(破坏性操作) |
| 日历数量、今天的事件、未来 7 天的事件、下一个即将到来的事件 |
| 日期范围内的事件发生,带过滤器:日历、文本、全天、已取消 |
| 在标题、备注和位置中进行全文搜索,可选日期范围 |
| 完整详情——备注、URL、组织者、参与者及其回复、重复规则、提醒、位置、时区 |
|
|
| 在范围内合并的忙区间(忙/闲)——间隙就是你的空闲时段 |
| 使用完整属性集创建:重复规则、提醒、结构化位置、可用性、时区 |
| 更新任意属性子集; |
| 删除事件或重复系列的单个事件(支持范围感知) |
Related MCP server: Apple EventKit MCP Server
工作原理
与 Calendar 的通信通过 EventKit(EKEventStore、EKEvent、EKCalendar、EKRecurrenceRule、EKAlarm、EKStructuredLocation)经由 PyObjC 完成——这与 Calendar.app 本身使用的一流框架相同,读取相同的本地存储(包括 iCloud、Google 和 Exchange 同步的日历)。
这与配套的 Apple Reminders 连接器采用相同的方法,不同于 AppleScript/JXA 路线:EventKit 暴露了完整的数据模型(重复规则回读、按事件编辑、参与者回复、结构化位置),并且速度显著更快。与 Reminders 不同,事件获取在 EventKit 中是同步的,因此无需异步桥接;唯一的小问题是事件谓词每次查询最多跨越约 4 年,因此更宽的范围会被透明地分块处理。
重复事件
重复事件的每次发生共享一个稳定的 event_id;list_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+ 的“仅添加”授权无法回读事件,因此每个读取工具(以及每次写入后的回读)都会失败。
如果提示未出现(当未签名的解释器作为子进程启动时可能发生):
打开 系统设置 → 隐私与安全性 → 日历
添加 Claude Desktop(或运行
uv的任何进程)并启用完全访问退出并重新启动 Claude Desktop
要验证访问状态,请运行:
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db \
"SELECT client, auth_value FROM access WHERE service='kTCCServiceCalendar'"(auth_value 为 2 = 完全访问,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_calendar、delete_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 人找空位”辅助功能
许可证
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
- AlicenseNot gradedqualityCmaintenanceProvides 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.231MIT
- FlicenseNot gradedqualityFmaintenanceProvides 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
- AlicenseNot gradedqualityDmaintenanceEnables 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.234MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and interact with macOS Calendar.app events and reminders, including viewing, searching, and filtering calendar data.2MIT
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.
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/falconbradley/claude-connector-apple-calendar'
If you have feedback or need assistance with the MCP directory API, please join our Discord server