Overview
What is Google Calendar MCP Server?
It is an implementation of the Model Context Protocol (MCP) for Google Calendar that enables interaction with calendar events via CLI or Server-Sent Events (SSE). It is designed for developers and users who want to programmatically manage Google Calendar events through MCP-compatible clients.
How to use Google Calendar MCP Server?
Prerequisites: Node.js 18+, a Google account with Calendar API access, and OAuth 2.0 credentials from Google Cloud Console. Configure environment variables (GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKEN, etc.) in a .env file, install dependencies (npm install), and build (npm run build). Run as an HTTP/SSE server (npm run start:http) or as a CLI stdio server (npm run start:stdio). Integrate with MCP clients like Claude Desktop by adding the server configuration to the client's config file.
Key features of Google Calendar MCP Server
- List calendar events within a specified time range
- Create new events with attendees, description, and time
- Update existing events (summary, start/end time)
- Delete events from the calendar
- Find free time slots for a given duration
- Supports both HTTP/SSE and CLI stdio transports
Use cases of Google Calendar MCP Server
- Automate event creation and management from an MCP client
- Check availability and schedule meetings without manual calendar checks
- Integrate Google Calendar into larger workflows via MCP
- Build AI assistants that can read and modify calendar events
FAQ from Google Calendar MCP Server
What are the prerequisites to run the server?
Node.js 18 or higher, a Google account, and OAuth 2.0 credentials (client ID, client secret, and a refresh token) from the Google Cloud Console.
How do I obtain a refresh token?
The README provides a JavaScript script (getToken.js) that starts a local HTTP server, generates an OAuth authorization URL, and after user consent prints the refresh token to the console.
What tools does the server expose?
Five tools: list_events, create_event, update_event, delete_event, and find_free_time. Each expects a JSON object with specific parameters (e.g., time range, event details).
How can I integrate the server with Claude Desktop?
Add a JSON entry to Claude's claude_desktop_config.json specifying the absolute path to the built index.js, the command node, and the required environment variables.
What transport modes are supported?
Two modes: HTTP/SSE (server listens on a port, default 3334) and CLI stdio (interactive command-line mode). The SSE endpoint is at GET /sse and message endpoint at POST /messages.