# Google Calendar

MCP server for Google Calendar : create events, manage calendars, check availability, and share calendars through 28 tools via the Model Context Protocol.

## Quick Start

```bash
# Connect this server (installs CLI if needed)
npx -y @smithery/cli@latest mcp add node2flow/google-calendar

# Browse available tools
npx -y @smithery/cli@latest tool list node2flow/google-calendar

# Get full schema for a tool
npx -y @smithery/cli@latest tool get node2flow/google-calendar gcal_list_events

# Call a tool
npx -y @smithery/cli@latest tool call node2flow/google-calendar gcal_list_events '{}'
```

## Direct MCP Connection

Endpoint: `https://google-calendar--node2flow.run.tools`

**Required config:**
- `GOOGLE_CLIENT_ID` (query) — OAuth 2.0 Client ID from Google Cloud Console
- `GOOGLE_CLIENT_SECRET` (query) — OAuth 2.0 Client Secret
- `GOOGLE_REFRESH_TOKEN` (query) — Refresh token with Calendar scope (from OAuth consent flow or OAuth Playground)

## Tools (28)

- `gcal_list_events` — List events on a calendar. Supports time range filtering, search query, and pagination. Use singleEvents=true to expand…
- `gcal_get_event` — Get a specific event by ID. Returns full event details including attendees, reminders, recurrence, and conference data.
- `gcal_create_event` — Create a new calendar event. Supports timed events (dateTime) and all-day events (date). Can add attendees, recurrence …
- `gcal_update_event` — Full update of an event (PUT). All fields are replaced — unset fields will be cleared. Use gcal_patch_event for partial…
- `gcal_patch_event` — Partial update of an event (PATCH). Only specified fields are changed — other fields remain unchanged. Preferred over u…
- `gcal_delete_event` — Delete an event from the calendar. This action is irreversible.
- `gcal_quick_add` — Create an event from natural language text. Google Calendar parses the text to set summary, date, time, and location au…
- `gcal_move_event` — Move an event from one calendar to another. The event is removed from the source calendar and added to the destination.
- `gcal_list_instances` — List individual instances of a recurring event. Returns expanded occurrences within a time range.
- `gcal_import_event` — Import an event with a unique iCalUID. Used for importing events from external calendars or iCal files. Does not send n…
- `gcal_list_calendars` — List all calendars the user has subscribed to. Includes the primary calendar, other owned calendars, and calendars shar…
- `gcal_get_calendar_entry` — Get a specific calendar list entry with display settings, color, notifications, and access role.
- `gcal_add_calendar` — Subscribe to an existing calendar by its ID. Adds the calendar to the user's calendar list.
- `gcal_update_calendar_entry` — Update display settings for a calendar in the user's list. Changes color, display name, visibility, and default reminde…
- `gcal_remove_calendar` — Unsubscribe from a calendar, removing it from the user's calendar list. Does not delete the calendar itself.
- `gcal_get_calendar` — Get calendar metadata including summary, description, location, and time zone.
- `gcal_create_calendar` — Create a new secondary calendar. The authenticated user becomes the owner.
- `gcal_update_calendar` — Update calendar metadata (summary, description, location, time zone). Only works on secondary calendars the user owns.
- `gcal_delete_calendar` — Delete a secondary calendar. Only works on calendars the user owns. The primary calendar cannot be deleted.
- `gcal_clear_calendar` — Delete all events from a primary calendar. Only works on the primary calendar. Secondary calendars should use gcal_dele…
- `gcal_list_acl` — List access control rules for a calendar. Shows who has access and their permission level.
- `gcal_get_acl` — Get a specific access control rule by rule ID.
- `gcal_create_acl` — Share a calendar with a user, group, or domain by creating an access control rule.
- `gcal_update_acl` — Update the permission level of an existing access control rule.
- `gcal_delete_acl` — Remove an access control rule, revoking the grantee's access to the calendar.
- `gcal_query_freebusy` — Check availability (free/busy) for one or more calendars within a time range. Useful for finding meeting times.
- `gcal_get_colors` — Get the color palette for calendars and events. Returns color IDs that can be used with gcal_create_event and gcal_upda…
- `gcal_list_settings` — List all user settings for Google Calendar (locale, timezone, date format, week start, etc.).

```bash
# Get full input/output schema for a tool
npx -y @smithery/cli@latest tool get node2flow/google-calendar <tool-name>
```

## Resources

- `gcal://server-info` — Connection status and available tools for this Google Calendar MCP server

## Prompts (2)

- `schedule-and-manage` — Guide for creating events, recurring schedules, attendees, and reminders
- `search-and-organize` — Guide for searching events, managing calendars, sharing, and checking availability

---

License: MIT
