Apple Calendar MCP
Apple Calendar MCP
macOS 上で Apple のファーストクラスフレームワーク EventKit を介して、Claude に Apple Calendar への完全なアクセスを提供する Claude Desktop 拡張機能です。イベントの読み取り、検索、作成、更新、削除が可能です。繰り返しイベント(個別の発生単位または将来のすべての発生単位での編集)、アラーム、構造化された場所、参加者の読み戻し、空き時間/予定ありの確認に対応しています。
MCPB デスクトップ拡張機能としてパッケージ化されており、Calendar.app のアイコンとワンクリックインストールを備えています。
Apple Mail、Apple Reminders、Apple Notes、Apple Messages コネクタのコンパニオンです。
機能
ツール | 説明 |
| すべてのカレンダーを、ID、タイトル、色、ソース/アカウント、書き込みアクセスフラグ、デフォルトの指定とともに一覧表示します |
| 新しいカレンダーを作成します(色とソースはオプション) |
| 既存のカレンダーの名前を変更または色を変更します |
| カレンダーとそのすべてのイベントを削除します(破壊的) |
| カレンダー数、今日のイベント、今後7日間のイベント、次の予定イベント |
| 日付範囲内のイベント発生を、カレンダー、テキスト、終日、キャンセル済みなどのフィルター付きで一覧表示します |
| タイトル、メモ、場所を対象に、オプションの日付範囲内でフリーテキスト検索を行います |
| 完全な詳細情報 — メモ、URL、主催者、参加者とその返答、繰り返し、アラーム、場所、タイムゾーン |
| Calendar.app でイベントを開くための |
| 範囲内のビジー区間(空き時間/予定あり)をマージしたもの — 隙間が空きスロットです |
| 完全なプロパティセットで作成: 繰り返し、アラーム、構造化された場所、空き時間、タイムゾーン |
| プロパティの任意のサブセットを更新; |
| イベントまたは繰り返しシリーズの発生(複数)を削除します(スパン対応) |
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 で同期されるため、非同期ブリッジは不要です。1つの癖として、イベント述語はクエリごとに最大約4年しかカバーしないため、より広い範囲は透過的にチャンク化されます。
繰り返しイベント
繰り返しイベントの発生は、1つの安定した 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 が初めて Calendar ツールを呼び出すと、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 に依頼するだけです:
「今日の予定は?」
「明日の午後、1時間空いている時間はいつ?」
「金曜日の正午に Zuni Café でサムとランチを予定に入れて。」
「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"])。コネクタは 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 を渡して1つの発生をターゲットにし、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