# Apple Calendar

Даёт агенту доступ к календарю на macOS: поиск событий, свободные окна, создание и правка записей. Запись по умолчанию выключена.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 5
- Автор: mgcrea
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/mgcrea/cupertino/tree/HEAD/packages/calendar
- Обновлён: 2026-10-22
- HTML: https://affpapa.org/nevibecode/mcp/mgcrea-apple-calendar

## Что делает

Сервер читает базу календаря, которая уже лежит на Mac, и отдаёт агенту список аккаунтов, календарей и событий. Поиск идёт по диапазону дат, есть отдельный инструмент для свободных окон. Запись включается переменной `APPLE_CALENDAR_ALLOW_WRITES=1` — без неё инструменты создания, правки и удаления модель вообще не видит.

Чтение и запись разведены по разным каналам. Все чтения идут через SQLite в режиме только для чтения, записи — через Apple Events. Для чтения нужно Full Disk Access у того процесса, который запускает сервер: Terminal, iTerm, VS Code. Без этого разрешения не работает ничего, запасного пути чтения нет. Разрешение Automation → Calendar нужно только для записи, и при выключенной записи запрос на него не появится.

Есть нюансы, о которые легко споткнуться. База лежит не в `~/Library/Calendars`, а в `~/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb`. Повторяющиеся события хранятся в кэш-таблице, поэтому наивный запрос по диапазону пропускает развёрнутые повторы. Даты внутри — секунды с 2001 года, а не с 1970. Диапазон по умолчанию — 7 дней, потолок для запроса — 366.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `APPLE_CALENDAR_ALLOW_WRITES`, `APPLE_CALENDAR_CALENDARS`, `APPLE_CALENDAR_ACCOUNTS` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env APPLE_CALENDAR_ALLOW_WRITES=<APPLE_CALENDAR_ALLOW_WRITES> --env APPLE_CALENDAR_CALENDARS=<APPLE_CALENDAR_CALENDARS> --env APPLE_CALENDAR_ACCOUNTS=<APPLE_CALENDAR_ACCOUNTS> --transport stdio calendar -- npx -y @mgcrea/mcp-apple-calendar
```
Вместо <…> подставьте свои значения

### Codex

**Командой платформы**
```bash
codex mcp add calendar --env APPLE_CALENDAR_ALLOW_WRITES=<APPLE_CALENDAR_ALLOW_WRITES> --env APPLE_CALENDAR_CALENDARS=<APPLE_CALENDAR_CALENDARS> --env APPLE_CALENDAR_ACCOUNTS=<APPLE_CALENDAR_ACCOUNTS> -- npx -y @mgcrea/mcp-apple-calendar
```
Вместо <…> подставьте свои значения

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "calendar": {
            "command": "npx",
            "args": [
                "-y",
                "@mgcrea/mcp-apple-calendar"
            ],
            "env": {
                "APPLE_CALENDAR_ALLOW_WRITES": "<APPLE_CALENDAR_ALLOW_WRITES>",
                "APPLE_CALENDAR_CALENDARS": "<APPLE_CALENDAR_CALENDARS>",
                "APPLE_CALENDAR_ACCOUNTS": "<APPLE_CALENDAR_ACCOUNTS>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "calendar": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@mgcrea/mcp-apple-calendar"
            ],
            "env": {
                "APPLE_CALENDAR_ALLOW_WRITES": "<APPLE_CALENDAR_ALLOW_WRITES>",
                "APPLE_CALENDAR_CALENDARS": "<APPLE_CALENDAR_CALENDARS>",
                "APPLE_CALENDAR_ACCOUNTS": "<APPLE_CALENDAR_ACCOUNTS>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e APPLE_CALENDAR_ALLOW_WRITES=<APPLE_CALENDAR_ALLOW_WRITES> -e APPLE_CALENDAR_CALENDARS=<APPLE_CALENDAR_CALENDARS> -e APPLE_CALENDAR_ACCOUNTS=<APPLE_CALENDAR_ACCOUNTS> calendar npx -y @mgcrea/mcp-apple-calendar
```
Вместо <…> подставьте свои значения

## Когда брать
- найти свободное окно на неделе
- вытащить все встречи за месяц
- создать событие в нужном календаре
- проверить, что попало в расписание после переноса
- удалить отменённые встречи пачкой

## Примеры запросов агенту
- Покажи мои встречи на завтра
- Найди свободные два часа в четверг после обеда
- Создай событие «Созвон с командой» в календаре Work на 15:00

## Похожие
- [apple-calendar](https://affpapa.org/nevibecode/skills/apple-calendar.md) — скилл · 726 установок
- [apple-mail](https://affpapa.org/nevibecode/skills/apple-mail.md) — скилл · 1400 установок
- [apple-notes](https://affpapa.org/nevibecode/skills/hermes-agent-apple-notes.md) — скилл · 381 установка
- [apple-reminders](https://affpapa.org/nevibecode/skills/hermes-agent-apple-reminders.md) — скилл · 367 установок
- [Apple Mail MCP](https://affpapa.org/nevibecode/mcp/apple-mail-mcp.md) — MCP-сервер · ★ 74
- [Apple Tools (Unified)](https://affpapa.org/nevibecode/mcp/apple-tools-unified.md) — MCP-сервер · ★ 31

## Другие версии с тем же именем
- [Apple Calendar · jonathanrreed](https://affpapa.org/nevibecode/mcp/apple-calendar.md) — ★ 31

Из того же набора: [mgcrea/cupertino](https://affpapa.org/nevibecode/by/mgcrea/cupertino.md) — 2 карточки

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
