Skip to main content
Glama

Apple Calendar MCP

macOS에서 Apple의 일급 EventKit 프레임워크를 통해 Claude가 Apple Calendar에 완전히 접근할 수 있게 해주는 Claude Desktop 확장 프로그램입니다. 반복 이벤트(개별 발생 또는 향후 모든 발생 기준 편집), 알람, 구조화된 위치, 참석자 읽기, 그리고 busy/free 가용성까지 이벤트를 읽고, 검색하고, 생성하고, 업데이트하고, 삭제할 수 있습니다.

MCPB 데스크톱 확장 프로그램으로 패키징되어 있으며, Calendar.app 아이콘과 원클릭 설치를 제공합니다.

Apple Mail, Apple Reminders, Apple Notes, Apple Messages 커넥터의 동반 앱입니다.


기능

도구

설명

list_calendars

id, 제목, 색상, 소스/계정, 쓰기 권한 플래그, 기본 캘린더 여부를 포함한 모든 캘린더

create_calendar

새 캘린더 생성 (선택적 색상 및 소스)

update_calendar

기존 캘린더 이름 변경 또는 색상 변경

delete_calendar

캘린더와 모든 이벤트 삭제 (파괴적)

get_stats

캘린더 수, 오늘 이벤트, 향후 7일 이벤트, 다음 예정 이벤트

list_events

날짜 범위 내 이벤트 발생 목록 (캘린더, 텍스트, 종일, 취소 필터 포함)

search_events

제목, 메모, 위치에 대한 자유 텍스트 검색 (선택적 날짜 범위 내)

get_event

전체 세부 정보 — 메모, URL, 주최자, 참석자 및 응답, 반복 규칙, 알람, 위치, 시간대

get_event_link

Calendar.app에서 이벤트를 여는 ical:// URL

get_availability

범위에 걸친 병합된 busy 간격 (free/busy) — 그 사이의 공백이 열린 슬롯입니다.

create_event

전체 속성 세트로 생성: 반복, 알람, 구조화된 위치, 가용성, 시간대

update_event

속성의 하위 집합 업데이트; occurrence_date + span이 반복 범위를 제어합니다; clear_* 플래그는 필드를 제거합니다

delete_event

이벤트 또는 반복 시리즈의 발생(들) 삭제 (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+의 "추가만" 권한은 이벤트를 다시 읽을 수 없으므로 모든 읽기 도구(및 각 쓰기 후의 읽기 확인)가 실패합니다.

프롬프트가 나타나지 않는 경우(자식 프로세스로 실행되는 서명되지 않은 인터프리터에서 발생할 수 있음):

  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분으로 바꿔줘."

  • "앞으로 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_eventsoccurrence_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명을 위한 슬롯 찾기" 자연어 도우미


라이선스

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