mcp-ical-swift
mcp-ical-swift
macOS Sequoia의 TCC 제한을 우회하기 위해 컴파일된 Swift 바이너리를 사용하는 Apple Calendar용 로컬 MCP 서버입니다.
이 프로젝트의 존재 이유
macOS Sequoia(26.x)에서 헤드리스 프로세스는 표준 TCC(Transparency, Consent, and Control) 메커니즘을 통해 캘린더 액세스 권한을 얻을 수 없습니다:
Python의 EventKit(예: PyObjC)은
kTCCServiceCalendar가 필요한데, 이는 헤드리스 프로세스가 트리거할 수 없는 시스템 대화 상자를 통해서만 부여될 수 있습니다. Sequoia의 시스템 설정 > 개인정보 보호 및 보안 > 캘린더에는+버튼이 없습니다.osascript를 통한 AppleScript는kTCCServiceAppleEvents(자동화 권한)가 필요한데, 이는 호출하는 바이너리(일반적으로node또는bun)에 귀속됩니다. TCC 데이터베이스를 직접 수정하는 것은 TCC 데몬의 무결성 검사에 의해 조용히 무시됩니다.icalBuddy 및 기타 Homebrew 도구는 내부적으로 EventKit을 사용하므로 동일한 벽에 부딪힙니다.
컴파일된 Swift 바이너리(swiftc)가 작동하는 이유는 시스템 Swift 툴체인으로부터 캘린더 TCC 권한을 상속받는 Apple 서명 Mach-O 실행 파일을 생성하기 때문입니다. Node/Bun이 execFileSync를 통해 이 바이너리를 실행하면, EventKit은 authorizationStatus = .fullAccess를 보고하고 캘린더 데이터를 반환합니다.
Related MCP server: apple-calendar-mcp
기능
모든 캘린더 나열
날짜 범위 내 이벤트 나열
키워드로 이벤트 검색
새 이벤트 생성 (캘린더, 위치, 메모, 종일 지원)
기존 이벤트 업데이트
UID로 전체 이벤트 세부 정보 가져오기
이벤트 삭제
stdio를 통해 완전히 로컬에서 실행 -- 네트워크, API 키, 클라우드 없음
사전 요구 사항
macOS Sequoia(26.x) 이상
Bun 1.1 이상
swiftc를 위한 Xcode Command Line Tools (xcode-select --install)Apple Calendar의 캘린더 데이터 (iCloud, Exchange 또는 로컬 캘린더)
설치
git clone https://github.com/Sealjay/mcp-ical-swift.git
cd mcp-ical-swift
bun install
bun run buildbuild 스크립트는 src/calendar-reader.swift를 bin/calendar-reader로 컴파일합니다.
MCP 클라이언트 구성
Claude Code
claude mcp add --transport stdio ical --scope user -- bun run /absolute/path/to/mcp-ical-swift/src/index.tsOpenClaw
{
"mcp": {
"servers": {
"ical": {
"command": "bun",
"args": ["run", "/absolute/path/to/mcp-ical-swift/src/index.ts"]
}
}
}
}Claude Desktop
claude_desktop_config.json에 추가하세요:
{
"mcpServers": {
"ical": {
"command": "bun",
"args": ["run", "/absolute/path/to/mcp-ical-swift/src/index.ts"]
}
}
}도구
도구 | 설명 |
| 모든 Apple Calendar 캘린더 나열 |
| 날짜 범위(YYYY-MM-DD) 내 이벤트 나열 |
| 키워드로 이벤트 검색 (기본값: 향후 30일) |
| 새 이벤트 생성 (제목, 시작, 종료, 캘린더, 위치, 메모, 종일) |
| UID로 기존 이벤트 업데이트 |
| UID로 이벤트의 전체 세부 정보 가져오기 |
| UID로 이벤트 삭제 |
작동 원리
MCP Client (Claude, OpenClaw, etc.)
--> stdio --> Bun MCP server (src/index.ts)
--> execFileSync --> compiled Swift binary (bin/calendar-reader)
--> EventKit framework --> Apple Calendar dataSwift 바이너리는 한 번 컴파일(bun run build)되며 각 도구 호출 시 동기적으로 호출됩니다. 이 바이너리는 JSON을 stdout으로 출력하고, Bun MCP 서버는 이를 MCP 도구 결과로 래핑합니다. 서버는 주입 위험을 피하기 위해 execFileSync(쉘 실행이 아님)를 사용합니다.
핵심 통찰: swiftc로 컴파일된 바이너리는 Apple 서명이 되어 있으며 시스템 툴체인으로부터 캘린더 TCC 권한을 상속받습니다. 이는 Node, Bun, Python 및 AppleScript가 헤드리스 컨텍스트에서 캘린더에 액세스하는 것을 차단하는 TCC 제한을 우회합니다.
개인정보 보호 및 보안
이 서버는 기본적으로 시스템의 모든 캘린더(iCloud, Exchange, 로컬, 공유, 구독)에 액세스합니다.
list_events및search_events에서 선택적calendar매개변수를 사용하여 요청별로 캘린더 이름을 필터링할 수 있습니다.이벤트 메모는 응답에 포함되어 반환되며 민감한 데이터(회의 PIN, 비밀번호, 개인 정보)가 포함될 수 있습니다. MCP 클라이언트 액세스 권한을 부여할 때 이 점을 고려하십시오.
쓰기 작업(
create_event,update_event,delete_event)은 확인 단계 없이 사용할 수 있습니다. MCP 클라이언트(또는 그 안의 프롬프트 주입)가 캘린더 데이터를 수정할 수 있습니다.모든 통신은 stdio를 통해 로컬에서 이루어지며 외부 서비스로 데이터가 전송되지 않습니다.
취약점을 보고하려면 SECURITY.md를 참조하십시오.
제한 사항
macOS 전용 (EventKit 및 Swift 툴체인 필요)
Bun 런타임 필요
Swift 바이너리는 한 번 컴파일되어 도구 호출당 동기적으로 호출되므로 매우 높은 처리량의 사용에는 적합하지 않음
반복 이벤트 수정은 단일 인스턴스에만 적용됨 (
.thisEvent범위)캘린더 액세스는 macOS TCC가 컴파일된 바이너리에 권한을 부여하는지에 따라 달라짐
문제 해결
"Calendar access is not granted" (캘린더 액세스 권한이 부여되지 않음)
컴파일된 바이너리는 캘린더 TCC 권한이 있는 컨텍스트에서 최소 한 번은 실행되어야 합니다. 빌드 및 테스트를 실행하세요:
bun run build
bin/calendar-reader list-events $(date +%Y-%m-%d)이 명령이 이벤트를 반환하면 바이너리에 캘린더 액세스 권한이 있는 것입니다. 그렇지 않다면 Terminal.app(일반적으로 캘린더 TCC 권한이 부여됨)에서 실행해 보십시오.
이벤트가 비어 있음
Apple Calendar에 캘린더가 구성되어 있는지 확인하십시오. 다음을 실행하세요:
bin/calendar-reader list-calendars컴파일 실패
Xcode Command Line Tools가 설치되어 있는지 확인하십시오:
xcode-select --install라이선스
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 gradedqualityDmaintenanceMCP server for accessing macOS Calendar events2MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Apple Calendar via native EventKit API with proper recurring event support.239MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Apple Calendar, Mail, Reminders, and Files on macOS using native frameworks.3116MIT
- AlicenseAqualityBmaintenanceMCP server for Apple Calendar and CalDAV providers. Enables listing, creating, updating, deleting events, and checking free/busy status with per-calendar write protection.86MIT
Related MCP Connectors
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Connects ChatGPT to your Apple Calendar via a local Mac agent + Vercel relay
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
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/Sealjay/mcp-ical-swift'
If you have feedback or need assistance with the MCP directory API, please join our Discord server