
Company News
Free Business Plan Upgrades for Open Source Maintainers
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.
google-calendar-workspace-mcp-server
Advanced tools
MCP server for Google Calendar integration with service account support
An MCP (Model Context Protocol) server for Google Calendar integration using service account authentication with domain-wide delegation. This server enables AI assistants to interact with Google Calendar to list events, create events, manage calendars, and query availability.
https://www.googleapis.com/auth/calendar
Extract the following from your downloaded JSON key file:
client_email: The service account emailprivate_key: The private key (including -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY-----)Set these environment variables:
export GCAL_SERVICE_ACCOUNT_CLIENT_EMAIL="your-service-account@your-project.iam.gserviceaccount.com"
export GCAL_SERVICE_ACCOUNT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nYour private key content\n-----END PRIVATE KEY-----"
export GCAL_IMPERSONATE_EMAIL="user@yourdomain.com"
Note: GCAL_IMPERSONATE_EMAIL should be the email address of the user whose calendar you want to access.
npx google-calendar-workspace-mcp-server
npm install -g google-calendar-workspace-mcp-server
google-calendar-workspace-mcp-server
Add this configuration to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": ["google-calendar-workspace-mcp-server"],
"env": {
"GCAL_SERVICE_ACCOUNT_CLIENT_EMAIL": "your-service-account@your-project.iam.gserviceaccount.com",
"GCAL_SERVICE_ACCOUNT_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\nYour private key\n-----END PRIVATE KEY-----",
"GCAL_IMPERSONATE_EMAIL": "user@yourdomain.com"
}
}
}
}
By default, all tools are enabled (read + write access). You can restrict the server to read-only operations by setting the ENABLED_TOOLGROUPS environment variable:
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": ["google-calendar-workspace-mcp-server"],
"env": {
"GCAL_SERVICE_ACCOUNT_CLIENT_EMAIL": "...",
"GCAL_SERVICE_ACCOUNT_PRIVATE_KEY": "...",
"GCAL_IMPERSONATE_EMAIL": "...",
"ENABLED_TOOLGROUPS": "readonly"
}
}
}
}
Available tool groups:
| Group | Tools Included |
|---|---|
readwrite | All 7 tools (read + write) - included by default |
readonly | Read-only tools: list_calendar_events, get_calendar_event, list_calendars, query_calendar_freebusy |
When using only readonly, the write tools (create_calendar_event, update_calendar_event, delete_calendar_event) are not available.
Lists events from a calendar within an optional time range.
Parameters:
calendar_id (optional): Calendar ID (default: "primary")time_min (optional): Start time in RFC3339 formattime_max (optional): End time in RFC3339 formatmax_results (optional): Maximum events to return (default: 10, max: 250)query (optional): Free text search querysingle_events (optional): Expand recurring events (default: true)order_by (optional): "startTime" or "updated"Example:
List my events for the next week
Retrieves detailed information about a specific event.
Parameters:
event_id (required): The event IDcalendar_id (optional): Calendar ID (default: "primary")Example:
Get details for event ID abc123
Creates a new calendar event.
Parameters:
summary (required): Event titlestart_datetime OR start_date (required): Event start timeend_datetime OR end_date (required): Event end timedescription (optional): Event descriptionlocation (optional): Event locationattendees (optional): Array of email addressescalendar_id (optional): Calendar ID (default: "primary")Example:
Create a meeting tomorrow at 2pm for 1 hour titled "Team Sync"
Updates an existing calendar event. Uses PATCH semantics - only the fields you provide will be updated; other fields remain unchanged.
Parameters:
event_id (required): The event ID to updatecalendar_id (optional): Calendar ID (default: "primary")summary (optional): New event titledescription (optional): New event descriptionlocation (optional): New event locationstart_datetime OR start_date (optional): New start timeend_datetime OR end_date (optional): New end timeattendees (optional): Updated array of attendee email addressessend_updates (optional): "all", "externalOnly", or "none" - whether to send update notificationsExample:
Update event abc123 to change the title to "Team Standup"
Deletes a calendar event.
Parameters:
event_id (required): The event ID to deletecalendar_id (optional): Calendar ID (default: "primary")send_updates (optional): "all", "externalOnly", or "none" - whether to send cancellation notificationsExample:
Delete event abc123
Lists all calendars available to the authenticated user.
Parameters:
max_results (optional): Maximum calendars to return (default: 50, max: 250)Example:
Show all my calendars
Queries availability information for calendars.
Parameters:
time_min (required): Start time in RFC3339 formattime_max (required): End time in RFC3339 formatcalendar_ids (required): Array of calendar IDs to checktimezone (optional): Time zone for the queryExample:
Check if I'm free tomorrow between 2pm and 4pm
# Install dependencies
npm run install-all
# Build the project
npm run build
# Run in development mode
npm run dev
# Run tests
npm test
# Run integration tests
npm run test:integration
# Run all tests
npm run test:all
https://www.googleapis.com/auth/calendar) is granted in Google Workspace Admin Consolelist_calendars to discover available calendar IDsMIT
See CONTRIBUTING.md for guidelines.
FAQs
MCP server for Google Calendar integration with service account support
The npm package google-calendar-workspace-mcp-server receives a total of 79 weekly downloads. As such, google-calendar-workspace-mcp-server popularity was classified as not popular.
We found that google-calendar-workspace-mcp-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.