npm google-cal-mcpstdioupdated 27d ago
MCP server for Google Calendar - list, create, update, and manage calendar events.
What can you do with Google Calendar?
google-cal-mcp
MCP server for Google Calendar - list, create, update, and manage calendar events.
Use Cases
Schedule meetings: "Set up a 30-min sync with Sarah next week" → finds a free slot, creates the event with a Meet link, and sends the invite.
RSVP to invites: "Accept the team offsite but decline the vendor demo" → responds to pending invitations automatically.
Find availability: "When am I free this Thursday afternoon?" → queries your calendar and returns open slots.
Reschedule events: "Move my 1:1 with Alex to Friday at 2pm" → updates the event and notifies attendees.
Daily briefing: "What's on my calendar today?" → lists all events with times, locations, and attendees.
Block focus time: "Block 2 hours tomorrow morning for deep work" → creates a calendar event to protect your time.
(These are just examples - any workflow that needs calendar access can use this.)
Setup
1. Create Google OAuth credentials
- Go to Google Cloud Console
- Create a new project (or use existing)
- Enable the Google Calendar API
- Go to APIs & Services → OAuth consent screen, set up consent screen
- Go to APIs & Services → Credentials → Create Credentials → OAuth client ID
- Choose Web application
- Add
http://localhost:3000/callbackto Authorized redirect URIs - Note your Client ID and Client Secret
2. Run the server
GOOGLE_CLIENT_ID='your-client-id' \
GOOGLE_CLIENT_SECRET='your-client-secret' \
MCP_TRANSPORT=http \
npm start
The server runs on http://localhost:3000 by default. Change with PORT=3001.
3. Add to your MCP client
With the server running, follow the instructions on install-mcp, which generates the right config for your MCP client (Claude Code, Claude Desktop, Cursor, Cline, VS Code, and more).
Architecture
This server acts as an OAuth proxy to Google:
graph LR
A[MCP client] <--> B[google-cal-mcp] <--> C[Google OAuth/API]
- Server advertises itself as an OAuth authorization server via
/.well-known/oauth-authorization-server /registerreturns the Google OAuth client credentials/authorizeredirects to Google, encoding the client's callback URL in state/callbackreceives the code from Google and forwards to the client's callback/tokenproxies token requests to Google, injecting client credentials/mcphandles MCP requests, using the bearer token to call Calendar API
The server holds no tokens or state - it just proxies OAuth to Google.
Tools
| Tool | Description |
|---|---|
| Calendars | |
calendars_list |
List all calendars the user has access to |
calendarlist_insert |
Subscribe to a shared calendar |
calendarlist_update |
Update calendar settings (color, visibility, reminders) |
calendarlist_delete |
Unsubscribe from a calendar |
| Events | |
events_list |
List events in a time range with search/filter |
event_get |
Get details of a specific event |
event_create |
Create a new event with attendees and Meet link |
event_update |
Update an existing event |
event_delete |
Delete an event |
event_respond |
RSVP to an invitation (accept/decline/tentative) |
event_move |
Move event to a different calendar |
event_instances |
Get instances of a recurring event |
| Availability | |
freebusy_query |
Find free/busy times for scheduling |
| Sharing | |
acl_list |
List who has access to a calendar |
| Colors | |
colors_get |
Get available color palette for calendars/events |
Calendar API Scopes
calendar- Full access to calendarscalendar.events- Read/write events
Contributing
Pull requests are welcomed on GitHub! To get started:
- Install Git and Node.js
- Clone the repository
- Install dependencies with
npm install - Run
npm run testto run tests - Build with
npm run build
Releases
Versions follow the semantic versioning spec.
To release:
- Use
npm version <major | minor | patch>to bump the version - Run
git push --follow-tagsto push with tags - Wait for GitHub Actions to publish to the NPM registry.
Install
Add Google Calendar to your client. Pick the one you use.
claude mcp add google-cal-mcp -- npx -y google-cal-mcpcodex mcp add google-cal-mcp -- npx -y google-cal-mcpamp mcp add google-cal-mcp -- npx -y google-cal-mcp{
"mcpServers": {
"google-cal-mcp": {
"command": "npx",
"args": [
"-y",
"google-cal-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"google-cal-mcp": {
"command": "npx",
"args": [
"-y",
"google-cal-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"google-cal-mcp","command":"npx","args":["-y","google-cal-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"google-cal-mcp": {
"command": "npx",
"args": [
"-y",
"google-cal-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"google-cal-mcp": {
"command": "npx",
"args": [
"-y",
"google-cal-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"google-cal-mcp": {
"command": "npx",
"args": [
"-y",
"google-cal-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"google-cal-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"google-cal-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"google-cal-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"google-cal-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y google-cal-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
15 tools
Google Calendar exposes 15 tools to a connected agent.
- calendars_list
- List all calendars the user has access to
- calendarlist_insert
- Subscribe to a shared calendar
- calendarlist_update
- Update calendar settings (color, visibility, reminders)
- calendarlist_delete
- Unsubscribe from a calendar
- events_list
- List events in a time range with search/filter
- event_get
- Get details of a specific event
- event_create
- Create a new event with attendees and Meet link
- event_update
- Update an existing event
- event_delete
- Delete an event
- event_respond
- RSVP to an invitation (accept/decline/tentative)
- event_move
- Move event to a different calendar
- event_instances
- Get instances of a recurring event
- freebusy_query
- Find free/busy times for scheduling
- acl_list
- List who has access to a calendar
- colors_get
- Get available color palette for calendars/events
Score
76 / 100
Good
- Documentation25/25
- Maintenance25/25
- Trust6/20
- Capability8/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 20 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 15 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 1.1.3Latest | May 25, 2026 |
| 1.1.2 | Feb 23, 2026 |
| 1.1.1 | Dec 28, 2025 |
| 1.1.0 | Dec 28, 2025 |
| 1.0.2 | Dec 13, 2025 |