Calendar.app

io.github.p-l-taPublished by GitHub account p-l-tav1.0.0Updated Oct 24, 2026

List, search, and manage calendar events via macOS Calendar.app across all configured accounts.

Overview

AI-generated overview

A local macOS MCP server that lets an assistant list, search, create, update and delete Calendar.app events across all configured accounts.

What you can do
List calendars with name, color, account and UUID, and list events in a date range including recurring occurrences, reading Calendar's database directly for fast results across all accounts. Get full details of a single event by UUID, including attendees, and search events by text across title, description and location. Create new events, update properties of existing events, and permanently delete events through AppleScript automation, so changes sync to connected accounts as if made in the app.
When to use it
Useful on a Mac when you want an assistant to check your schedule, find events by keyword, or add, edit and remove appointments across iCloud, Google or Exchange calendars without switching apps.
Requirements
macOS with Calendar.app, Node.js 20+, and an MCP host such as Claude Desktop or any stdio client; runs locally via npx or a global npm install. The host application needs Full Disk Access and Automation permission for Calendar in System Settings, since the server inherits the host's permissions. No API keys or environment variables.
Before you install
The server can create, update and permanently delete calendar events, and changes sync to every connected account, so deletions are not limited to the local machine. It reads Calendar's SQLite database directly, which requires granting Full Disk Access to the host application, a broad permission. Calendar data is passed to the MCP host as tool responses; the README states it has no backend, telemetry or network requests of its own.

Installation

In SourceWeft

  1. Open Calendar.app in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

calendar-mcp

MCP server that gives Claude (and other MCP hosts) full access to Calendar.app on macOS — list, search, create, update, and delete events — across every account configured in Calendar.app (iCloud, Google, Exchange, etc.).

Prerequisites

  • macOS (Calendar.app required)
  • Node.js 20+
  • An MCP host: Claude Desktop or any stdio MCP client

Installation

Claude Desktop — one-click install (recommended)

  1. Download calendar-mcp.mcpb from the latest release
  2. Double-click the .mcpb file — Claude Desktop installs it automatically
  3. Grant the required macOS permissions (see below)

Manual / other hosts

bash
npx @p-l-ta/calendar-mcp

Or install globally:

bash
npm install -g @p-l-ta/calendar-mcpcalendar-mcp

Point your MCP host at the calendar-mcp binary (stdio transport). Example config:

json
{  "mcpServers": {    "calendar-app": {      "command": "npx",      "args": ["@p-l-ta/calendar-mcp"]    }  }}

Required macOS permissions

Grant these to the application that runs the MCP host (Claude Desktop, etc.):

PermissionWhere to grant
Full Disk AccessSystem Settings → Privacy & Security → Full Disk Access
Automation → CalendarSystem Settings → Privacy & Security → Automation

The MCP server process inherits permissions from the host application that launches it.

Tools

ToolDescription
list_calendarsList all calendars with name, color, account, and UUID
list_eventsList events in a date range, including recurring-event occurrences
get_eventGet full details of a single event by UUID, including attendees
search_eventsSearch events by text across title, description, and location
create_eventCreate a new calendar event
update_eventUpdate properties of an existing event
delete_eventPermanently delete an event

How it works

  • Reads (list_calendars, list_events, search_events, get_event) — query Calendar's SQLite database directly for fast, structured results across all accounts. Recurring events are expanded correctly via Calendar's OccurrenceCache table.
  • Writes (create_event, update_event, delete_event) — driven by AppleScript automation against Calendar.app, so changes sync to all connected accounts (iCloud, Google, Exchange) just as if you'd made them in the app.

Development

bash
npm installnpm run dev          # tsx watch — live reloadnpm run build        # compile TypeScript → dist/npm run mcpb         # build Claude Desktop extension → build/calendar-mcp.mcpbnpm run smoke        # smoke-test all 7 tools against live Calendar.app data

Note: npm run smoke requires Terminal.app (or your terminal emulator) to have Full Disk Access, since it reads Calendar.sqlitedb directly.

Interactive MCP testing:

bash
npm run buildnpx @modelcontextprotocol/inspector node dist/server.js

Privacy Policy

calendar-mcp is a local MCP server that runs entirely on your Mac. It has no backend, no telemetry, and makes no network requests of its own.

What it accesses:

  • Calendar's SQLite database (~/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb) — read-only, used for list/search queries
  • Calendar.app via AppleScript — to create, update, and delete events

What it does NOT do:

  • Collect, store, or transmit any data outside your Mac
  • Connect to any external server or API
  • Log calendar data anywhere

All calendar data stays on your device and is only passed to the MCP host (Claude Desktop or another client) as part of normal tool responses. You control exactly which tools Claude can invoke.

License

MIT

Source: README.md at commit 1691345

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts