Built by Metorial, the integration platform for agentic AI.

Learn More

google-calendar

Google Calendar

    Server Summary

    • Manage calendar events

    • Schedule meetings naturally

    • Check calendar availability

    • Coordinate multiple calendars

Google Calendar MCP Server

A comprehensive Model Context Protocol (MCP) server that provides seamless integration with Google Calendar. This server enables AI assistants and applications to manage calendars, create and modify events, search schedules, and check availability—all through a standardized interface. Whether you need to schedule meetings, coordinate with attendees, or query your calendar for free time slots, this server provides the complete toolset for calendar management.

Overview

The Google Calendar MCP Server bridges the gap between AI applications and Google Calendar's powerful scheduling capabilities. It exposes a rich set of tools for calendar and event management, allowing applications to interact with Google Calendar as naturally as a human user would. From simple tasks like adding an appointment using natural language to complex operations like moving events between calendars and checking free/busy status across multiple calendars, this server handles it all.

Features

  • Complete Calendar Management: Create, read, update, and delete calendars with full control over properties like timezone and visibility
  • Comprehensive Event Operations: Full CRUD operations for calendar events with support for attendees, locations, and notifications
  • Natural Language Event Creation: Quick-add functionality that interprets natural language descriptions like "Lunch with Sarah next Tuesday at noon"
  • Advanced Search Capabilities: Search events by keywords, date ranges, and other criteria across your calendars
  • Free/Busy Checking: Query availability across multiple calendars to find optimal meeting times
  • Multi-Calendar Support: Manage multiple calendars simultaneously with filtering by access roles
  • Resource Templates: Pre-built URI patterns for quick access to common calendar views and event details

Tools

Calendar Management Tools

list_calendars

Retrieves all calendars accessible to the authenticated user. This tool provides visibility into all calendars you can access, including shared calendars from other users.

Parameters:

  • showHidden (boolean, optional): Whether to include hidden calendars in the results
  • minAccessRole (string, optional): Filter calendars by minimum access level - options include "freeBusyReader", "reader", "writer", or "owner"

create_calendar

Creates a new calendar with specified properties.

Parameters:

  • summary (string, required): The name/title of the new calendar
  • description (string, optional): A detailed description of the calendar's purpose
  • timeZone (string, optional): The timezone for the calendar (e.g., "America/New_York")

update_calendar

Modifies properties of an existing calendar.

Parameters:

  • calendarId (string, required): The ID of the calendar to update
  • summary (string, optional): Updated calendar name/title
  • description (string, optional): Updated calendar description
  • timeZone (string, optional): Updated timezone setting

delete_calendar

Permanently removes a calendar. This operation cannot be undone, so use with caution.

Parameters:

  • calendarId (string, required): The ID of the calendar to delete (cannot be "primary")

Event Management Tools

list_events

Retrieves events within a specified time range from a calendar.

Parameters:

  • calendarId (string, required): The calendar to query (use "primary" for your main calendar)
  • timeMin (string, optional): Start of the time range in ISO 8601 format
  • timeMax (string, optional): End of the time range in ISO 8601 format
  • maxResults (number, optional): Maximum number of events to return (default: 250)
  • orderBy (string, optional): Sort order - "startTime" or "updated"
  • query (string, optional): Free text search terms to filter events

create_event

Creates a new event with full control over all event properties.

Parameters:

  • calendarId (string, required): Target calendar ID (use "primary" for main calendar)
  • summary (string, required): Event title/name
  • startDateTime (string, required): Start time in ISO 8601 format (e.g., "2024-01-15T10:00:00-05:00")
  • endDateTime (string, required): End time in ISO 8601 format
  • description (string, optional): Detailed event description
  • location (string, optional): Event location or venue
  • timeZone (string, optional): Event timezone (e.g., "America/New_York")
  • attendees (array of strings, optional): Email addresses of event attendees
  • sendUpdates (string, optional): Notification preference - "all", "externalOnly", or "none"

update_event

Modifies an existing calendar event.

Parameters:

  • calendarId (string, required): Calendar containing the event
  • eventId (string, required): ID of the event to update
  • summary (string, optional): Updated event title
  • startDateTime (string, optional): Updated start time in ISO 8601 format
  • endDateTime (string, optional): Updated end time in ISO 8601 format
  • description (string, optional): Updated event description
  • location (string, optional): Updated location
  • timeZone (string, optional): Updated timezone
  • attendees (array of strings, optional): Updated attendee list
  • sendUpdates (string, optional): Notification preference

delete_event

Removes an event from a calendar.

Parameters:

  • calendarId (string, required): Calendar containing the event
  • eventId (string, required): ID of the event to delete
  • sendUpdates (string, optional): Whether to notify attendees - "all", "externalOnly", or "none"

quick_add_event

Creates an event using natural language input, making it easy to add events without worrying about date formats or structured data.

Parameters:

  • calendarId (string, required): Target calendar (use "primary" for main calendar)
  • text (string, required): Natural language description (e.g., "Dinner with John tomorrow at 7pm")
  • sendUpdates (string, optional): Notification preference

move_event

Transfers an event from one calendar to another while preserving event details.

Parameters:

  • sourceCalendarId (string, required): Calendar currently containing the event
  • eventId (string, required): ID of the event to move
  • destinationCalendarId (string, required): Calendar to move the event to
  • sendUpdates (string, optional): Notification preference

Search and Availability Tools

search_events

Performs a text search across events in a specific calendar.

Parameters:

  • calendarId (string, required): Calendar to search (use "primary" for main calendar)
  • query (string, required): Search terms to look for in event details
  • timeMin (string, optional): Start of time range to search within (ISO 8601 format)
  • timeMax (string, optional): End of time range to search within (ISO 8601 format)
  • maxResults (number, optional): Maximum number of results to return (default: 250)

get_freebusy

Checks availability across one or more calendars for a specified time period, perfect for finding meeting times or checking scheduling conflicts.

Parameters:

  • calendarIds (array of strings, required): List of calendar IDs to check
  • timeMin (string, required): Start of time range in ISO 8601 format
  • timeMax (string, required): End of time range in ISO 8601 format

Resource Templates

The server provides convenient URI templates for accessing common calendar resources without requiring explicit tool calls.

calendar

Access detailed information about a specific calendar.

URI Pattern: calendar://{calendarId}

calendar-event

Retrieve complete details of a specific event within a calendar.

URI Pattern: calendar://{calendarId}/event/{eventId}

calendar-upcoming

Get upcoming events from a specific calendar, useful for displaying what's next on the schedule.

URI Pattern: calendar://{calendarId}/events/upcoming

calendar-today

Access all events scheduled for today in a specific calendar.

URI Pattern: calendar://{calendarId}/events/today

primary-event

Quick access to a specific event in your primary calendar.

URI Pattern: calendar://primary/event/{eventId}

primary-upcoming

View upcoming events from your primary calendar without specifying a calendar ID.

URI Pattern: calendar://primary/events/upcoming

Use Cases

This MCP server enables a wide range of calendar automation and integration scenarios:

  • Personal Assistant Applications: AI assistants can schedule appointments, reschedule meetings, and provide schedule summaries
  • Meeting Coordination: Automatically find free time slots across multiple team members' calendars and schedule group meetings
  • Event Automation: Create recurring events, send invitations, and manage attendee lists programmatically
  • Schedule Analysis: Query calendars to analyze time usage, identify scheduling patterns, or generate reports
  • Calendar Synchronization: Move or copy events between different calendars for organization or backup purposes
  • Smart Reminders: Search for specific events and provide contextual reminders based on event details
  • Natural Language Scheduling: Allow users to add events using conversational language without learning complex date formats

Data Formats

The server uses ISO 8601 format for all date and time values, ensuring consistent and unambiguous time representations across different timezones. When specifying datetimes, include timezone information in the format: 2024-01-15T10:00:00-05:00.

Calendar IDs can be email addresses for user calendars or unique identifiers for shared calendars. The special value "primary" always refers to the authenticated user's main calendar.

Capabilities Summary

With twelve comprehensive tools and six resource templates, this MCP server provides everything needed for sophisticated calendar management. Whether you're building a scheduling assistant, automating event creation, coordinating team calendars, or analyzing time usage patterns, the Google Calendar MCP Server offers the functionality to make it happen seamlessly and reliably.