# Google Calendar MCP connector

The Google Calendar connector lets Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent read and manage your Google Calendar events, calendars, and free/busy time as you, with every action recorded in an audit log.

Source: https://elaichi.ai/connectors/googlecalendar/

## Facts

| | |
| --- | --- |
| Application | Google Calendar |
| Category | Scheduling |
| AI tools | 38 |
| Authentication | Connects over OAuth |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 38 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Google Calendar is connected

- Which events next week have no agenda in the description?
- How many hours of meetings does Support have Thursday?
- Create a 30 minute review event on the Hiring calendar.

## Connect Google Calendar in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Google Calendar.
2. Optionally set Share with, then press Connect.
3. Approve it in Google Calendar. Google Calendar's own window opens. Whoever approves it decides what this connection can reach.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Google Calendar tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Google Calendar to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Google Calendar to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Google Calendar to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Google Calendar to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Google Calendar tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Google Calendar through Elaichi

### Book the follow-up before the call ends

Sales. Ask for a 30 minute follow-up with the prospect next Tuesday and the event lands on your Google Calendar with the right attendees invited. Move it later with one request if the deal slips a week.

### Schedule callbacks from the queue

Support. Turn a promised callback into a Google Calendar event on the agent's calendar, with the customer's name and ticket reference in the description. Reschedule it when the customer replies with a better time.

### Find a slot that works for everyone

Executive assistants. Check free and busy time across several colleagues' Google Calendars at once and get back the open windows for a one hour meeting. Create the event in the gap and invite the right people.

### Line up interviews without the back and forth

People. See when each interviewer is free, book the panel on a shared hiring calendar in Google Calendar, and update the event when a candidate asks to move.

### Get a plain summary of the week ahead

Leadership. Ask what is on your Google Calendar next week and get the meetings grouped by day, including each occurrence of your recurring one to ones. Clear out the events that no longer need to happen.

### Keep shared calendars tidy

Operations. Create a Google Calendar for a project or a room, add the launch dates and review meetings from a list, and rename or retire the calendar when the project closes.

## Frequently asked questions

### How do I connect Google Calendar to Claude?

Connect Google Calendar in Elaichi first: pick it from the catalog, sign in with your Google account, and approve access to your calendars. There is no OAuth application to register and no client ID or secret to generate. Then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. Claude will ask you to sign in to Elaichi once and Google Calendar is available.

### Does Google Calendar work with ChatGPT and Cursor as well as Claude?

Yes. Once Google Calendar is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Google Calendar once and every client you use picks it up.

### What can an AI agent actually do with my Google Calendar data?

An agent can read your Google Calendar events for any date range, create new events and invite attendees, move or update events when plans change, delete events you no longer need, and check when several people are free. It can also list your calendars, create a new shared calendar, and look up a contact by name to invite them. Short, concrete asks such as "book 30 minutes with Priya on Thursday afternoon" work better than long paragraphs.

### Does connecting Google Calendar give the AI access to every calendar in my company?

No. The AI only sees the Google Calendar calendars and events the person who signed in can already see, whether that is their own calendar or ones shared with them. Elaichi can narrow that access further, for example to read only, but it never widens it beyond what Google Calendar already allows that person.

### Can my team share one Google Calendar connection?

Yes. One person connects Google Calendar in Elaichi and shares the connection with a team, so nobody else has to handle a sign-in or a credential. Each teammate still signs in to Elaichi as themselves, so every event created or moved in Google Calendar is recorded under the name of the person who asked for it.

### Can I stop an agent from deleting or changing things in Google Calendar?

Yes. Restrictions in Elaichi apply per action, so you can allow an agent to read Google Calendar events and check availability while blocking it from deleting events or clearing calendars. A blocked action is never shown to Claude, ChatGPT, Cursor, or any other client, so no prompt can reach it.

### What happens to a Google Calendar connection when someone leaves?

Offboarding a person in Elaichi ends their access to Google Calendar through every AI client at once. A Google Calendar connection they shared with a team keeps working for everyone else on that team. If you disconnect Google Calendar in Elaichi, it disappears from Claude, ChatGPT, Cursor, and every other connected client in one step.

## All 38 Google Calendar tools

Every tool below is callable through https://api.elaichi.ai/mcp once Google Calendar is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Google Calendar userinfo** (List). Retrieves basic profile information about the authenticated user in Google Calendar. The response includes essential details such as the user's unique identifier (sub), full name (name), first name (given_name), last name (family_name), profile picture URL (picture), and email address (email).
- **List all Google Calendar calendar lists** (List). List the calendars on the authenticated user's Calendar List (owned plus subscribed). Use when browsing available calendars or resolving a display name to a calendar id before calling events list or get. Results are summaries; fetch full calendar metadata via this resource's get method or calendars get. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google Calendar calendar list by ID** (Get). Read one Calendar List entry: access role, colors, and visibility for a calendar the user has subscribed to. Use when checking how a calendar appears in the user's list (not the calendar's own metadata — use calendars get for that). Obtain id from the calendar list.
- **Create a Google Calendar calendar list** (Create). Add an existing calendar to the authenticated user's Calendar List (subscribe). Use when the user wants another calendar to appear in their list. Do NOT use this to create a brand-new secondary calendar — use calendars create for that. Returns the new list entry including the calendar id.
- **Update a Google Calendar calendar list by ID** (Update). Update a Calendar List entry's preferences (color, visibility, reminders) for a subscribed calendar. Use when changing how a calendar appears in the user's list without changing the calendar itself. Obtain id from the calendar list.
- **Delete a Google Calendar calendar list by ID** (Delete). Remove a calendar from the user's Calendar List (unsubscribe). Use when the user no longer wants a subscribed calendar shown. Does not delete the underlying calendar — use calendars delete for that. Returns an empty 204 response on success. Obtain id from the calendar list.
- **Google Calendar calendar lists watch** (Action). Open a push-notification channel for changes to the user's Calendar List. Use when an app needs webhook alerts when calendars are added or removed from the list — not for reading the list itself (use the calendar list). Returns a channel with id and expiration.
- **Get single Google Calendar calendar by ID** (Get). Read a Google Calendar's metadata: display name, description, time zone, and location. Use when resolving a calendar id to human-readable details before listing or creating events. Obtain id from the calendar list or calendars create.
- **Create a Google Calendar calendar** (Create). Create a secondary Google Calendar with a summary (display name). Use when the user needs a new calendar separate from their primary one. Returns the created calendar including its id — store it for subsequent event calls. Do not use this to add someone else's calendar to the list; use the calendar list create for that.
- **Update a Google Calendar calendar by ID** (Update). Update a Google Calendar's metadata (summary, description, time zone, location); only fields provided are changed. Use when renaming a calendar or correcting its details. Obtain id from the calendar list.
- **Delete a Google Calendar calendar by ID** (Delete). Delete a secondary Google Calendar by id. Use when permanently removing a calendar the user owns (not the primary). This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. To wipe events but keep the calendar, use calendars clear instead. Obtain id from the calendar list.
- **Google Calendar calendars clear** (Clear). Delete every event on a Google Calendar identified by calendar_id, leaving the calendar itself. Use when the user wants to wipe a calendar clean without deleting it. This clears all events and cannot be undone; confirm the calendar and get explicit user confirmation before calling. To remove the calendar entirely, use calendars delete. Obtain calendar_id from the calendar list.
- **List all Google Calendar events** (List). List events on a Google Calendar for a time window. Use when asking what's on the schedule, finding free slots, or resolving an event title to an id. Pass calendar_id (from the calendar list; primary is usually 'primary'). Results are summaries; fetch a full record via this resource's get method. For expanded occurrences of a recurring series, use event instances instead. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Create a Google Calendar event** (Create). Create a structured Google Calendar event with title, start/end, attendees, and optional location or conference data. Use when scheduling a meeting with known fields. For a one-line natural-language create ("Lunch Friday 1pm"), prefer events quick-add. For importing an existing iCalendar payload, use events import. Returns the created event including its id.
- **Get single Google Calendar event by ID** (Get). Read a single Google Calendar event: title, time, attendees, location, and description. Use when you already know the event id and need full details. For browsing many events, use events list instead. Obtain id from events. Requires calendar_id of the calendar that owns the event.
- **Update a Google Calendar event by ID** (Update). Partially update an existing Google Calendar event; only fields provided are changed. Use when rescheduling, renaming, or editing attendees on a known event. Obtain id from events. Requires calendar_id.
- **Google Calendar events quick add** (Add). Create a Google Calendar event from a free-text phrase (natural language). Use when the user describes an event in one sentence without structured fields. For full control over attendees, recurrence, or conference data, use events create instead. Returns the created event including its id.
- **Google Calendar events move** (Move). Move a Google Calendar event from one calendar to another. Use when the user wants an event on a different calendar without recreating it. Pass the source calendar_id, event_id, and destination calendar id. Obtain ids from the calendar list and events.
- **Delete a Google Calendar event by ID** (Delete). Delete a Google Calendar event by id. Use when the user asks to cancel or remove a specific event. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from events. Requires calendar_id.
- **Google Calendar events import** (Import). Import an existing iCalendar event into a Google Calendar, preserving the original event id when possible. Use when migrating or syncing an external .ics event. For creating a brand-new event from structured fields, use events create instead.
- **Google Calendar events watch** (Action). Open a push-notification channel for event changes on a Google Calendar. Use when an app needs webhook alerts for creates/updates/deletes — not for reading the schedule (use events list). Returns a channel with id and expiration. Requires calendar_id.
- **List all Google Calendar event instances** (List). List expanded instances of a recurring Google Calendar event within a time range. Use when you need each occurrence of a series (with concrete start/end times), not the master recurring event. Pass calendar_id and event_id of the recurring series. For ordinary event browsing, use events list instead. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **List all Google Calendar free busy** (List). Get free/busy information for a set of calendars in Google Calendar. Requires timeMin, timeMax, and items with calendar or group ids. Returns busy time ranges and any errors per calendar.
- **List all Google Calendar search contacts** (List). Get a list of contacts matching the query in Google Calendar. Requires query and readMask. Returns matched contacts with fields specified in readMask such as names, emailAddresses, phoneNumbers, and organizations.
- **Get single Google Calendar search contact by ID** (Get). Get information about a specific contact by id in Google Calendar. Requires personFields parameter specifying which fields to return such as names, emailAddresses, phoneNumbers, and organizations.
- **Delete a Google Calendar search contact by ID** (Delete). Delete a contact person by id in Google Calendar. The response is empty if successful. Non-contact data will not be deleted. Mutate requests must be sent sequentially to avoid latency and failures.
- **List all Google Calendar other contacts** (List). Get a list of other contacts matching the query in Google Calendar. Requires query and readMask parameters. Returns matched contacts with fields emailAddresses, metadata, names, and phoneNumbers.
- **List all Google Calendar acl** (List). List who can access a Google Calendar and their roles (reader, writer, owner). Use when auditing sharing or resolving who has access before changing permissions. Pass calendar_id. Results are summaries; fetch a full record via this resource's get method. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google Calendar acl by ID** (Get). Read one ACL rule for a Google Calendar: the subject (user/group/domain) and their role. Use when inspecting a known sharing rule. Obtain id from calendar ACL. Requires calendar_id.
- **Delete a Google Calendar acl by ID** (Delete). Revoke a Google Calendar sharing rule by deleting an ACL entry. Use when removing someone's access. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from calendar ACL. Requires calendar_id.
- **Update a Google Calendar acl by ID** (Update). Change the role or scope of an existing Google Calendar ACL rule. Use when upgrading/downgrading someone's access. Obtain id from calendar ACL. Requires calendar_id.
- **Create a Google Calendar acl** (Create). Grant access to a Google Calendar by creating an ACL rule (role + scope). Use when sharing a calendar with a user, group, or domain. Returns the created rule including its id. Requires calendar_id.
- **Google Calendar acl watch** (Action). Open a push-notification channel for ACL changes on a Google Calendar. Use when an app needs webhook alerts when sharing rules change — not for listing ACL (use calendar ACL). Requires calendar_id.
- **Google Calendar channels stop** (Stop). Stop watching resources through a channel in Google Calendar. Returns an empty response on success.
- **List all Google Calendar colors** (List). List the palette of calendar and event color ids with background/foreground hex values. Use when mapping a colorId on a calendar or event to a display color. Read-only; does not change any calendar.
- **List all Google Calendar settings** (List). List the authenticated user's Google Calendar settings (locale, time zone, default event duration, etc.). Use when reading preference values that affect how events are displayed or created. Returns one page; pass the response's next_cursor to fetch subsequent pages.
- **Get single Google Calendar setting by ID** (Get). Read one Google Calendar user setting by id (key/value). Use when you need a specific preference such as timezone or locale. Obtain id from settings.
- **Google Calendar settings watch** (Action). Open a push-notification channel for Google Calendar settings changes. Use when an app needs webhook alerts for preference updates — not for reading settings (use settings list).
