Built by Metorial, the integration platform for agentic AI.

Learn More

google-calendar

Google Calendar

    Server Summary

    • Manage calendar events

    • Check availability conflicts

    • Natural language scheduling

    • Multi-calendar coordination

Google Calendar MCP Server

A comprehensive Model Context Protocol (MCP) server that seamlessly integrates Google Calendar functionality into your AI workflows. This server enables AI assistants to manage calendars, create and modify events, check availability, and perform natural language scheduling operations with full access to the Google Calendar API.

Overview

The Google Calendar MCP Server provides a complete suite of tools for calendar management, allowing AI assistants to interact with Google Calendar as naturally as a human user would. From simple event creation to complex calendar operations like moving events between calendars, checking free/busy status across multiple calendars, and using natural language to schedule appointments, this server brings the full power of Google Calendar to your AI applications.

Whether you need to schedule meetings, coordinate team availability, manage multiple calendars, or search through your event history, this MCP server provides the tools necessary to automate and enhance your calendar workflows through conversational AI interactions.

Features

  • Full calendar lifecycle management (create, read, update, delete)
  • Comprehensive event management with timezone support
  • Natural language event creation using quick add functionality
  • Advanced event searching and filtering capabilities
  • Free/busy availability checking across multiple calendars
  • Event attendee management and notification controls
  • Multi-calendar support with event moving between calendars
  • Timezone-aware scheduling and event management
  • Resource templates for quick access to common calendar views

Tools

list_calendars

Retrieves all calendars accessible to the authenticated user. This tool allows you to discover available calendars and their access levels.

Parameters:

  • showHidden (boolean, optional): Include hidden calendars in the results
  • minAccessRole (string, optional): Filter calendars by minimum access level (freeBusyReader, reader, writer, or owner)

create_event

Creates a new calendar event with full control over timing, location, attendees, and notifications.

Parameters:

  • calendarId (string, required): The calendar to add the event to (use "primary" for your main calendar)
  • summary (string, required): The event title
  • startDateTime (string, required): Event start time in ISO 8601 format (e.g., 2024-01-15T10:00:00-05:00)
  • endDateTime (string, required): Event end time in ISO 8601 format
  • description (string, optional): Detailed event description
  • location (string, optional): Physical or virtual location
  • timeZone (string, optional): Timezone identifier (e.g., America/New_York)
  • attendees (array of strings, optional): List of attendee email addresses
  • sendUpdates (string, optional): Notification preference (all, externalOnly, or none)

update_event

Modifies an existing calendar event, allowing changes to any event property.

Parameters:

  • calendarId (string, required): The calendar containing the event
  • eventId (string, required): The unique identifier 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 description
  • location (string, optional): Updated location
  • timeZone (string, optional): Updated timezone
  • attendees (array of strings, optional): Updated attendee list
  • sendUpdates (string, optional): Notification preference for the update

delete_event

Permanently removes an event from a calendar with optional notification controls.

Parameters:

  • calendarId (string, required): The calendar containing the event
  • eventId (string, required): The unique identifier of the event to delete
  • sendUpdates (string, optional): Whether to notify attendees (all, externalOnly, or none)

list_events

Retrieves events from a calendar within a specified time range, with flexible filtering and ordering options.

Parameters:

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

quick_add_event

Creates events using natural language descriptions, leveraging Google Calendar's intelligent parsing capabilities. Simply describe the event in plain English.

Parameters:

  • calendarId (string, required): Target calendar (use "primary" for your main calendar)
  • text (string, required): Natural language event description (e.g., "Lunch with Sarah tomorrow at noon" or "Team meeting every Monday at 2pm")
  • sendUpdates (string, optional): Notification preference

move_event

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

Parameters:

  • sourceCalendarId (string, required): The calendar currently containing the event
  • eventId (string, required): The unique identifier of the event to move
  • destinationCalendarId (string, required): The calendar to move the event to
  • sendUpdates (string, optional): Whether to notify attendees of the change

create_calendar

Creates a new calendar with custom properties and timezone settings.

Parameters:

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

update_calendar

Modifies the properties of an existing calendar.

Parameters:

  • calendarId (string, required): The unique identifier of the calendar to update
  • summary (string, optional): Updated calendar name
  • description (string, optional): Updated description
  • timeZone (string, optional): Updated default timezone

delete_calendar

Permanently removes a calendar and all its events. This action cannot be undone.

Parameters:

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

search_events

Performs a text-based search across events within a calendar, with optional time range filtering.

Parameters:

  • calendarId (string, required): The calendar to search (use "primary" for your main calendar)
  • query (string, required): Search terms to match against event properties
  • timeMin (string, optional): Start of search time range in ISO 8601 format
  • timeMax (string, optional): End of search time range in 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 range, essential for scheduling meetings and avoiding conflicts.

Parameters:

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

Resource Templates

Resource templates provide convenient URI-based access to common calendar views and data, allowing for quick retrieval of frequently accessed information.

calendar

Access detailed information about a specific calendar.

URI Pattern: calendar://{calendarId}

calendar-event

Retrieve complete details of a specific event from any calendar.

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

calendar-upcoming

Get a list of upcoming events from a specific calendar, perfect for previewing what's ahead.

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

calendar-today

Access all events scheduled for today on a specific calendar.

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

primary-event

Quick access to events from your primary calendar without specifying the calendar ID.

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

primary-upcoming

Retrieve upcoming events from your primary calendar with a simplified URI.

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

Use Cases

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

  • Intelligent Scheduling: AI assistants can find available time slots, check conflicts, and schedule meetings based on natural language requests
  • Meeting Coordination: Automatically check team member availability and propose meeting times that work for everyone
  • Calendar Management: Create, organize, and maintain multiple calendars for different projects, teams, or purposes
  • Event Discovery: Search through calendar history to find past events, retrieve meeting notes, or track attendance
  • Automated Reminders: Set up events with specific notification preferences to ensure important appointments aren't missed
  • Cross-Calendar Operations: Move events between personal and work calendars, or consolidate schedules from multiple sources
  • Natural Language Interaction: Use conversational commands to manage your calendar without remembering specific syntax or formats

The server's comprehensive toolset allows AI assistants to interact with Google Calendar as effectively as a human user, making calendar management more intuitive and efficient through natural language processing and intelligent automation.