Metorial MCP Containers
Built by Metorial, the integration platform for agentic AI.
Metorial MCP Containers
A Model Context Protocol (MCP) server that provides Google Calendar integration for AI assistants like Claude.
https://www.googleapis.com/auth/calendar.events and https://www.googleapis.com/auth/calendarOption 1: Use with npx (Recommended)
Add to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": ["@cocal/google-calendar-mcp"],
"env": {
"GOOGLE_OAUTH_CREDENTIALS": "/path/to/your/gcp-oauth.keys.json"
}
}
}
}
⚠️ Important Note for npx Users: When using npx, you must specify the credentials file path using the GOOGLE_OAUTH_CREDENTIALS environment variable.
Option 2: Local Installation
git clone https://github.com/nspady/google-calendar-mcp.git
cd google-calendar-mcp
npm install
npm run build
Then add to Claude Desktop config using the local path or by specifying the path with the GOOGLE_OAUTH_CREDENTIALS environment variable.
Option 3: Docker Installation
git clone https://github.com/nspady/google-calendar-mcp.git
cd google-calendar-mcp
cp /path/to/your/gcp-oauth.keys.json .
docker compose up
See the Docker deployment guide for detailed configuration options including HTTP transport mode.
If you're in test mode (default), tokens expire after 7 days. If you are using a client like Claude Desktop it should open up a browser window to automatically re-auth. However, if you see authentication errors you can also resolve by following these steps:
For npx users:
export GOOGLE_OAUTH_CREDENTIALS="/path/to/your/gcp-oauth.keys.json"
npx @cocal/google-calendar-mcp auth
For local installation:
npm run auth
To avoid weekly re-authentication, publish your app to production mode (without verification):
See Authentication Guide for details.
Connect multiple Google accounts and use them simultaneously.
In chat (recommended): Use the manage-accounts tool to add, list, or remove accounts directly from your AI assistant - no terminal needed. See the Authentication Guide for details.
CLI: For initial setup, use npm run account auth (e.g., npm run account auth work).
HTTP / Docker: Visit http://localhost:3000/accounts to manage accounts in the browser.
When no account parameter is supplied to a tool, read-only tools merge results from all accounts, while write tools auto-select the account with appropriate permissions.
Along with the normal capabilities you would expect for a calendar integration you can also do really dynamic, multi-step processes like:
Cross-calendar availability:
Please provide availability looking at both my personal and work calendar for this upcoming week.
I am looking for a good time to meet with someone in London for 1 hr.
Add events from screenshots, images and other data sources:
Add this event to my calendar based on the attached screenshot.
Supported image formats: PNG, JPEG, GIF Images can contain event details like date, time, location, and description
Calendar analysis:
What events do I have coming up this week that aren't part of my usual routine?
Check attendance:
Which events tomorrow have attendees who have not accepted the invitation?
Respond to invitations:
Accept the team meeting invitation on my calendar for tomorrow at 2pm
Decline with a note:
Decline the Friday meeting with a note that I have a scheduling conflict
Respond to recurring events:
Accept just this week's standup, but keep future instances as tentative
Decline all future Monday planning meetings
Auto coordinate events:
Here's some availability that was provided to me by someone. {available times}
Take a look at the times provided and let me know which ones are open on my calendar.
| Tool | Description |
|---|---|
list-calendars | List all available calendars |
list-events | List events with date filtering |
get-event | Get details of a specific event by ID |
search-events | Search events by text query |
create-event | Create new calendar events |
update-event | Update existing events |
delete-event | Delete events |
respond-to-event | Respond to event invitations (Accept, Decline, Maybe, No Response) |
get-freebusy | Check availability across calendars, including external calendars |
get-current-time | Get current date and time in calendar's timezone |
list-colors | List available event colors |
manage-accounts | Add, list, or remove connected Google accounts |
If Google Calendar MCP has been useful to you and you're so inclined, I'd greatly appreciate it if you'd consider sponsoring my open source work.
Thanks! – Nate
Environment Variables:
GOOGLE_OAUTH_CREDENTIALS - Path to OAuth credentials fileGOOGLE_CALENDAR_MCP_TOKEN_PATH - Custom token storage location (optional)ENABLED_TOOLS - Comma-separated list of tools to enable (see Tool Filtering below)You can limit which tools are exposed to the AI assistant using the --enable-tools flag or ENABLED_TOOLS environment variable. This is useful for:
Via command line:
npx @cocal/google-calendar-mcp start --enable-tools list-events,create-event,get-current-time
Via environment variable in Claude Desktop config:
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": ["@cocal/google-calendar-mcp"],
"env": {
"GOOGLE_OAUTH_CREDENTIALS": "/path/to/credentials.json",
"ENABLED_TOOLS": "list-events,create-event,get-current-time,update-event"
}
}
}
}
Available tool names: list-calendars, list-events, search-events, get-event, list-colors, create-event, update-event, delete-event, get-freebusy, get-current-time, respond-to-event, manage-accounts
Note: The manage-accounts tool is always available regardless of filtering, as it's needed for authentication management.
When tool filtering is active, the server provides instructions to the AI assistant listing which tools are disabled. This allows the AI to inform users that additional functionality exists but is currently unavailable, without consuming the full token cost of those tool schemas.
If the list is empty or contains only commas, the server will fail to start with an error.
If an invalid tool name is specified, the server will fail to start with an error listing all available tools.
OAuth Credentials File Not Found:
GOOGLE_OAUTH_CREDENTIALSAuthentication Errors:
Build Errors:
npm install && npm run build againbuild/ directory and run npm run build"Something went wrong" screen during browser authentication
"User Rate Limit Exceeded" errors
gcp-oauth.keys.json file includes project_id{"installed": {"project_id": "your-project-id", ...}}MIT