# Google Calendar > Canonical: https://www.yalc.ai/mcps/google-calendar/ Read, schedule, and manage meetings from Claude Code via the Google Calendar MCP. ## Categories - operations **Website:** https://workspace.google.com/products/calendar/ **Repo:** https://github.com/modelcontextprotocol/servers ## Glance - Auth: Google OAuth - Maintainer: Community - Tools: Read + create + update events **Install Command:** claude mcp add google-calendar --env GOOGLE_CLIENT_ID=xxx --env GOOGLE_CLIENT_SECRET=xxx --env GOOGLE_REFRESH_TOKEN=xxx -- npx -y @cocal/google-calendar-mcp **Install Notes:** Like Gmail, multiple community Calendar MCP packages exist. The simplest path is to set up one Google Cloud OAuth client that covers both Gmail and Calendar, then install both MCPs with the same credentials. Calendar permissions to grant: calendar.readonly, calendar.events. **Yalc Fit Score:** 7 **Yalc Verdict:** The scheduling layer for Yalc workflows that need to coordinate humans. Pull next week's bookings, create follow up holds, and schedule discovery calls without leaving Claude Code. ## Plain Description The Google Calendar MCP exposes the Calendar API (list events, create events, update events, find free time) as native Claude tool calls. Auth is Google OAuth, ideally shared with your Gmail MCP setup so one consent flow covers both products. For Yalc operators, Calendar is the scheduling layer. Where Calendly handles inbound booking, the Calendar MCP handles outbound scheduling (creating holds, finding mutual availability, surfacing tomorrow's meetings into a daily briefing). It pairs especially well with workflows that need to coordinate AMs and clients. ## Yalc Framework **Workflow Step:** route ### Workflow Narrative The Calendar MCP sits at the **route** node when Yalc workflows need to coordinate humans across time. It pairs with Gmail (warm threads), Slack (team coordination), and Notion (state) to complete the operator surface. Most useful patterns: morning briefings ("what's on my calendar today and who do I need to prep for"), automated follow-up scheduling ("book a 15 minute hold for Thursday at 3pm and email the prospect"), and capacity planning ("how many meetings do I have next week"). **Workflow Position:** The scheduling node. Yalc reads upcoming events for context, creates events for follow ups, and finds availability across team calendars. ### Prompt Patterns - Yalc, give me a morning briefing for today. List every meeting on my calendar, surface 2 prep notes per meeting based on past Gmail threads with the attendees, post to Slack #my-day. → Yalc reads Calendar + Gmail + posts to Slack via three MCPs in one prompt. - Yalc, find a 30 minute window next week when both me and Jane are free, create an event titled "Q3 GTM sync", and send a calendar invite via Gmail. → Yalc queries Calendar free/busy across two accounts, picks a slot, creates the event. - Yalc, for every meeting on my calendar this week labeled "discovery", pre fill a Notion page in the Discoveries DB with attendee context, prior touchpoints, and an agenda outline. → Yalc reads Calendar, joins with Notion CRM, creates structured prep pages. ### Chaining **Upstream:** Yalc prompt → Calendar MCP (read or create event) **Downstream:** Calendar event → Gmail (invite) or Slack (notification) or Notion (prep page) ### Anti Patterns - Don't create events without an attendee list. The MCP can create solo holds (which is fine) but missing attendees on a meeting event is usually a mistake. - Don't auto move other people's calendar events. The MCP can update events you own, but mutating someone else's calendar without their consent will trigger trust issues fast. - Don't pull every event for context analysis. Filter by time window (today, this week, next 14 days). Calendar APIs are paginated; large pulls hit rate limits. **Compatibility:** Multiple community packages exist. All work in Claude Code, Claude Desktop, and Cursor. Composio also exposes Google Calendar via their unified MCP URL pattern. Permissions per Google's OAuth model. ## Pros - Pairs cleanly with Gmail MCP using the same OAuth client. - Read and write event coverage. Find free time queries across multiple calendars. - Free to use within Google's API quotas (very generous for personal use). - Works with both personal Google accounts and Workspace accounts. ## Cons - Multiple competing packages. Picking one is a small but real decision. - OAuth setup requires a Google Cloud project. Friction the first time. - Workspace admins may restrict third party OAuth consent. Get IT approval before deploying for a team. - Time zone handling is famously messy. Always pass and store events in ISO 8601 with explicit time zone. ## Who For - Founders who treat their calendar as a productivity surface, not just a record - Account managers coordinating across multiple client calendars - Anyone who wants meeting prep automated by Claude ## Related ### Mcp **Rule:** Same OAuth setup. Use both for full inbox plus calendar coverage. **Url:** /mcps/gmail/ ## Alternatives - **Outlook Calendar MCP** - Rule: Switch when your team runs on Microsoft 365. - Url: # - **Calendly MCP (planned)** - Rule: Switch when the workflow is inbound booking by external prospects, not internal scheduling. - Url: # - **Composio Google Calendar toolkit** - Rule: Switch when you already have a Composio account and want unified credential management. - Url: # ## Faq - Q: Can I use the same OAuth client for Gmail and Calendar MCPs? - A: Yes. When you create the OAuth client at console.cloud.google.com, request both Gmail and Calendar scopes. Use the same client ID, secret, and refresh token across both MCP installs. Saves one consent flow. - Q: How do I find mutual free time across multiple calendars? - A: Most Calendar MCP packages expose a "free busy" query that takes multiple email addresses and returns merged availability. Use it before creating mutual events. - Q: Does the MCP handle recurring events? - A: Yes for reads. For writes, recurrence rules use Google's RRULE syntax which is non trivial to compose by hand. For complex recurrence, create the event manually and have Claude reference it. - Q: What about time zones? - A: Always pass events in ISO 8601 with explicit time zone (`2026-04-29T15:00:00-04:00`). Reading events returns time zone info in the response. Most bugs come from implicit time zone assumptions. - Q: Can the MCP send invites with custom messages? - A: Yes. Create the event with attendees and a description; Google sends the invite automatically. For richer custom invite text, send a follow up email via the Gmail MCP after creating the event. - Q: Is this MCP necessary if I have Calendly? - A: They serve different jobs. Calendly is for letting external people book your time. The MCP is for managing your calendar from Claude. Both can coexist on the same Google account. **Reviewer:** Othmane Khadri