
Mewcp Google Calendar
io.github.AMMAR-62Published by GitHub account AMMAR-62v1.0.0Updated Oct 24, 2026
Schedule smarter - create, search, and manage Google Calendar events through AI.
The publisher's own server: MewCP
Overview
A local MCP server that lets an AI assistant read, create, update, move and delete Google Calendar events and calendars.
- What you can do
- List, search and retrieve events with time-range, text and recurrence filters, including recurring instances and pagination; get a single event's details, attendees and RSVP statuses; query free/busy blocks across several calendars to find open slots; create single, all-day, quick and recurring events with attendees, reminders, Meet links and visibility settings; update events and manage attendees; move events between calendars; list, get and create calendars; delete events, calendars or all events in a calendar.
- When to use it
- Useful when an assistant should schedule, reschedule or look up meetings on a user's behalf, check availability across calendars before proposing times, or let workflow automation read calendar state to trigger time-based actions.
- Requirements
- Runs as a local process (Docker image, streamable-http transport) on a desktop machine. The README's troubleshooting refers to an Authorization bearer token and an X-Mewcp-Credential-Id header, plus a MewCP account with a connected Google Calendar OAuth credential; the manifest declares no authentication or environment variables, so setup details must be confirmed with the provider. Network access to Google Calendar and the provider's service is needed.
Installation
In SourceWeft
- Open Mewcp Google Calendar in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Schedule smarter — create, search, and manage Google Calendar events through AI.
A Model Context Protocol (MCP) server that exposes Google Calendar's API for creating, reading, updating, and deleting events and calendars.
Overview
The Google Calendar MCP Server provides full calendar management directly from AI workflows:
- List, search, and retrieve events with rich filtering by time range, text, and recurrence
- Create single, all-day, quick, and recurring events with attendees, reminders, and Meet links
- Update events and manage attendees, then get before/after state in a single response
- Query free/busy blocks across multiple calendars to find open slots without conflicts
Perfect for:
- AI assistants that schedule, reschedule, and manage meetings on behalf of users
- Workflow automation that reads calendar state to trigger time-based actions
- Agents that coordinate availability and send invitations across teams
Tools
Events — Read
list_events — List events from a calendar
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.
Inputs:
Output data schema:
get_event — Get a single event by ID
Gets full details of a specific event including attendees, RSVP statuses, recurrence rules, reminders, and conferencing info.
Inputs:
Output data schema:
search_events — Search events by text
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.
Inputs:
Output data schema:
get_upcoming_events — Get events in the next N days
Gets events starting from now through the next N days. Returns events in start-time order. Recurring events are expanded into individual instances.
Inputs:
Output data schema:
get_todays_events — Get all events for today
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.
Inputs:
Output data schema:
list_event_instances — List instances of a recurring event
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.
Inputs:
Output data schema:
Events — Write
create_event — Create a new calendar event
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.
Inputs:
Output data schema:
create_quick_event — Create an event from natural language
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.
Inputs:
Output data schema:
create_recurring_event — Create a recurring event with an RRULE
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.
Inputs:
Output data schema:
update_event — Update an existing event
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'.
Inputs:
Output data schema:
add_attendees — Add attendees to an event
Adds new attendees to an existing event and sends them invitation emails. Skips emails that are already on the attendee list.
Inputs:
Output data schema:
Events — Delete
delete_event — Permanently delete an event
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.
Inputs:
Output data schema:
move_event — Move an event to another calendar
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.
Inputs:
Output data schema:
Calendars
list_calendars — List all calendars
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.
Inputs:
Output data schema:
get_calendar — Get a single calendar
Gets full details of a specific calendar including its name, description, timezone, and color settings.
Inputs:
Output data schema:
create_calendar — Create a new calendar
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.
Inputs:
Output data schema:
delete_calendar — Permanently delete a 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.
Inputs:
Output data schema:
clear_calendar — Delete all events from a calendar
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.
Inputs:
Output data schema:
Free/Busy
get_free_busy — Query busy blocks across calendars
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.
Inputs:
Output data schema:
API Parameters Reference
Response Envelope
Every tool returns the same top-level envelope. Only data varies per tool.
retriable—truewhen it is safe to retry (rate limit, network error, 503).falsefor validation and auth errors.retry_after_seconds— seconds to wait before retrying; present only whenretriableistrueand the upstream specifies a delay.
Date and Time Formats
All tools use ISO 8601 format for date and time values.
Timed events:
All-day events (use with is_all_day=true):
For all-day events, end_time is exclusive — a single-day event on Jan 8 needs end_time='2026-01-09'.
Recurrence Rules (RRULE)
create_recurring_event requires an RFC 5545 RRULE string starting with RRULE:.
Calendar ID
primary— the user's main Google Calendar (always valid)- All other calendars use a full ID from
list_calendars, e.g.[email protected]
list_calendars returns id for every calendar the user has access to.
Pagination
list_events, search_events, list_event_instances, and list_calendars support pagination via next_page_token.
When data.next_page_token is non-null in a response, pass it as page_token in the next call with the same parameters to retrieve the next page.
Troubleshooting
Missing or Invalid Headers
- Cause: OAuth token not provided in request headers or incorrect format
- Solution:
- Verify
Authorization: Bearer YOUR_TOKENandX-Mewcp-Credential-Id: CREDENTIAL-IDheaders are present - Check the OAuth token has not expired — reconnect in your MewCP account if needed
- Verify
Insufficient Credits
- Cause: API calls have exceeded your request limits
- Solution:
- Check credit usage in your Curious Layer dashboard
- Upgrade to a paid plan or add credits for higher limits
- Contact support for credit adjustments
Credential Not Connected
- Cause: No Google Calendar credential linked to your account
- Solution:
- Go to Credentials in your MewCP dashboard
- Connect your Google account (OAuth)
- Retry the request with the correct
X-Mewcp-Credential-Idheader
Malformed Request Payload
- Cause: JSON payload is invalid or missing required fields
- Solution:
- Validate JSON syntax before sending
- Ensure all required tool parameters are included
- Check parameter types match expected values (e.g.
time_minmust be ISO 8601)
Server Not Found
- Cause: Incorrect server name in the API endpoint
- Solution:
- Verify endpoint format:
{server-name}/mcp/{tool-name} - Use the correct server name from documentation
- Check available servers in your Curious Layer account
- Verify endpoint format:
Google Calendar API Error
- Cause: Upstream Google Calendar API returned an error
- Solution:
- Check Google Workspace Status for service issues
- Verify your Google account has the required calendar permissions
- Review the error message in the response for specific details
Resources
- Google Calendar API Documentation — Official API reference
- Google Calendar API Events Reference — Complete events endpoint reference
- FastMCP Docs — FastMCP specification
- FastMCP Credentials — FastMCP Credentials package for credential handling
Source: README.md at commit f93fec9
Tools
0Version history
1- v1.0.0LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.
