Google Calendar
Connect Google Calendar through Google's hosted Calendar MCP server with a Google Cloud OAuth client.
The Calendar MCP server is in the Google Workspace Developer Preview Program. Use a Google Workspace account that can be added to Google Groups and a Google Cloud project that your organization can register in the program. Under the Developer Preview Program Terms, each connecting user must belong to the applicant’s domain or company unless Google permits otherwise. You need permission to enable services, grant project roles, configure Google Auth Platform, and create OAuth credentials. Enabling services requires serviceusage.services.enable, normally provided by Service Usage Admin or Owner. Google’s IAM procedure uses Project IAM Admin for granting project roles. Each connecting user must have mcp.tools.call on the project and access to the calendars and events they will use. MCP Tool User (roles/mcp.toolUser) is the normal predefined grant, but another predefined or custom role is sufficient if it contains mcp.tools.call. If Calendar is Restricted or the new app requires approval, you also need a Google Workspace administrator with the Service Settings privilege.
Before you begin, have the application or security owner configure prompt and response screening for malicious content or prompt injection. If the organization does not use Google Model Armor, document the alternative screening and the accepted risk. You will open the Google Cloud console after Google confirms project registration.
Join the Google Workspace Developer Preview Program
- Open developers.google.com/workspace/preview.
- Review the Developer Preview Program Terms with the application or security owner.
- Click Apply to join the Developer Preview Program.
- In the current application form, enter the requested Google Workspace account and Google Cloud project information.
- Agree to the terms only with organizational approval.
- Submit the form with the visible or equivalent submission control. Google verifies the Workspace account, adds it to the program group, and then registers the Cloud project; no post-submission Google Groups acceptance action is documented.
- Wait for the final project-registration confirmation at the submitted email address. Google says this should complete within a couple of days.
- After confirmation, open the Google Cloud console and sign in.
- In the toolbar resource selector, select the registered project.
Keep that project selected throughout the Google Cloud steps.
Enable the Google Calendar APIs
- Open APIs & Services > API Library.
- In Search for APIs & Services, search for
Google Calendar API. - Open Google Calendar API.
- Click Enable. If the API is already enabled, continue.
- Reopen APIs & Services > API Library.
- In Search for APIs & Services, search for
Calendar MCP API. - Open Calendar MCP API.
- Click Enable. If the API is already enabled, continue.
- Open console.cloud.google.com/iam-admin/iam for the project’s IAM page.
Grant MCP Tool User access
- On the project’s IAM page, confirm that the same project is selected.
- Click Grant access.
- In New principals, enter a connecting user’s Google Account email.
- Click Select a role.
- Search for
MCP Tool User. - Select MCP Tool User.
- Click Save.
- Repeat these steps for each connecting user.
Configure the OAuth consent screen
Obtain approval from the application or security owner before accepting the user data policy.
-
Open Google Auth Platform > Branding.
-
If you see Google Auth platform not configured yet, click Get Started. Otherwise, retain the approved Branding and Audience, then continue at Data Access below.
-
Under App Information, enter a recognizable app name, such as
Calendar MCP Server, in App name. -
In User support email, choose a monitored address.
-
Click Next.
-
Under Audience, select Internal if every connecting user belongs to the project’s organization. Otherwise, select External.
-
Click Next.
-
Under Contact Information, enter a monitored Email address.
-
Click Next.
-
Under Finish, review the Google API Services User Data Policy.
-
With approval, select I agree to the Google API Services: User Data Policy.
-
Click Continue.
-
Click Create.
-
Open Data Access.
-
Click Add or Remove Scopes.
-
Under Manually add scopes, paste these three scope URLs:
https://www.googleapis.com/auth/calendar.calendarlist.readonlyhttps://www.googleapis.com/auth/calendar.events.freebusyhttps://www.googleapis.com/auth/calendar.events.readonly -
Click Add to Table.
-
Click Update.
-
Click Save.
If you selected External and the app is in Testing, add each eligible connecting account. Do not add a user outside the Developer Preview applicant’s domain or company unless Google has permitted that access:
- Open Audience.
- Under Test users, click Add users.
- Enter each connecting user’s email.
- Click Save.
Each Testing authorization expires seven days after consent. When it expires, the user must complete browser authorization again.
Create the OAuth client
-
Open Google Auth Platform > Clients.
-
Click Create Client.
-
In Application type, select Web application.
-
In Name, enter a recognizable name such as
Speakeasy AI Control Plane. -
Under Authorized redirect URIs, click + Add URI.
-
In URIs, enter this value:
https://app.getgram.ai/mcp/remote_login_callback
Prepare an approved secret store before the next step. Google shows the client secret after creation and does not make it accessible again.
- Click Create.
This opens OAuth 2.0 client created.
Copy the OAuth credentials
- In OAuth 2.0 client created, copy Client ID to the approved credential handoff or password manager.
- Copy Client Secret to the approved secret store before closing the dialog.
Keep both values for connecting your credentials.
If you close the dialog before storing the secret, return to Google Auth Platform > Clients and repeat Create the OAuth client to create a new web client with the same callback URL. Store and use the new Client ID and newly shown Client Secret; Google will not make the original secret accessible again. If Workspace app approval is required, approve the new Client ID in the next step.
Permit the OAuth app under Workspace policy if required
Before skipping this step, confirm with the Workspace security owner whether Calendar is Restricted or the new app requires approval. To complete it, you need the Google Workspace Service Settings administrator privilege.
- Open admin.google.com and sign in to the Google Admin console.
- Open Security > Access and data control > API controls.
- Click Manage App Access.
- Under Configured apps, click Configure new app.
- Enter the Client ID you copied in Copy the OAuth credentials.
- Click Search.
- Select the matching OAuth app.
- Select the organizational units that contain the connecting users.
- Click Continue.
- Under Access to Google data, have the application or security owner choose Trusted. Do not choose Limited for restricted Calendar access.
- Click Continue.
- Review the settings.
- Click Finish.
Return to the Speakeasy AI Control Plane.
Add the server in Speakeasy
-
In the Speakeasy AI Control Plane sidebar, under MCP Gateway, select MCP.
-
Click Add new to open Add MCP server.
-
Choose Hosted remotely.
-
On New remote MCP server, paste this URL into MCP server URL:
https://calendarmcp.googleapis.com/mcp/v1 -
Click Verify connectivity, then Save.
This creates the hosted MCP server and opens its Overview page.
Connect your credentials
Open the server’s Settings (from Overview for a hosted remote server, or Configure MCP settings after a catalog addition).
Choose an authentication provider
- If Authentication is unconfigured, choose Use Discovered when available; otherwise choose Configure Manually.
- If authentication is configured but no provider is attached, use Connected services > Add provider.
- If the intended provider is already attached, use its existing controls. Do not attach a duplicate; check its client against the requirements below and skip Verify and attach.
In Attach Remote Identity Provider, the provider selector defaults to Select existing when the project has issuers. Select the appropriate existing Google provider and skip new-provider setup.
New provider only
-
Choose Add new and enter Issuer URL:
https://accounts.google.com/ -
Confirm the auto-derived Slug is unique in the project.
-
Discovery runs automatically for a seeded issuer URL. After typing or changing the URL, click Discover only if offered.
-
Review the endpoints, or enter these Google OAuth values if discovery does not populate them.
Authorization endpoint:
https://accounts.google.com/o/oauth2/v2/authToken endpoint:
https://oauth2.googleapis.com/token
Choose a session client
- Reuse: Under Session Client, choose Select existing when available and select the appropriate Google OAuth client. Skip credential entry; continue to Check client requirements.
- Create: Choose Add new when available and set Client Type to Manual. For a new provider, complete the new-client form below.
New session client only
- Paste the Client ID from Copy the OAuth credentials.
- Paste the Client Secret from Copy the OAuth credentials into Client Secret (optional). Google requires this value despite the optional Speakeasy label.
Check client requirements
For both new and reused clients, verify the Google app’s approved audience and publishing status. An External app in Testing must list each connecting account under Test users. Reusing a client does not require entering its credentials again.
Confirm the selected client includes the required scopes below. For a new client, configure Scope (override); for a reused client, inspect the read-only Scope value. If it does not match, choose Add new to create a correctly scoped client; the attach sheet cannot edit a reused client.
For a new client, enter all three scopes as a comma-separated value in Scope (override):
https://www.googleapis.com/auth/calendar.calendarlist.readonly, https://www.googleapis.com/auth/calendar.events.freebusy, https://www.googleapis.com/auth/calendar.events.readonlyVerify and attach
- Confirm that the callback URL registered with the provider is
https://app.getgram.ai/mcp/remote_login_callback. For a new manual client, also compare it with the sheet’s displayed Redirect URI. The existing-client selection does not display that field; check the registered callback in the provider’s app settings instead. - Click Attach Identity Provider.
For the provider-side callback setting, see created the OAuth client.
At first connection, authorize the requested access with an intended Google account that is eligible under the Developer Preview terms, has mcp.tools.call on the project, access to the required calendars, applicable Test user status, and Workspace API-control approval when required. MCP Tool User is the normal predefined grant for mcp.tools.call, but another role containing the permission can suffice. Use the visible controls on Google’s authorization screen.
This guide covers setup only. For anything beyond it — billing, tool behavior, limits — see Google’s MCP documentation.