google-calendar-mcp
Provides tools for managing Google Calendar events, including listing, creating, updating, deleting, quick-adding events from natural language, responding to invitations, and checking free/busy availability across one or more calendars.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@google-calendar-mcpLunch with client tomorrow at 12:30pm"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
google-calendar-mcp
MCP server for Google Calendar: list/create/update/delete events, quick-add from natural language, respond to invitations, and check free/busy availability across one or more accounts.
Why not the official Google Calendar MCP connector?
Google has started offering official remote MCP servers per Workspace app (Gmail, Sheets, Docs, Drive, Calendar). The Calendar one is convenient but, as of writing, ties one Google account to one connector authorization — if you need several independent Google identities available as separate MCP servers at the same time, you need one token per account, which this self-hosted server supports natively.
Related MCP server: GoogleCalendarMCP
Tools (20)
Tool | What it does |
| List all calendars the account can access (id, name, whether it's primary) |
| List events in a date range, optional free-text filter |
| Full detail of one event |
| Create an event (supports all-day and attendees) |
| Create an event from natural language (e.g. "Meeting tomorrow at 10am") |
| Update only the fields you pass on an existing event |
| Accept/decline/mark tentative on an invitation |
| Delete an event — destructive, requires |
| Free/busy query across one or more calendars in a time range |
| Create a brand-new calendar (different from subscribing to an existing one) |
| Change a calendar's name, description or default timezone |
| Delete an ENTIRE calendar and all its events — requires |
| Grant access (reader/writer/owner/freeBusyReader) to an email — requires |
| Who has access to a calendar and at what role |
| Revoke someone's access — requires |
| Add an existing calendar (e.g. one shared with you) to your list |
| Remove a calendar from your list without deleting it — only works on calendars you don't own (see Notes) |
| Move an event from one calendar to another |
| List the concrete occurrences of a recurring event |
| Valid color palette for |
Response size
get_event drops kind (always the same constant) and etag (an internal caching hash) from the raw event object — everything else is genuine content, so it stays.
Security
Every tool ships with MCP Tool Annotations (
readOnlyHint,destructiveHint,idempotentHint,openWorldHint), so MCP clients can use them to decide whether to prompt for confirmation before running a tool.Execution errors propagate as real MCP protocol errors (
isError: true), not as a JSON payload that looks like a success with an"error"key buried inside — so the calling model actually sees the failure and can self-correct instead of silently treating it as a success.
Setup
Create a Google Cloud project (or reuse one) and enable the Google Calendar API.
Create an OAuth 2.0 Client ID of type "Desktop app" and download it as
client_secret.json.If the app is in "Testing" mode, add your Google account(s) as test users.
Install dependencies:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txtRun the OAuth flow once per account you want to expose:
CLIENT_SECRET_PATH=~/.config/google-calendar-mcp/client_secret.json \ python3 setup_auth.py personalThis opens a browser — log in and grant access. The token is saved to
~/.config/google-calendar-mcp/token_personal.json. Repeat with a different account label for each additional identity.
MCP client configuration
{
"mcpServers": {
"google-calendar": {
"command": "/path/to/.venv/bin/python3",
"args": ["/path/to/google-calendar-mcp/server.py"],
"env": {
"GOOGLE_CALENDAR_TOKEN_PATH": "~/.config/google-calendar-mcp/token_personal.json"
}
}
}
}To expose a second account, add another entry pointing at the same
server.py with a different GOOGLE_CALENDAR_TOKEN_PATH.
Env var | Purpose |
| Path to the OAuth token for this account |
Notes
create_event/update_eventdetect an all-day event automatically whenstart/endare a bareYYYY-MM-DDdate instead of a full ISO 8601 timestamp.delete_eventfollows a confirm-first pattern: withoutconfirmed=Trueit returns the event summary and arequires_confirmation: trueflag instead of deleting anything.respond_to_eventlooks for the attendee entry flagged asselfin the event's attendee list — you don't need to pass the account's own email.⚠️
unsubscribe_from_calendardoesn't work on a calendar you own — verified live: Google returns403 cannotUnsubscribeFromOwnedCalendar. It only removes a calendar someone else shared with you from your list. To get rid of a calendar you created yourself, usedelete_calendar(it actually deletes it, rather than just hiding it from your list).
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
A MCP server that works with Google Calendar to manage event listing, reading, and updates.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
MCP server for Cronofy — read calendars, events and free/busy, and create, update or delete events.
A MCP server that works with Outlook Calendar to manage event listing, reading, and updates.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that provides integration with Google Calendar, allowing users to list calendars and manage events. It enables searching, creating, and modifying calendar entries through tools designed for the Model Context Protocol.-
- FlicenseDqualityDmaintenanceMCP server for interacting with Google Calendar, enabling reading events from public calendars and, with OAuth, creating, updating, and deleting events.1-
- AlicenseNot gradedqualityDmaintenanceA Google Calendar MCP server that enables listing, creating, updating, and deleting calendar events and calendars through natural language.5 npmISC
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to manage Google Calendar events, calendars, sharing, and scheduling with full read/write access across multiple Google accounts, supporting natural language creation, recurring events, and Google Meet.40 npmMIT