githubEdit

Google Calendar MCP

Google Calendar MCP

What This Does

Enables Claude Code to list, search, create, and manage Google Calendar events.

Source

  • GitHub: https://github.com/nspady/google-calendar-mcp

  • Docker: ghcr.io/metorial/mcp-container--nspady--google-calendar-mcp--google-calendar-mcp

  • Container Registry: https://github.com/metorial/mcp-containers

Prerequisites

  • Docker Desktop installed

  • @theentourageai.com Google account

  • Google Cloud Project with Calendar API enabled

Step 1: Create Local Config Folder

mkdir -p ~/.config/mcp/gcalendar

Step 2: Get Credentials

Create Google Cloud OAuth Credentials

  1. Go to https://console.cloud.google.com

  2. Log in with your @theentourageai.com account

  3. Create a new project or select existing one

  4. Enable Google Calendar API:

    • Go to APIs & Services → Library

    • Search "Google Calendar API"

    • Click Enable

Create OAuth Client

  1. Go to APIs & Services → Credentials

  2. Click Create Credentials → OAuth client ID

  3. Application type: Desktop app

  4. Name: "Calendar MCP"

  5. Click Create

  6. Click Download JSON

  1. Go to APIs & Services → OAuth consent screen

  2. User type: Internal (for Workspace accounts)

  3. Fill in:

    • App name: "Calendar MCP"

    • User support email: your @theentourageai.com email

    • Developer contact: your @theentourageai.com email

  4. Add scopes:

    • https://www.googleapis.com/auth/calendar

    • https://www.googleapis.com/auth/calendar.events

    • https://www.googleapis.com/auth/calendar.readonly

  5. Save

Step 3: Save Credentials Locally

Move the downloaded OAuth JSON file:

Step 4: Pull Docker Image

Step 5: First Run (Authentication)

Run with port exposed for OAuth callback:

  1. Open http://localhost:3000/accounts in browser

  2. Click "Add Account"

  3. Log in with your @theentourageai.com account

  4. Grant permissions

  5. Token will be saved to ~/.config/mcp/gcalendar/

Step 6: Add to Claude Code

Add to ~/.claude/settings.json:

Note: If ${HOME} doesn't expand, use absolute path:

Step 7: Verify It Works

Restart Claude Code and test:

Expected: List of calendar events for the next day.

Available Tools

Tool
Description

list-calendars

List all available calendars

list-events

List events from calendars

search-events

Search events by text query

get-event

Get specific event details

create-event

Create a new calendar event

update-event

Update an existing event

delete-event

Delete a calendar event

get-freebusy

Check availability

get-current-time

Get current time

respond-to-event

Accept/decline/tentative response

list-colors

List available event colors

Multi-Account Setup

This MCP supports multiple Google accounts:

  1. Run container with port 3000 exposed

  2. Visit http://localhost:3000/accounts

  3. Click "Add Account" for each account

  4. Give each account a nickname (e.g., "work", "personal")

Query multiple accounts:

Troubleshooting

Issue
Solution

"Access blocked"

Add your email as test user in OAuth consent

Token expired

Re-authenticate via /accounts endpoint

"Calendar not found"

Use list-calendars to find correct calendar ID

No events returned

Verify date range is correct

Permission denied

Check OAuth scopes include calendar access

Port 3000 in use

Stop other services or use different port

Last updated