-
Notifications
You must be signed in to change notification settings - Fork 1.2k
feat(integrations): add support for google-calendar-mcp #6728
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
hassan254-prog
merged 4 commits into
master
from
wari/add-support-for-google-calendar-mcp
Jul 13, 2026
Merged
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
f4d65b4
feat(integrations): add support for google-calendar-mcp
hassan254-prog 1a36196
chore(docs): regenerate LLM indexes
github-actions[bot] f110715
Merge branch 'master' into wari/add-support-for-google-calendar-mcp
hassan254-prog eb0f7ed
chore(docs): regenerate LLM indexes
github-actions[bot] File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,101 @@ | ||
| --- | ||
| title: 'Google Calendar (MCP)' | ||
| sidebarTitle: 'Google Calendar (MCP)' | ||
| description: 'Connect your application to the Google Calendar MCP server using Google OAuth' | ||
| --- | ||
|
|
||
| ## 🚀 Quickstart | ||
|
|
||
| Connect to the Google Calendar MCP server with Nango using your **Google account**. | ||
|
|
||
| <Steps> | ||
| <Step title="Create the integration"> | ||
| In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) → _Configure New Integration_ → _Google Calendar (MCP)_. | ||
| </Step> | ||
| <Step title="Authorize with Google"> | ||
| Go to [Connections](https://app.nango.dev/dev/connections) → _Add Test Connection_ → _Google Calendar (MCP)_ and authorize with your Google account. | ||
| </Step> | ||
| <Step title="Call the Google Calendar MCP server"> | ||
| Make your first MCP request (e.g. initialize). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections): | ||
| <Tabs> | ||
| <Tab title="cURL"> | ||
|
|
||
| ```bash | ||
| curl "https://api.nango.dev/proxy/v1" \ | ||
| -X POST \ | ||
| -H "Authorization: Bearer <NANGO-SECRET-KEY>" \ | ||
| -H "Provider-Config-Key: <INTEGRATION-ID>" \ | ||
| -H "Connection-Id: <CONNECTION-ID>" \ | ||
| -H "Content-Type: application/json" \ | ||
| -d '{ | ||
| "jsonrpc": "2.0", | ||
| "id": 1, | ||
| "method": "initialize", | ||
| "params": { | ||
| "protocolVersion": "2024-11-05", | ||
| "capabilities": {}, | ||
| "clientInfo": { | ||
| "name": "nango-client", | ||
| "version": "1.0.0" | ||
| } | ||
| } | ||
| }' | ||
| ``` | ||
|
|
||
| </Tab> | ||
|
|
||
| <Tab title="Node"> | ||
|
|
||
| Install Nango's backend SDK with `npm i @nangohq/node`. Then run: | ||
|
|
||
| ```typescript | ||
| import { Nango } from '@nangohq/node'; | ||
|
|
||
| const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' }); | ||
|
|
||
| const res = await nango.post({ | ||
| endpoint: '/v1', | ||
| providerConfigKey: '<INTEGRATION-ID>', | ||
| connectionId: '<CONNECTION-ID>', | ||
| data: { | ||
| jsonrpc: '2.0', | ||
| id: 1, | ||
| method: 'initialize', | ||
| params: { | ||
| protocolVersion: '2024-11-05', | ||
| capabilities: {}, | ||
| clientInfo: { | ||
| name: 'nango-client', | ||
| version: '1.0.0' | ||
| } | ||
| } | ||
| } | ||
| }); | ||
|
|
||
| console.log(res.data); | ||
| ``` | ||
| </Tab> | ||
|
|
||
| </Tabs> | ||
| Or fetch credentials with the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get). | ||
|
|
||
| ✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests. | ||
| </Step> | ||
|
|
||
| <Step title="Implement Nango in your app"> | ||
| Follow our [Auth implementation guide](/guides/primitives/auth) to integrate Nango in your app. | ||
|
|
||
| To obtain your own production credentials, follow the setup guide linked below. | ||
| </Step> | ||
| </Steps> | ||
|
|
||
| ## 📚 Google Calendar (MCP) guides | ||
|
|
||
| Nango-maintained guides for common use cases. | ||
|
|
||
| - [How to register your own Google Calendar (MCP) OAuth app](/api-integrations/google-calendar-mcp/how-to-register-your-own-google-calendar-mcp-api-oauth-app) | ||
| Register an OAuth app with Google, enable the Google Calendar MCP API, and connect it to Nango. | ||
|
|
||
| Official docs: [Google Calendar MCP server](https://developers.google.com/workspace/calendar/api/v3/reference/mcp) | ||
|
|
||
| --- |
97 changes: 97 additions & 0 deletions
97
...gle-calendar-mcp/how-to-register-your-own-google-calendar-mcp-api-oauth-app.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,97 @@ | ||
| --- | ||
| title: 'How to register your own Google Calendar (MCP) OAuth app' | ||
| sidebarTitle: 'Google Calendar (MCP) Setup' | ||
| description: 'Register an OAuth app with the Google Calendar MCP server and connect it to Nango' | ||
| --- | ||
|
|
||
| This guide shows you how to register your own app with Google to obtain your OAuth credentials (client id & secret). These are required to let your users grant your app access to their Google Calendar data through MCP. | ||
|
|
||
| <Info> | ||
| The Google Calendar MCP server is available as part of the [Google Workspace Developer Preview Program](https://developers.google.com/workspace/preview), which grants early access to certain features. | ||
| </Info> | ||
|
|
||
| <Info> | ||
| You will need to pass a Google review to go live with your integration. | ||
|
|
||
| [Follow our guide](/api-integrations/google-shared/google-security-review) to get approved as fast as possible. | ||
| </Info> | ||
|
|
||
| <Steps> | ||
| <Step id="create-google-cloud-account" title="Create a Google Cloud account"> | ||
| If you don't already have one, sign up for a [Google Cloud account](https://console.cloud.google.com/). | ||
| </Step> | ||
| <Step id="create-project" title="Create a new project"> | ||
| 1. Go to the [Google Cloud Console](https://console.cloud.google.com/). | ||
| 2. Click on the project dropdown at the top left of the page. | ||
| 3. Click **New Project**. | ||
| 4. Enter a **Project Name** for your project. | ||
| 5. Under **Location**, select the appropriate organization or folder where this project should belong. | ||
| <Note>If you're not part of an organization, it will default to No organization</Note> | ||
| 6. Click **Create** and wait for the project to be created. | ||
| 7. Select it from the project dropdown. | ||
| </Step> | ||
| <Step id="enable-apis" title="Enable the APIs you need"> | ||
| 1. Go to the [API Library](https://console.cloud.google.com/apis/library) in the Google Cloud Console. | ||
| 2. Search for **Google Calendar API** and click **Enable**. | ||
| 3. Search for **Google Calendar MCP API** and click **Enable**. | ||
|
|
||
| <Note>The Google Calendar MCP server is a separate service from the Calendar API — both must be enabled, or requests to the MCP server fail even with a valid OAuth token.</Note> | ||
| </Step> | ||
| <Step id="configure-oauth-consent-screen" title="Configure the OAuth consent screen"> | ||
| 1. Go to **APIs & Services** > **OAuth consent screen** in the Google Cloud Console. | ||
| 2. Click **Get started**. | ||
| 3. Fill in all the required fields in the **App Information** form. | ||
| 4. Click **Next**. Select the appropriate Audience: | ||
| - **External**: For applications available to any Google user | ||
| - **Internal**: For applications restricted to users within your Google Workspace organization | ||
| 5. Click **Next**. Fill in the **Contact Information**; these are the email addresses that Google will use to notify you about any changes to your project. | ||
| 6. Click **Next**, then check the **I agree to the Google API Services: User Data Policy** checkbox, and click **Continue**. | ||
| 7. Add the scopes your application needs. Under **Data Access**, click **Add or Remove Scopes** and select the scopes that correspond to the APIs you enabled, for example: | ||
| - `https://www.googleapis.com/auth/calendar.calendarlist.readonly` | ||
| - `https://www.googleapis.com/auth/calendar.events.freebusy` | ||
| - `https://www.googleapis.com/auth/calendar.events.readonly` | ||
|
|
||
| <Note>Make sure to select scopes based on the APIs you enabled earlier when setting up the app. See [Google's OAuth 2.0 Scopes documentation](https://developers.google.com/identity/protocols/oauth2/scopes) for all available scopes.</Note> | ||
|
|
||
| 8. Under **Audience**, click **Add users** if you selected **External** user type (required for testing before verification). | ||
|
|
||
| <Warning>In "Testing" mode with an external user type, refresh tokens expire in 7 days unless only basic scopes are used (userinfo.email, userinfo.profile, openid, or their [OpenID Connect equivalents](https://developers.google.com/identity/protocols/oauth2/scopes#openid-connect)). You can remove this 7-day limit by switching from Testing to Production in step 8 below.</Warning> | ||
| </Step> | ||
| <Step id="create-oauth-credentials" title="Create OAuth 2.0 credentials"> | ||
| 1. Go to **APIs & Services** > **Credentials** in the Google Cloud Console. | ||
| 2. Click **Create Credentials** and select **OAuth client ID**. | ||
| 3. Select **Web application** as the application type. | ||
| 4. Enter a name for your OAuth client. | ||
| 5. Under **Authorized redirect URIs**, add `https://api.nango.dev/oauth/callback`. | ||
|
|
||
| <Note>While setting up the OAuth credentials, the _Authorized JavaScript origins_ should be your site URL (`https://app.nango.dev` if you're testing from the Nango UI).</Note> | ||
|
|
||
| 6. Click **Create**. | ||
| 7. A dialog will appear with your client ID and client secret. Save these credentials securely as you'll need them when configuring your integration in Nango. | ||
|
|
||
| <Note>Google allows up to 100 refresh tokens per account per OAuth client ID. New tokens overwrite the oldest without warning when the limit is reached.</Note> | ||
| </Step> | ||
| <Step id="start-building" title="Start building your integration"> | ||
| Follow the [_Quickstart_](/getting-started/quickstart) to build your integration. | ||
| </Step> | ||
| <Step id="verify-app" title="Verify your app"> | ||
| Most Google Calendar scopes are marked "sensitive" or "restricted" by Google. You need to pass a Google review to go live. | ||
|
|
||
| [Follow our guide](/api-integrations/google-shared/google-security-review) to prepare and pass as quickly as possible. | ||
|
|
||
| <Note>For applications using sensitive or restricted scopes, Google requires verification and a security assessment. This process can take several weeks to complete.</Note> | ||
| </Step> | ||
| <Step id="publish-app" title="Publish your app (switch from Testing to Production)"> | ||
| To move your OAuth app from testing to production: | ||
| 1. Go to **APIs & Services** > **OAuth consent screen** > **Audience**. | ||
| 2. Click **Publish App** to switch your app from testing to production. | ||
| </Step> | ||
| </Steps> | ||
|
|
||
| ## Important considerations | ||
|
|
||
| **Refresh token expiration** | ||
|
|
||
| For information on why Google refresh tokens expire, see [Why is my Google refresh token expiring?](https://www.nango.dev/blog/google-oauth-invalid-grant-token-has-been-expired-or-revoked#why-was-the-refresh-token-revoked). For Google OAuth basics, see [Google's OAuth 2.0 documentation](https://developers.google.com/identity/protocols/oauth2). | ||
|
|
||
| --- | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
packages/webapp/public/images/template-logos/google-calendar-mcp.svg
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| google-calendar.svg |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.