Apple Calendar MCP
Apple Calendar MCP
macOS에서 Apple의 일급 EventKit 프레임워크를 통해 Claude가 Apple Calendar에 완전히 접근할 수 있게 해주는 Claude Desktop 확장 프로그램입니다. 반복 이벤트(개별 발생 또는 향후 모든 발생 기준 편집), 알람, 구조화된 위치, 참석자 읽기, 그리고 busy/free 가용성까지 이벤트를 읽고, 검색하고, 생성하고, 업데이트하고, 삭제할 수 있습니다.
MCPB 데스크톱 확장 프로그램으로 패키징되어 있으며, Calendar.app 아이콘과 원클릭 설치를 제공합니다.
Apple Mail, Apple Reminders, Apple Notes, Apple Messages 커넥터의 동반 앱입니다.
기능
도구 | 설명 |
| id, 제목, 색상, 소스/계정, 쓰기 권한 플래그, 기본 캘린더 여부를 포함한 모든 캘린더 |
| 새 캘린더 생성 (선택적 색상 및 소스) |
| 기존 캘린더 이름 변경 또는 색상 변경 |
| 캘린더와 모든 이벤트 삭제 (파괴적) |
| 캘린더 수, 오늘 이벤트, 향후 7일 이벤트, 다음 예정 이벤트 |
| 날짜 범위 내 이벤트 발생 목록 (캘린더, 텍스트, 종일, 취소 필터 포함) |
| 제목, 메모, 위치에 대한 자유 텍스트 검색 (선택적 날짜 범위 내) |
| 전체 세부 정보 — 메모, URL, 주최자, 참석자 및 응답, 반복 규칙, 알람, 위치, 시간대 |
| Calendar.app에서 이벤트를 여는 |
| 범위에 걸친 병합된 busy 간격 (free/busy) — 그 사이의 공백이 열린 슬롯입니다. |
| 전체 속성 세트로 생성: 반복, 알람, 구조화된 위치, 가용성, 시간대 |
| 속성의 하위 집합 업데이트; |
| 이벤트 또는 반복 시리즈의 발생(들) 삭제 (span 인식) |
Related MCP server: Apple EventKit MCP Server
작동 방식
Calendar와의 통신은 PyObjC를 통해 EventKit (EKEventStore, EKEvent, EKCalendar, EKRecurrenceRule, EKAlarm, EKStructuredLocation)을 사용하여 이루어집니다. 이는 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으로 드래그).
확장 프로그램은 Calendar 아이콘과 함께 설정 > 확장 프로그램에 나타납니다.
옵션 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분으로 바꿔줘."
"앞으로 8주 동안 매주 화요일 오전 10시에 주간 팀 동기화를 설정해줘."
"다음 주 월요일 스탠드업만 취소하고 나머지 시리즈는 유지해줘."
"치과 예약에 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"]).커넥터는 Calendar 엔터티 밖으로 절대 나가지 않습니다 — Reminders, 연락처, 파일에 접근하지 않습니다.
파괴적 작업(
delete_calendar,delete_event)은 모델이 호출하도록 선택해야 하는 명시적 도구입니다. 읽기의 부작용으로 실행되지 않습니다.이벤트 생성 또는 수정은 초대 이메일을 보내지 않습니다 — EventKit의 공개 API는 참석자를 추가할 수 없으므로 아무것도 기기를 떠나지 않습니다.
문제 해결
"Apple Calendar 액세스 권한이 부여되지 않았습니다" 시스템 설정 → 개인정보 보호 및 보안 → 캘린더를 열고 Claude Desktop이 전체 액세스("추가만" 아님)로 나열되어 있는지 확인한 후 Claude Desktop을 다시 시작합니다.
권한 프롬프트가 나타나지 않음 Claude Desktop이 시작한 서명되지 않은 Python 인터프리터는 때때로 프롬프트를 자동으로 트리거하지 않습니다. 시스템 설정 → 개인정보 보호 및 보안 → 캘린더에서 Claude Desktop을 수동으로 추가하세요.
약 4년 이후의 이벤트가 표시되지 않음 EventKit의 이벤트 조건자는 쿼리당 최대 4년을 포함합니다. 커넥터는 더 넓은 범위를 자동으로 청크하지만, 매우 넓은 범위는 느릴 수 있습니다 — 더 좁은 창을 선호하세요.
반복 이벤트 편집이 전체 시리즈를 변경함
list_events의 occurrence_date를 전달하여 하나의 발생을 대상으로 하고 span='this_event'를 유지하세요. span='future_events'는 의도적으로 해당 발생과 이후 모든 것을 다시 작성합니다.
Claude가 회의에 사람을 초대할 수 있나요? 아니요 — EventKit의 공개 API는 참석자를 읽기 전용으로 노출합니다. Claude는 누가 초대되었고 어떻게 응답했는지 읽을 수 있지만, 초대자는 Calendar.app에서 추가해야 합니다.
설치 후 확장 프로그램이 나타나지 않음 MCPB 확장 프로그램을 지원하는 최신 Claude Desktop을 실행 중인지 확인하세요. 설치 후 Claude Desktop을 다시 시작하세요.
로드맵
v1 — 출시됨
캘린더 목록, 생성, 이름 변경, 삭제
필터 및 페이지네이션으로 이벤트 목록, 검색, 가져오기
이벤트 생성, 업데이트, 삭제 (반복 시리즈에 대한 span 인식)
반복 (일/주/월/년 간격, 요일별, 월별, 설정 위치, 종료 조건)
알람 (상대, 절대)
구조화된 (지오코딩된) 위치
응답 상태가 포함된 참석자 및 주최자 읽기
간격 병합이 포함된 free/busy 가용성
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