The Google Calendar MCP Server enables LLMs to interact with Google Calendar through a standardized Model Context Protocol interface. It allows you to list, create, update, and delete calendar events, as well as process events from images.
https://www.googleapis.com/auth/calendar.events
(optional)npm install
npm run build
gcp-oauth.keys.json
, and place it in the root directory of the projectThe server supports both automatic and manual authentication flows:
gcp-oauth.keys.json
in the root directorynpm start
The server automatically manages token refresh and re-authentication when needed.
For advanced users or troubleshooting:
npm run auth
This will start the authentication server, open a browser window for the OAuth flow, save the tokens, and exit.
The server exposes the following tools:
list-calendars
: List all available calendarslist-events
: List events from a calendarcreate-event
: Create a new calendar eventupdate-event
: Update an existing calendar eventdelete-event
: Delete a calendar eventAdd this configuration to your Claude Desktop config file (e.g., /Users/<user>/Library/Application Support/Claude/claude_desktop_config.json
):
{
"mcpServers": {
"google-calendar": {
"command": "node",
"args": ["path/to/build/index.js"]
}
}
}
Restart Claude Desktop
Beyond basic calendar operations, you can use more dynamic features:
Add this event to my calendar based on the attached screenshot.
Which events tomorrow have attendees who have not accepted the invitation?
Here's some available times that was provided to me by someone I am interviewing. Take a look at the available times and create an event for me to interview them that is free on my work calendar.
Please provide availability looking at both my personal and work calendar for this upcoming week. Choose times that work well for normal working hours on the East Coast. Meeting time is 1 hour
Common issues and solutions:
OAuth Token expires after one week (7 days)
OAuth Token Errors
gcp-oauth.keys.json
is correctly formatted.gcp-saved-tokens.json
and re-authenticatingImage Processing Issues
There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"cursor-rules-mcp": {
"command": "npx",
"args": [
"-y",
"cursor-rules-mcp"
]
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.