All three read calendar data into a chat. mcp-ical
(npm package @voxxit/mcp-ical) is the closest in shape to ours: it also reads
.ics feeds with no Google or Microsoft account. google-calendar-mcp
is a different kind of tool entirely: it reads and writes real Google Calendar events over OAuth, across
multiple accounts. Ours sits in between: read-only like mcp-ical, but computing the things a freelancer
actually asks for, free and busy blocks, cross-calendar conflicts, and a billable time entry from a
finished meeting, none of which mcp-ical does at all.
| Fact | Ours | mcp-ical | google-calendar-mcp |
|---|---|---|---|
| Tools | 12 (10 calendar tools plus 2 license tools) | 5: subscribe, list, unsubscribe, get_events, search_events | 12: list/search/get/create/update/delete events, freebusy, colors, current time, respond, manage-accounts |
| Account or key needed | No. No account, no key | No. Subscribes to a public .ics URL, no login | Yes. Google OAuth 2.0 credentials, a consent screen and a browser sign-in before first use |
| Free/busy and conflicts | free_busy merges busy blocks and daily gaps; conflicts checks every pair across all calendars | Not offered | get-freebusy is offered; conflict detection is a separate documented feature (cross-account conflicts) |
| Recurrence handling | RRULE with COUNT, UNTIL, INTERVAL, BYDAY/BYMONTHDAY/BYMONTH, EXDATE, RDATE and RECURRENCE-ID overrides, computed from Node's own ICU data so DST does not drift | RFC 5545 parsing stated as a feature; expansion detail not documented in the README | Native to the Google Calendar API it calls, including advanced recurring-event modification |
| Turns a meeting into billable time | event_to_time_entry, feeding directly into the time tracker's entry_add | Not offered | Not offered |
| Writes to the calendar | No. Reads only; event_export writes a new file, never the source | No. Read-only subscription and query | Yes: create, update, delete and respond to events |
| Licence | MIT | Not stated in the npm record | MIT |
| Cost | Free tier, Pro $19 once | Free, per its npm listing | Free, per its npm listing |
Pick it if all you want is a cached, searchable copy of one or more public .ics feeds with
no setup beyond a URL: subscribe_calendar, list_calendars,
get_events and search_events cover that in five tools. It does not compute free
time, does not check for conflicts across calendars, and does not hand a meeting to a time tracker; if any
of those three is why you wanted a calendar server, it is not there.
Pick it when the calendar has to stay live and two-way with Google itself: creating, updating, deleting and responding to events, multiple Google accounts queried at once, and cross-account conflict detection built on the real API rather than a file you re-import. That comes at the cost every OAuth integration has: a Google Cloud project, OAuth credentials, a consent screen, and a browser sign-in flow before the first calendar tool works, none of which our server or mcp-ical require.
Pick ours when the calendar app already exports what you need and you want to ask a freelancer's actual
questions of it without connecting an account: where am I free this week, what clashes with what, and
which of last week's calls should have been billed. free_busy, conflicts and
event_to_time_entry are the three tools neither competitor has, and the recurrence engine was
built against real exports rather than the bare RFC, which is why a weekly Warsaw meeting stays at 10:00
local through the March clock change instead of drifting an hour.
The calendar package carries 36 automated tests, all passing, covering ICS parsing edge cases (line folding, escaping, DST, RECURRENCE-ID overrides), free/busy computation and conflict detection. Neither competitor publishes a test count in its README or npm record.
Ours, Claude Code:
claude mcp add calendar -- npx -y @theluckystrike/mcp-calendar
mcp-ical:
claude mcp add ical -- npx -y @voxxit/mcp-ical
google-calendar-mcp:
claude mcp add gcal -e GOOGLE_OAUTH_CREDENTIALS=/path/to/gcp-oauth.keys.json -- npx -y @cocal/google-calendar-mcp
Exact config file paths per client are on the setup pages, and the longer walkthrough is in reading a .ics calendar in Claude.
Yes. Tool names do not collide: ours are events_list, free_busy and so on, google-calendar-mcp uses list-events, get-freebusy and its own names. Nothing is shared between them, so a change made in one is invisible to the other.
Only google-calendar-mcp. It reads and writes through the real Google Calendar API with create-event, update-event, delete-event and respond-to-event. Ours and mcp-ical are read-only against a file or feed and never touch a live account.
google-calendar-mcp does, with a full OAuth 2.0 setup and a browser consent flow before first use. Ours and mcp-ical need no account: ours reads a file you exported or, on Pro, a public feed URL; mcp-ical subscribes to a public .ics URL directly.
mcp-ical and google-calendar-mcp are free per their npm listings; the Google account and API access behind google-calendar-mcp are free within Google's own quota. Ours has a free tier and a one-time $19 Pro key, or $39 for the whole server collection.
mcp-ical's tool list comes from its README at github.com/voxxit/mcp-ical and its npm record for @voxxit/mcp-ical. google-calendar-mcp's tool list and OAuth requirement come from its README at github.com/nspady/google-calendar-mcp and its npm record for @cocal/google-calendar-mcp. All read on 2026-09-03.