Skip to main content
← Back to Articles
mcpcursorgoogle-calendarproductivitysetup2026

Google Calendar MCP Server Cursor IDE Setup 2026

Set up the Google Calendar MCP server in Cursor: create a Google Cloud OAuth client, authorize once in the browser, then check and create calendar events from chat.

By Web MCP GuideAugust 5, 202610 min read


Google Calendar MCP Server Cursor IDE Setup 2026

How do you set up the Google Calendar MCP server in Cursor? Create an OAuth client in Google Cloud Console, download its credentials file, add a google-calendar block to ~/.cursor/mcp.json pointing at those credentials, then restart Cursor. The first time a calendar tool actually runs, a browser window opens for you to authorize access — after that, the connection stays authorized without repeating the flow. Once it's set up, your AI can check your schedule, find open time slots, and draft calendar events without you switching to a browser tab.

This is the one setup in the "cursor ide mcp setup" family that's OAuth-first rather than API-key-first, because Google doesn't offer a scoped API-key path for personal Calendar data the way Stripe or GitHub do for their APIs. That one extra step (registering an OAuth client) is also the part people get stuck on, so this guide spends more time there than on the mcp.json block itself.

What You Can Do with Google Calendar + Cursor MCP

Once connected:

  • "What's on my calendar tomorrow?"

  • "Find a 30-minute slot next week where I'm free between 9am and 5pm"

  • "Create an event called 'Sprint Planning' next Monday at 10am for one hour"

  • "Do I have any meetings that conflict with a 2pm call on Thursday?"

  • "Move my 3pm meeting on Friday to 4pm instead"
  • The most common real use isn't "read my calendar" on its own — it's combining calendar state with something else in the same prompt, like checking availability before proposing a meeting time in an email draft, or blocking focus time around a string of back-to-back calls.

    Prerequisites


  • Cursor IDE v0.43+

  • Node.js 18+

  • A Google account with Calendar access

  • A Google Cloud project (free to create, no billing required for personal-scale usage)
  • Step 1: Create a Google Cloud OAuth Client

    1. Go to console.cloud.google.com and create a new project (or pick an existing one you don't mind attaching this to)
    2. In the sidebar, go to APIs & Services → Library, search for Google Calendar API, and enable it
    3. Go to APIs & Services → OAuth consent screen and configure it — for personal use, choose External and add yourself as a test user (this avoids a Google app-verification review, which you don't need for a single-user setup)
    4. Go to APIs & Services → Credentials → Create Credentials → OAuth client ID
    5. Choose Desktop app as the application type
    6. Download the resulting credentials file (Google names it something like client_secret_....json)

    Keep this file somewhere outside your project's git repo — it's a credential, not sample data, even though it doesn't contain a password directly.

    Step 2: Add to Cursor MCP Config

    Open ~/.cursor/mcp.json:

    {
      "mcpServers": {
        "google-calendar": {
          "command": "npx",
          "args": ["-y", "google-calendar-mcp"],
          "env": {
            "GOOGLE_OAUTH_CREDENTIALS": "/absolute/path/to/client_secret.json"
          }
        }
      }
    }
    

    Use an absolute path, not a relative one — mcp.json-launched processes don't reliably share your shell's working directory, so a relative path that works when you test the command manually in terminal can silently fail to resolve once Cursor launches it.

    Step 3: Restart Cursor and Authorize

    Quit and reopen Cursor. The server itself will start without errors even before authorization — the OAuth prompt fires the first time a tool actually runs, not at startup. Try:

    What's on my calendar today?
    

    A browser window should open asking you to sign in and grant calendar access. Approve it. The authorization is cached locally after this — you won't see the browser prompt again unless you revoke access or the token file is deleted.

    Step 4: Verify

    Once authorized, confirm with something concrete rather than a vague prompt:

    List my next 5 calendar events
    

    If real event titles and times come back, the connection is working end to end.

    Practical Workflows

    Finding Meeting Time

    I need to schedule a 45-minute call with someone in a similar timezone sometime this week. Find three open slots on my calendar between 9am and 6pm.
    

    Pre-Meeting Prep

    What meetings do I have in the next 2 hours, and what are they about based on the event descriptions?
    

    Creating Events from Context

    Create a calendar event for the deploy window we just discussed — Thursday 6pm to 7pm, title it "Prod Deploy: Payments Service"
    

    Conflict Checking Before Committing

    Before I confirm this 2pm Thursday meeting, check if it conflicts with anything already on my calendar
    

    Troubleshooting

    Browser window never opens for authorization

  • Confirm the path in GOOGLE_OAUTH_CREDENTIALS is correct and absolute — a bad path usually fails silently rather than throwing an obvious error

  • Check View → Output → MCP for a startup error before assuming the OAuth step itself is broken
  • "Access blocked: this app's request is invalid" in the browser

  • Your OAuth consent screen probably isn't fully configured, or you're not listed as a test user under an External consent screen that hasn't been published — add your own Google account under OAuth consent screen → Test users
  • Works, then stops working after a few weeks

  • Test-mode OAuth consent screens issue refresh tokens that can expire after a period of inactivity or after roughly a week for unverified apps, depending on Google's current policy. If the connection suddenly needs re-authorization, that's expected for a personal, unverified OAuth client — re-run the auth flow rather than troubleshooting it as a bug.
  • Can see events but can't create or edit them

  • Check the OAuth scope the consent screen actually granted. Some Calendar MCP implementations request a read-only scope by default; creating or editing events needs the broader calendar scope, which may mean re-authorizing after reconfiguring the server.
  • Wrong calendar or wrong account's events showing up

  • If you're signed into multiple Google accounts in your default browser, the OAuth flow can authorize against whichever account your browser defaults to, not necessarily the one you meant. Use an incognito window for the authorization step if you manage more than one Google account.
  • When Not to Use This

    Be deliberate about letting an AI create or move calendar events unattended, especially recurring events or anything with external attendees — a wrong date or an accidentally-cancelled recurring series is annoying to unwind, and calendar invites notify other people the moment they're sent. Have Cursor draft the event details and confirm them with you before creating anything that isn't purely for your own calendar.

    This also isn't the right tool if your organization manages calendars through a managed Google Workspace domain with admin-restricted API access — a personal OAuth client you register yourself may get blocked by domain-wide app restrictions, and you'll need your Workspace admin to either approve the app or provision a domain-managed service account instead.

    Frequently Asked Questions

    Q: Do I need a paid Google Cloud account to set this up?
    A: No. Enabling the Calendar API and creating an OAuth client is free at the usage levels a single person's calendar generates. Billing only becomes relevant at API-call volumes far beyond normal personal or small-team use.

    Q: Why does Google Calendar need a Cloud Console project instead of a simple API key like Stripe or GitHub?
    A: Google's Calendar API doesn't offer a personal-data-scoped API key path — access to a specific user's calendar requires OAuth so the user explicitly consents to what's being shared. It's a Google-wide pattern, not something specific to MCP servers.

    Q: Does this work with a Google Workspace (business) account, or only personal Gmail accounts?
    A: Both, generally, but Workspace admins can restrict which third-party OAuth apps are allowed to request calendar access. If authorization fails on a work account but works fine on a personal one, that's usually a Workspace admin policy, not a broken config.

    Q: My AI can read my calendar but can't create events — why?
    A: Check the OAuth scope granted during authorization. Some setups default to a read-only calendar scope; creating and editing events requires the broader read-write scope, which may mean deleting the cached token and re-running authorization after adjusting the server's requested scopes.

    Q: Can I connect more than one Google Calendar (like a personal and a work calendar) at once?
    A: Run two separate server entries under different keys in mcp.json, each pointing at its own OAuth credentials file and authorized against a different Google account — similar to running separate test and live entries for a service like Stripe. There's no supported way to have one authorized session cover two different Google accounts simultaneously.

    Related Guides


  • How to Authenticate MCP Servers: OAuth & API Keys

  • Notion MCP Server: Cursor IDE Setup (2026)

  • Slack MCP Server: Cursor IDE Setup (2026)

  • Cursor IDE MCP Setup: Complete Guide (2026)
  • ---


    Related guides