A Model Context Protocol (MCP) server that provides Google Calendar integration for AI assistants like Claude.
https://www.googleapis.com/auth/calendar.events
and https://www.googleapis.com/auth/calendar
Option 1: Use with npx (Recommended)
Add to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "google-calendar": { "command": "npx", "args": ["@cocal/google-calendar-mcp"], "env": { "GOOGLE_OAUTH_CREDENTIALS": "/path/to/your/gcp-oauth.keys.json" } } } }
⚠️ Important Note for npx Users: When using npx, you must specify the credentials file path using the GOOGLE_OAUTH_CREDENTIALS
environment variable.
Option 2: Local Installation
git clone https://github.com/nspady/google-calendar-mcp.git cd google-calendar-mcp npm install npm run build
Then add to Claude Desktop config using the local path or by specifying the path with the GOOGLE_OAUTH_CREDENTIALS
environment variable.
Option 3: Docker Installation
git clone https://github.com/nspady/google-calendar-mcp.git cd google-calendar-mcp cp /path/to/your/gcp-oauth.keys.json . docker compose up
See the Docker deployment guide for detailed configuration options including HTTP transport mode.
If you're in test mode (default), tokens expire after 7 days. If you are using a client like Claude Desktop it should open up a browser window to automatically re-auth. However, if you see authentication errors you can also resolve by following these steps:
For npx users:
export GOOGLE_OAUTH_CREDENTIALS="/path/to/your/gcp-oauth.keys.json" npx @cocal/google-calendar-mcp auth
For local installation:
To avoid weekly re-authentication, publish your app to production mode (without verification):
See Authentication Guide for details.
Along with the normal capabilities you would expect for a calendar integration you can also do really dynamic, multi-step processes like:
Cross-calendar availability:
Please provide availability looking at both my personal and work calendar for this upcoming week.
I am looking for a good time to meet with someone in London for 1 hr.
Add events from screenshots, images and other data sources:
Add this event to my calendar based on the attached screenshot.
Supported image formats: PNG, JPEG, GIF Images can contain event details like date, time, location, and description
Calendar analysis:
What events do I have coming up this week that aren't part of my usual routine?
Check attendance:
Which events tomorrow have attendees who have not accepted the invitation?
Auto coordinate events:
Here's some available that was provided to me by someone. {available times}
Take a look at the times provided and let me know which ones are open on my calendar.
list-calendars
List all available calendars list-events
List events with date filtering search-events
Search events by text query create-event
Create new calendar events update-event
Update existing events delete-event
Delete events get-freebusy
Check availability across calendars, including external calendars list-colors
List available event colors
Environment Variables:
GOOGLE_OAUTH_CREDENTIALS
- Path to OAuth credentials fileGOOGLE_CALENDAR_MCP_TOKEN_PATH
- Custom token storage location (optional)Claude Desktop Config Location:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
OAuth Credentials File Not Found:
GOOGLE_OAUTH_CREDENTIALS
Authentication Errors:
Build Errors:
npm install && npm run build
againbuild/
directory and run npm run build
"Something went wrong" screen during browser authentication
For re-authentication or troubleshooting:
# For npx installations export GOOGLE_OAUTH_CREDENTIALS="/path/to/your/credentials.json" npx @cocal/google-calendar-mcp auth # For local installations npm run auth
MIT
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4