mcp-gcalendar mcp

v1.1.0 · MCP Tool · productivity · registry.pascalai.org

Google Calendar API v3. Operations: calendars (list all), events (list with time range/search), get_event, create_event, update_event (full replace), patch_event (partial update), delete_event, quick_add (natural language), busy (free/busy query). Auth via access_token or GOOGLE_ACCESS_TOKEN env var; auto-refresh with refresh_token+client_id+client_secret.

gcalendargooglecalendareventsscheduleproductivityoauth2

Input Parameters

ParameterTypeDescription
operationrequired string Operation to perform. Default: calendars. One of: calendars, events, get_event, create_event, update_event, patch_event, delete_event, quick_add, busy.
accessTokenoptional string OAuth2 access token. Can also be set via GOOGLE_ACCESS_TOKEN env var.
refreshTokenoptional string OAuth2 refresh token for auto-refresh. Can also be set via GOOGLE_REFRESH_TOKEN env var.
clientIdoptional string OAuth2 client ID. Can also be set via GOOGLE_CLIENT_ID env var.
clientSecretoptional string OAuth2 client secret. Can also be set via GOOGLE_CLIENT_SECRET env var.
calendarIdoptional string Calendar ID. Default: 'primary'. Use 'calendars' operation to list available IDs. Default: primary.
eventIdoptional string Event ID. Required for get_event, update_event, patch_event, delete_event.
summaryoptional string Event title. Required for create_event.
descriptionoptional string Event description/notes.
locationoptional string Event location.
startDateTimeoptional string Start datetime in RFC3339 format (e.g. '2024-03-15T10:00:00'). Use for timed events. Required if startDate not provided.
endDateTimeoptional string End datetime in RFC3339 format (e.g. '2024-03-15T11:00:00'). Use for timed events.
startDateoptional string Start date for all-day events (YYYY-MM-DD). Use instead of startDateTime for all-day events.
endDateoptional string End date for all-day events (YYYY-MM-DD, exclusive). E.g. for March 15 all-day: startDate='2024-03-15', endDate='2024-03-16'.
timeZoneoptional string IANA timezone (e.g. 'America/New_York', 'Europe/Madrid'). Default: UTC. Default: UTC.
attendeesoptional string Attendee emails, comma-separated (e.g. 'alice@example.com,bob@example.com').
quickTextoptional string Natural language text for quick_add (e.g. 'Lunch with Bob tomorrow at noon'). Required for quick_add.
timeMinoptional string Filter events from this datetime (RFC3339). For events and busy operations.
timeMaxoptional string Filter events until this datetime (RFC3339). Required for busy operation.
maxResultsoptional integer Max events to return for events operation. Default: 25. Default: 25.
pageTokenoptional string Page token for pagination.
queryoptional string Free-text search in event fields (for events operation).
recurrenceoptional string Recurrence rule (RRULE). E.g. 'RRULE:FREQ=WEEKLY;COUNT=10' or 'RRULE:FREQ=DAILY;UNTIL=20241231T000000Z'.
colorIdoptional string Event color ID (1-11). 1=Lavender, 2=Sage, 3=Grape, 4=Flamingo, 5=Banana, 6=Tangerine, 7=Peacock, 8=Blueberry, 9=Basil, 10=Tomato, 11=Graphite.

Output Fields

FieldTypeDescription
items array[object]
id string
summary string
start object
end object
ok boolean
event_id string
nextPageToken string

Examples

List upcoming events

// Input
{
  "operation": "events",
  "accessToken": "ya29.xxx",
  "timeMin": "2024-03-01T00:00:00Z",
  "maxResults": 10
}

// Output
{
  "items": [],
  "nextPageToken": ""
}

Create a timed meeting

// Input
{
  "operation": "create_event",
  "accessToken": "ya29.xxx",
  "summary": "Team Standup",
  "startDateTime": "2024-03-15T09:00:00",
  "endDateTime": "2024-03-15T09:30:00",
  "timeZone": "America/New_York",
  "attendees": "alice@example.com,bob@example.com",
  "location": "Conference Room A"
}

// Output
{
  "id": "abc123",
  "summary": "Team Standup"
}

Create an all-day event

// Input
{
  "operation": "create_event",
  "accessToken": "ya29.xxx",
  "summary": "Company Holiday",
  "startDate": "2024-03-20",
  "endDate": "2024-03-21"
}

// Output
{
  "id": "xyz789"
}

Quick add event from natural language

// Input
{
  "operation": "quick_add",
  "accessToken": "ya29.xxx",
  "calendarId": "primary",
  "quickText": "Lunch with Bob tomorrow noon at Restaurant ABC"
}

// Output
{
  "id": "qab456",
  "summary": "Lunch with Bob"
}

Check free/busy

// Input
{
  "operation": "busy",
  "accessToken": "ya29.xxx",
  "calendarId": "primary",
  "timeMin": "2024-03-15T00:00:00Z",
  "timeMax": "2024-03-15T23:59:59Z"
}

// Output
{
  "calendars": {}
}

Install & Discovery

Install

ppm install mcp-gcalendar

Get JSON Schema

GET /v1/packages/mcp-gcalendar/1.1.0/schema

Discover by keyword

GET /v1/mcp/discover?q=gcalendar
Discovery hint: Install with ppm install mcp-gcalendar or invoke remotely via POST /v1/invoke/mcp-gcalendar on the MCP Service.