Skip to main content
Glama
akshi009

Google Calendar MCP Server

by akshi009

Google Calendar MCP Server

An MCP server that exposes your Google Calendar as tools Claude can call: list_events, create_event, update_event, delete_event, find_free_busy.

1. Google Cloud setup (one-time)

  1. Go to the Google Cloud Console, create (or pick) a project.

  2. APIs & Services → Library → enable Google Calendar API.

  3. APIs & Services → OAuth consent screen → set it up (External is fine, you can leave it in "Testing" and add your own Google account as a test user — no Google review needed for personal use).

  4. APIs & Services → Credentials → Create Credentials → OAuth client ID → Application type: Desktop app.

  5. Under that client, add an Authorized redirect URI: http://localhost:3000/oauth2callback

  6. Copy the generated Client ID and Client Secret.

Related MCP server: gcalendar-mcp

2. Project setup

npm install
cp .env.example .env
# paste your Client ID / Client Secret into .env

3. Authorize (one-time)

npm run authorize

This opens a Google consent URL in your terminal — open it in a browser, sign in, grant access. It saves the resulting tokens to token.json (already git-ignored — never commit this file, it's equivalent to a password).

4. Build and run

npm run build
npm start

You should see Google Calendar MCP server running on stdio on stderr. Stop it with Ctrl+C — Claude Desktop will launch it itself in normal use.

5. Connect it to Claude Desktop

Add this to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "google-calendar": {
      "command": "node",
      "args": ["/absolute/path/to/calendar-mcp-server/build/src/index.js"]
    }
  }
}

Restart Claude Desktop. You should see the calendar tools available (the hammer/tools icon).

Notes

  • Scope used is https://www.googleapis.com/auth/calendar (full read/write on your calendars). Narrow this in src/auth.ts if you want read-only or events-only access.

  • calendarId defaults to "primary" on every tool — pass a specific calendar's ID (visible in Google Calendar → Settings) to target another calendar.

  • If you ever revoke access or the refresh token stops working, delete token.json and re-run npm run authorize.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers