# Google Calendar MCP

> Google Calendar MCP Server manages your entire professional schedule. It lets your AI client read every meeting detail, check for time conflicts across multiple users, and book new appointments directly in chat. You can list all calendars, search past events by keyword, or completely modify an existing booking—all without touching the web interface.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** time-management, meeting-scheduling, event-coordination, availability-tracking, agenda-management

## Description

Listen up. This Google Calendar MCP Server hooks your entire professional schedule right into your AI client. Forget fiddlin' with a web interface; this thing lets your agent handle all the meeting mess inside your chat window.

The **Google Calendar MCP Server** gives you full control over every calendar linked to your account, letting your agent read details, check for conflicts across multiple people, and book stuff without ya liftin' a finger. You can list every single calendar you got, search past bookings by keywords, or even totally overhaul an existing appointment.

### **Managing Your Time & Meetings**

When it comes to figuring out if you're free, the server lets your agent run `check_free_busy` to see if a specific calendar is open for any given time slot. If you need to figure out what calendars are even attached to your account, you use `list_calendars`. You can also pull basic info on a single calendar using `get_calendar_metadata`, and check who's got access control rights by running `list_acl`.

If you’re trying to find specific appointments in the past or future, the system lets your agent use `search_events`, which reads natural language queries across all your bookings. For a full rundown of upcoming events on one calendar, it runs `list_events`. You can also get detailed information for a single event using `get_event` once you've got that specific ID.

### **Booking and Modifying Appointments**

Need to book something? Your agent uses `quick_add_event` to create an appointment just by reading plain text input. For more control, it runs `create_event` to schedule and add a brand new event to your primary calendar. If you need to update an existing booking—like change the time, location, or who's invited—the agent uses `update_event`. You can also completely wipe out an old meeting using `delete_event`, which cancels or removes any calendar entry entirely.

### **Advanced Controls & Settings**

The server gives your agent ways to read the system itself. It pulls general configuration and settings for your user calendar via `get_settings`. When it comes to finding out what's happening, you can run `list_events` against a specified calendar to get all upcoming items. The toolset is built so that your AI client manages every step—it handles the overlaps and sends invites based on whatever instructions you give it.

## Tools

### check_free_busy
Checks if the calendar is available within a specific time range.

### create_event
Schedules and adds a new event to your primary calendar.

### delete_event
Cancels or removes an existing calendar entry entirely.

### get_calendar_metadata
Retrieves information about a specific, named calendar.

### get_event
Gets full details for one specified event ID.

### get_settings
Pulls the general configuration and settings for your user calendar.

### list_acl
Displays who has access control rights to a specific calendar.

### list_calendars
Lists every single calendar account linked under your user profile.

### list_event_instances
List instances of a recurring event

### list_events
Retrieves all upcoming events from a specified calendar for listing.

### move_event
Move an event to a different calendar

### patch_event
Partially update an event (e.g., change just the status or attendees)

### quick_add_event
Creates an event simply by reading and processing a plain text string input.

### search_events
Searches your calendar history or future bookings using a natural language query.

### update_event
Modifies an existing event's details, such as time, location, or attendees.

## Prompt Examples

**Prompt:** 
```
Check my schedule for tomorrow and list the upcoming overlapping events.
```

**Response:** 
```
Scanning the timeline for tomorrow... Between 14:00 and 15:00 UTC I detected two conflicting bookings: 'Q3 Board Review' and 'Design Synchronization Session'. Should I cancel the Design sync?
```

**Prompt:** 
```
Book a 30-minute sync session with marketing@domain.com for next Tuesday at 10 AM.
```

**Response:** 
```
Request finalized. Event 'Marketing Sync Session' successfully placed on the calendar for next Tuesday at 10:00 (Duration: 30m). An invite payload including Meet details was beamed to marketing@domain.com.
```

**Prompt:** 
```
Modify the location of the event titled 'Team Dinner' to 'The Grand Plaza Downtown'.
```

**Response:** 
```
Search pinpointed the item ('Team Dinner' // ID: c18ba29d). Location parameter swapped securely to 'The Grand Plaza Downtown'. Updates have been cascaded down successfully.
```

## Capabilities

### Check Availability
Determines if a specific time slot is free for one or more people.

### Create Events
Schedules and adds a new event to your calendar, complete with attendees and duration.

### Cancel/Delete Meetings
Removes an existing calendar entry entirely.

### List All Calendars
Pulls a list of every calendar associated with your user account.

### Find Specific Events
Searches all entries for keywords or criteria, pulling matching event data.

### Update Booking Details
Modifies existing events—like changing the location or updating the description.

## Use Cases

### The Overlapping Schedule
A Project Manager needs to book a crucial follow-up meeting, but the primary stakeholder is booked at 2 PM. They ask their agent: 'Check for availability next week after 10 AM.' The agent runs `check_free_busy` and finds three open slots, allowing the PM to select one instantly using `create_event`.

### The Last-Minute Move
A team member's meeting location changes from 'Room A' to a client site. Instead of manually editing the invite, they tell their agent: 'Change 'Q3 Sync' location to 123 Main Street.' The agent uses `update_event` and cascades the change across all invites.

### The Quick Follow-Up
A founder needs a quick sync with an external vendor next week. They simply type: 'Book 30 minutes with Acme Corp on Friday.' The agent uses `quick_add_event` to generate and send the invite without needing specific date/time inputs.

### The Historical Deep Dive
An executive needs proof of last quarter's meetings. They ask their agent: 'Show me all events mentioning 'board review' in Q2.' The agent runs `search_events` and pulls a clean list, saving hours of manual searching.

## Benefits

- Stop guessing if people are free. Use `check_free_busy` to instantly validate time slots for a team of five, eliminating scheduling ping-pong.
- Book meetings in seconds. The `quick_add_event` tool lets you write 'Sync with Marketing next Tuesday' and get the event created without needing formal parameters.
- Handle changes fluidly. If a meeting moves or needs an address update, just run `update_event` to modify it directly—no manual edits required.
- See everything at once. Use `list_events` to pull all bookings from a specific calendar so you can get a full picture of the week's commitments.
- Find that one meeting. Instead of scrolling through months, use `search_events` with keywords (e.g., 'budget review') and let your agent find it.

## How It Works

The bottom line is: You give the AI client the task; it uses the tools to talk to Google Calendar and gives you the answer.

1. First, you subscribe to this server and provide your OAuth credentials for Google Workspace/GCP.
2. Next, you tell your AI client exactly what task needs doing—for example, 'Find a 30-minute slot next week when John is free.'
3. The agent executes the necessary tool calls (like `check_free_busy`), retrieves the data, and reports the outcome directly to you.

## Frequently Asked Questions

**How do I use the `quick_add_event` tool?**
Just send a plain text prompt describing the event. The agent processes natural language input and uses the underlying Google API to book the time automatically.

**Can I check for conflicts using `check_free_busy`?**
Yes, that's exactly what it does. You provide a starting range and an ending range, and the tool tells you if any booked times overlap with your request.

**What is the difference between `list_events` and `search_events`?**
`list_events` pulls all scheduled events for a calendar. `search_events` lets you query by text, pulling out specific bookings that mention certain keywords or topics.

**How do I change an event's time using `update_event`?**
You must first find the event (using its ID or a search query), and then tell the agent to run `update_event` with the new parameters, like the updated date.

**How do I use `create_event` to schedule a series of meetings?**
You pass an array of event parameters to create multiple entries. The server processes these sequentially, guaranteeing that all specified time slots and attendees get booked correctly.

**What happens when I use the `delete_event` tool?**
Deleting an event automatically sends a cancellation payload to all listed participants. This ensures everyone receives notice right away that the meeting slot is officially cleared from their calendar.

**How do I find out which calendars are connected using `list_calendars`?**
Running `list_calendars` returns a full list of all available calendar IDs and names linked to your account. You must use these specific IDs for any subsequent tool calls.

**How does the `list_acl` tool help me check access permissions?**
This tool pulls the Access Control List rules for a given calendar ID. It shows exactly who has read, write, or delete permission before you try to modify anything.

**Can it automatically generate meet links when booking?**
Yes. When building the `create_event` request, the agent can structure event metadata that explicitly flags conferencing generation. You get a Google Meet URL seamlessly inside the payload.

**How does the tool handle multiple calendars (e.g. personal and work)?**
It requires querying the primary or specified secondary calendar IDs. By default, it operates on 'primary'. You can command the agent to use `list_calendars` to pick and choose exactly which specific agenda it targets.

**Will the AI delete historical meetings completely if I ask it?**
While specific `delete_event` tools track individual IDs, bulk deletions and catastrophic operations are architecturally suppressed for safety. Removing isolated tasks works strictly one-by-one by direct matching.