Google Calendar MCP server
Last verified: 2026-09
List and create calendar events.
Community Chat, mail & docs Needs a secret Claude Desktop, Cursor, Windsurf, Claude Code
What it does
Calendar CRUD: list calendars and events, search, create, update, delete, respond to invites. Google OAuth.
It sits in Chat, mail & docs: These servers act as the bot or the integration you install.
Good for
- List tomorrow's events on a secondary calendar.
- Search events by text without opening Calendar.
- Create a hold on a test calendar, not the company one.
- Respond to an invite only when you meant to.
Tools
- list-calendars / list-events / get-event / search-events — Read the calendar.
- create-event / update-event / delete-event — Write.
- respond-to-event — Accept / decline / maybe.
Config (Claude Desktop / Cursor / Windsurf)
Paste the JSON below. Same mcpServers shape. Replace placeholder paths and secrets.
Windows paths look like C:\\Users\\you\\project, not /path/to.
Host-side steps →
Claude Desktop
| OS | Config file |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json
(usually C:\Users\<you>\AppData\Roaming\Claude\) |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Cursor
| Scope | macOS / Linux | Windows |
|---|---|---|
| This project | .cursor/mcp.json in the repo root | |
| This user | ~/.cursor/mcp.json |
%USERPROFILE%\.cursor\mcp.json |
Windsurf
| OS | Config file |
|---|---|
| macOS / Linux | ~/.codeium/windsurf/mcp_config.json |
| Windows | %USERPROFILE%\.codeium\windsurf\mcp_config.json |
{
"mcpServers": {
"google_calendar": {
"command": "npx",
"args": [
"-y",
"@cocal/google-calendar-mcp"
],
"env": {
"GOOGLE_OAUTH_CREDENTIALS": "/path/to/gcp-oauth.json"
}
}
}
}
Windsurf remote MCP: use serverUrl instead of url if the block below is HTTP.
One-liner: npx -y @cocal/google-calendar-mcp
Secrets it wants: Google OAuth
How to get started
- Google Cloud OAuth client with Calendar scopes. First run opens a browser.
- Ask it to list-events for tomorrow before create-event.
- Use a secondary calendar if you are testing.
Access risk
delete-event and create-event will surprise coworkers. OAuth is the Google account.
When to skip it
Skip it if you only needed Gmail, or if scheduling is in Calendly you do not want a bot to edit.
Vs alternatives
| Server | Official? | Needs a secret? | Best for |
|---|---|---|---|
| Google Calendar | No | Yes | List and create calendar events. |
| Gmail | No | Yes | Read and draft Gmail. |
| Notion | No | Yes | Search and update Notion pages. |
| Asana | No | Yes | Tasks and projects in Asana. |
More in Chat, mail & docs
FAQ
What can delete-event do?
Delete real events. Coworkers notice. Use a secondary calendar while testing.
OAuth file?
GOOGLE_OAUTH_CREDENTIALS / a GCP OAuth client. First run opens a browser.
Calendar or Gmail?
Calendar scopes are enough for events. Do not add Gmail 'just in case'.
Multiple calendars?
list-calendars then pass the calendar id. Do not assume 'primary' is what you want.