list-calendarsLABSCO SUMMARY
Availability across every calendar you have, answered in one question.
Most calendar integrations connect one account. Connecting work and personal together is what turns "when am I free" from a question you answer by tabbing between two browser windows into one the assistant can just answer.
What it is
A Google Calendar integration that connects more than one Google account and treats them as one searchable surface. Read-only tools merge results across accounts; write tools pick the account with the right permissions.
What you get
list-calendars,list-eventswith date filtering,get-eventby ID andsearch-eventsby text querycreate-event,update-eventanddelete-event, with advanced handling for modifying recurring eventsrespond-to-eventfor accepting, declining, marking maybe or clearing a response — including accepting one instance of a recurring meeting while leaving future ones tentativeget-freebusyto check availability across calendars, including external ones, which is what makes cross-account conflict detection workget-current-timein the calendar's own timezone,list-colors, andmanage-accountsfor adding, listing and removing connected Google accounts from the chatENABLED_TOOLSto expose only the tools a workflow needs, cutting the token cost of the unused schemas while still telling the assistant which capabilities exist but are switched off
Requirements
A Google Cloud project with the Calendar API enabled and OAuth 2.0 credentials of the Desktop app type — the application type matters. Add your own address as a test user on the Audience screen; propagation can take a few minutes. Run it with npx @cocal/google-calendar-mcp and set GOOGLE_OAUTH_CREDENTIALS to the path of your keys file, which is mandatory on the npx path. Before any calendar tool works you must ask the assistant to authenticate; skipping that step returns a -32600 error. While the app is in test mode tokens expire after 7 days — publishing the app to production mode removes that at the cost of an unverified-app warning. Tokens are stored in your system's config directory and credentials never leave the machine.
Setup effort
One command plus credentials — npx @cocal/google-calendar-mcp, then supply credentials
USE CASES
Finding a slot that works across work and personal
Free/busy runs over any combination of calendars from any connected account, including external ones, so the answer accounts for the commitments the other calendar knows about.
Adding an event from a screenshot or a PDF
Hand it the image and the details — date, time, location, description — are read out and turned into a real event.
Clearing an invitation backlog
Find which events have attendees who have not replied, then accept, decline with a note, or mark maybe — including per-instance responses on recurring meetings.
Checking what is unusual about the week ahead
List events over a range and ask which ones are not part of the normal routine, rather than reading the grid yourself.
Keeping the tool surface small
Set the enabled-tools list to the handful you use; the rest are not advertised, and the assistant is told they exist without paying for their schemas.
Adding a second account without a terminal
Manage connected accounts from the conversation; that tool stays available regardless of tool filtering, because it is what authentication depends on.
12 tools
Listed in project docs. Your client may show a different list.
list-eventsget-eventsearch-eventscreate-eventupdate-eventdelete-eventrespond-to-eventget-freebusyget-current-timelist-colorsmanage-accountsBEFORE YOU INSTALL
What to know first
Tools you get
12 tools named in the project's documentation.
Requires
- npx on PATH
- GOOGLE_OAUTH_CREDENTIALS in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
npx @cocal/google-calendar-mcpMCP Clients
Claude Desktop
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": [
"@cocal/google-calendar-mcp"
],
"env": {
"GOOGLE_OAUTH_CREDENTIALS": "<YOUR_GOOGLE_OAUTH_CREDENTIALS>"
}
}
}
}