Manage events, schedules and availability across Google Calendar. Create meetings, coordinate calendars, track availability and automate scheduling workflows.
Codex is OpenAI's coding agent for the terminal. It reads MCP servers from its config and signs in to remote ones with OAuth.
This guide connects Google Calendar to Codex through MewCP, so Codex can use Google Calendar's 19 tools, like list_events, get_event and search_events, without your Google Calendar credentials ever reaching the app.
Google Calendar signs in through managed OAuth. MewCP stores the token encrypted, refreshes it before it expires and injects it only at call time. Your agent never holds it, so it can never leak it.
More apps
Microsoft Outlook MCP Server gives AI agents full control over Outlook email and calendar workflows, including reading and sending emails, managing attachments, organizing mail, scheduling and updating meetings, managing contacts, and creating tasks.
Create, schedule and manage Google Meet sessions for video collaboration. Work with meetings, participants, recordings and conferencing workflows across your organization.
Nylas MCP Server lets AI agents access and manage email, calendar, and contacts across connected providers through Nylas, enabling agents to search and send messages, schedule and manage events, and work with contact data.
Connect AI agents to Granola meeting notes to search past meetings, retrieve transcripts, find discussions and decisions, extract action items, and answer questions using your meeting history.
Other clients
Google Calendar works the same way in every client below. Pick yours for its own guide.
Free to start.
Scope access to the exact Google Calendar tools and accounts you allow, work and personal side by side. Anything outside that scope is refused at call time, even when the model asks for it.
Each call is logged: what ran, on which account, and whether it worked. Failures come back structured, so the agent knows whether to retry instead of guessing.
Every app sits behind one secure MCP URL, and there is no server for you to deploy or keep running. Add an integration in the dashboard and it is live on the next call, with no config to change and no new credentials to wire up. Tools load only when a task needs them, so your agent stays fast and focused however many apps you connect.
Run this and approve access in the browser window.
Start a new chat and ask: "List the tools you can use from MewCP." You should see your connected apps.
Lists events from a calendar within an optional time range. Returns events in start-time order. Recurring events are expanded into individual instances. Use ISO 8601 for time_min/time_max: 'YYYY-MM-DDTHH:MM:SSZ' (e.g. '2026-01-08T00:00:00Z'). Defaults to events from now onwards if time_min is not specified.
Gets full details of a specific event including attendees, RSVP statuses, recurrence rules, reminders, and conferencing info.
Searches for events by text across titles, descriptions, and locations. Optionally bound the search to a time range with time_min/time_max (ISO 8601, e.g. '2026-01-08T00:00:00Z'). Without a time range the search spans all history — always use a time range for large calendars.
Gets events starting from now through the next N days. Returns events in start-time order. Recurring events are expanded into individual instances.
Gets all events scheduled for today in the given timezone. Pass the user's local timezone to get the correct day (e.g. 'America/New_York'). Defaults to UTC.
Lists all individual instances of a recurring event by its master event ID. Use this to see every occurrence of a recurring series — use get_event or list_events to find the master event ID first. Instances include recurringEventId (the master ID) and originalStartTime (the scheduled time per RRULE, which differs from start if the instance was rescheduled). Optionally filter by time range to see only upcoming or past occurrences.
Creates a new calendar event and optionally invites attendees. For timed events use ISO 8601 datetime: '2026-01-08T14:30:00' with a timezone. For all-day events set is_all_day=True and use date-only format: '2026-01-08' — for all-day events end_time is exclusive, so a single-day event on Jan 8 needs end_time='2026-01-09'. Returns the created event with its ID.
Creates an event from a natural language text description. Google Calendar parses the text to extract title, date, time, and recurrence. Examples: 'Lunch with Sarah tomorrow at noon', 'Team standup every Monday at 9am'. Returns the created event. For complex events with attendees or custom fields, use create_event instead.
Creates a recurring calendar event using an RRULE recurrence pattern. recurrence_rule must start with 'RRULE:' followed by RFC 5545 parameters. Examples: 'RRULE:FREQ=DAILY;COUNT=5', 'RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR', 'RRULE:FREQ=MONTHLY;BYMONTHDAY=15', 'RRULE:FREQ=YEARLY'. Returns the master recurring event — individual instances are expanded by Google Calendar.
Updates an existing calendar event. Only the fields you provide are changed — leave a field empty to keep its current value. Fetches the current event first, applies changes, then saves. Use ISO 8601 for times: 'YYYY-MM-DDTHH:MM:SS'. For recurring events: pass the master recurring event ID to change all instances, or a specific instance ID to change only that occurrence. WARNING: do not update individual instances one-by-one to change the whole series — update the master event instead. Modifying instances individually creates exceptions that clutter the calendar and trigger excessive notifications. To cancel a single instance without affecting the rest of the series, set status='cancelled'.
Adds new attendees to an existing event and sends them invitation emails. Skips emails that are already on the attendee list.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a calendar event. This action is irreversible: the event, its attendees list, reminders, and all associated data are removed immediately and cannot be recovered. Attendees will receive cancellation emails (controlled by send_updates). For recurring events: deleting the master event ID removes the entire series and all its instances. Deleting a specific instance ID removes only that one occurrence. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user the event title, date, and time that will be permanently deleted, and for recurring events clarify whether you are deleting one occurrence or the entire series, and wait for their explicit written confirmation before proceeding.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Moves a default event from one calendar to another. Only events of type 'default' can be moved — birthday, focusTime, fromGmail, outOfOffice, and workingLocation events cannot be moved and will return an error. The event is removed from the source calendar and placed in the destination calendar — any calendar-specific settings, sharing permissions, or notification rules from the source will no longer apply. While technically reversible by moving back, this can disrupt other attendees and shared calendar visibility in ways that are hard to track down. NEVER call this tool autonomously. You MUST tell the user which event is being moved, from which calendar to which, and wait for their explicit confirmation.
Lists all calendars the user has access to. Returns calendar IDs, names, timezones, colors, and access roles. Use min_access_role to filter to calendars the user can write to.
Gets full details of a specific calendar including its name, description, timezone, and color settings.
Creates a new calendar owned by the user. Returns the created calendar with its ID, which is needed for all subsequent operations on that calendar.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes an entire calendar and every event it contains. This action is irreversible: all events, recurring series, and history in the calendar are gone immediately with no way to recover them. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user exactly which calendar will be deleted and that all its events will be permanently lost, and wait for their explicit written confirmation before proceeding.
DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes ALL events from a calendar without deleting the calendar itself. This action is irreversible: every event in the calendar — past, present, and future — is removed immediately with no way to recover them. The calendar itself remains and can be used for new events. This is the only way to clear the primary calendar, which cannot be deleted. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user exactly which calendar will be cleared and that every event in it will be permanently deleted, and wait for their explicit written confirmation before proceeding.
Returns busy time blocks for one or more calendars within a time range. Use this to find when someone is available or to schedule without conflicts. Provide time_min and time_max in ISO 8601 format with timezone, e.g. '2026-01-08T09:00:00Z'. Returns a map of calendar ID → list of busy time blocks. Free time = gaps between the busy blocks within the requested range.