# calendar [Health: Active]

**Category:** 🏢 Workplace & Productivity  
**Repository:** https://github.com/theluckystrike/mcp-calendar  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/calendar

## Description
Read the .ics your calendar already exports: what is on this week, when you are actually free, what is double-booked, and turn a meeting into billable time. All local.

## Tools
Capabilities this server exposes over MCP:

- **ics_import** — Read a `.ics` file (`path`), pasted contents (`text`) or a public feed (`url`, Pro) and keep it locally under a name. Importing the same name again replaces it.
- **calendars_list** — Every imported calendar: name, source, event count, size, when it was imported.
- **events_list** — Every event between two dates with recurring series expanded to real occurrences, sorted, in your own time zone. Each row carries an id.
- **events_search** — Events whose title, description, location, organizer or attendees contain a phrase.
- **free_busy** — Merged busy blocks and the free gaps inside your working hours, day by day. Events marked free/transparent do not count as busy.
- **conflicts** — Every pair of events that overlap, with the overlap in minutes -- across all calendars, so a client call clashing with a school run is caught. A longer window is shortened to the free 31 days and answered, never refused.
- **next_event** — The next thing that has not started, and how long until it does.
- **event_export** — Write chosen events (by id, or a whole window) to a new `.ics` you can send. Times in UTC, so it lands correctly in any client.
- **event_to_time_entry** — Turn one meeting into the exact arguments for the time-tracker's `entry_add`, so a call becomes billable time without retyping it.
- **ics_forget** — Remove one calendar and its local copy.
- **license_status** — Show the tier; activate a Pro key offline.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "calendar": {
    "command": "npx",
    "args": ["-y","@theluckystrike/mcp-calendar"]
  }
}
```

## Documentation

## What calendar MCP server does

The calendar MCP server works with calendar data in iCalendar format rather than connecting directly to a calendar account. You can import an `.ics` file from disk, provide its contents, or, with Pro access, load a public feed URL. Imported calendars remain available locally under a chosen name, and importing another file with the same name replaces the previous copy.

It can list imported calendars, retrieve events for a date range, search event fields, calculate availability, identify overlapping meetings, show the next upcoming event, and export selected events to a new `.ics` file. It also prepares the arguments needed to add a meeting to a compatible time tracker. The `calendar://today` resource provides the current day's schedule, and the `plan_my_day` prompt combines schedule, conflict, free-time, and billing questions into one workflow.

## How it works

Events are returned in the local time zone, with recurring series expanded into individual occurrences for the requested period. Free or transparent events are excluded from busy-time calculations. Availability is reported as merged busy blocks and gaps within configured working hours. Conflict detection compares events across all imported calendars, which allows personal and work schedules to be checked together.

The parser supports common recurrence and date features, including `RRULE`, `EXDATE`, `RDATE`, moved instances, cancellations, time zones, floating times, all-day events, durations, and alarms. Unsupported events are skipped and counted. Recurrence rules using minute- or second-level frequency are not fully expanded; they are represented at their first occurrence with an explanation. Open-ended recurrence rules are expanded only through the requested window.

## Setup and configuration

You can use the hosted streamable-HTTP endpoint at `https://mcp.zovo.one/mcp/calendar` with a bearer token. If the MCP client cannot add request headers, the token can be included in the endpoint path. A token is required when calling tools.

For local use with Claude Desktop, download the `calendar.mcpb` bundle from the latest release and open it. From source, clone the repository, run `npm install`, run `npm run build`, and configure the client to launch the resulting `dist/index.js` with Node. The repository is self-contained because its `@theluckystrike/*` dependencies are vendored. The package is not currently published on npm, so an `npx` installation is not a working setup path.

After installation, import an export from Google Calendar, Apple Calendar, Outlook, or another iCalendar source. Public feed URLs and `webcal://` sources require Pro access. Pro activation can be performed offline with a license key.

## Tools and capabilities

- `ics_import`: Import a file, pasted iCalendar text, or a Pro public feed under a local name.
- `calendars_list`: Show imported calendar metadata, including source, event count, size, and import time.
- `events_list` and `events_search`: Retrieve events by date range or search their text fields.
- `free_busy`, `conflicts`, and `next_event`: Analyze availability, overlapping events, and the next not-yet-started event.
- `event_export`: Create a new `.ics` from event IDs or a complete time window. Exported timed values use UTC, while all-day events remain date-only values.
- `event_to_time_entry`: Produce arguments for the time-tracker's `entry_add` operation.
- `ics_forget`: Remove an imported calendar and its local copy.
- `license_status` and `license_activate`: Inspect or activate the service tier.

## Limitations and notes

The free tier keeps up to two calendars and limits each question to a 31-day window. Pro increases the calendar limit to unlimited and removes the window limit. Conflict requests covering more than 31 days are shortened to the free limit rather than rejected.

The server does not sync changes back to a calendar provider, and the local workflow does not require an account connection. `VTIMEZONE` blocks are ignored; time-zone offsets are calculated using the ICU data in the Node runtime while retaining the event's `TZID`. Imported calendar files are treated as local plain-text data, except when using the hosted endpoint or a remote feed.

_Full upstream README: https://allmcps.com/mcp/calendar/readme_

