- Home
- MCP servers
- Google Calendar
Google Calendar
- typescript
42
GitHub Stars
typescript
Language
3 months ago
First Indexed
3 weeks ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
This Google Calendar MCP Server lets you manage events, check availability, and schedule meetings across all calendars through an MCP client. It supports local Node/Bun setups as well as remote Cloudflare Worker deployments, with OAuth 2.1 PKCE for secure access. Use it to search calendars, create and update events, add Google Meet links, and handle invitations in a streamlined MCP workflow.
How to use
You connect your MCP client to the Google Calendar MCP Server to search across calendars, create events, check availability, and handle invitations. When you run in local mode, start the MCP server and use an MCP client to point at the local endpoint. When you run in remote mode, deploy the Cloudflare Worker and point your MCP client at the worker URL. Every event returned includes the calendar it belongs to, so you can filter, update, or delete with confidence.
Common workflows you can perform: search events across all calendars, create events with optional Google Meet links, check availability before scheduling, and respond to invitations. Use natural language input to create events like “Lunch tomorrow at noon” or provide structured details such as title, start, end, attendees, and recurrence. All actions respect the access you have for each calendar and provide feedback about the calendar that contains the affected event.
How to install
Prerequisites: you need Bun and Node.js 20+ installed locally. You also need a Google Cloud project with Calendar API access for OAuth.
# 1) Clone the project and install runtime dependencies
git clone <repo>
cd google-calendar-mcp
bun install
# 2) Create and configure environment
cp env.example .env
Edit the .env with your OAuth credentials and redirect settings.
PORT=3000
AUTH_ENABLED=true
PROVIDER_CLIENT_ID=your_client_id
PROVIDER_CLIENT_SECRET=your_client_secret
OAUTH_SCOPES=https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly
OAUTH_REDIRECT_URI=http://127.0.0.1:3001/oauth/callback
OAUTH_REDIRECT_ALLOWLIST=alice://oauth/callback,http://127.0.0.1:3001/oauth/callback
Run the server locally with OAuth available on port 3001 for the authorization flow and port 3000 for MCP endpoints.
bun dev
# MCP: http://127.0.0.1:3000/mcp
# OAuth: http://127.0.0.1:3001
Configure your MCP client to connect to the local MCP endpoint or to a remote worker endpoint as shown in the client examples.
Additional configuration and deployment options
Two main deployment modes are supported: local Node/Bun development for quick testing and a remote Cloudflare Worker for production access.
Local development and OAuth flow use port 3000 for MCP and port 3001 for the OAuth authorization server.
Cloudflare Worker deployment provides a remote MCP endpoint at a worker URL. You should add the worker's redirect URI to your Google Cloud OAuth app's allowed redirect URIs.
Pre-authentication is recommended for clients with short timeouts. You can pre-authenticate your MCP client to cache tokens before starting interactive sign-in.
Security and tokens
Use OAuth with PKCE for secure token flow. Tokens can be encrypted at rest using a 32-byte key and stored securely in your chosen storage backend. If you deploy to production, enable TLS, token validation, strict origin checks, and proper audit logging.
Examples
Create an event with a Google Meet link and attendees.
Check availability before scheduling to avoid conflicts.
Available tools
list_calendars
Discover available calendars and IDs so you know what calendars you can query.
search_events
Search across calendars by default, returning merged events with their originating calendar information.
check_availability
Check free/busy status across calendars to identify open times before scheduling.
create_event
Create events using natural language or structured input, with optional Google Meet links.
update_event
Update or move existing events across calendars.
delete_event
Delete events from a calendar.
respond_to_event
Accept, decline, or tentatively respond to invitations.