Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/api-catalog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> Compact provider slug catalog for agents. Use the slug to reconstruct provider-specific docs URLs only when needed.

Provider count: 882
Provider count: 883

URL patterns:
- Main provider page: https://nango.dev/docs/integrations/all/{slug}.md or https://nango.dev/docs/api-integrations/{slug}.md
Expand Down Expand Up @@ -328,6 +328,7 @@ URL patterns:
| `google-analytics` | Google Analytics | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-analytics.md) | | [setup](https://nango.dev/docs/api-integrations/google-analytics/how-to-register-your-own-google-analytics-api-oauth-app.md) | analytics |
| `google-bigquery` | Google BigQuery | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-bigquery.md) | | [setup](https://nango.dev/docs/api-integrations/google-bigquery/how-to-register-your-own-google-bigquery-api-oauth-app.md) | productivity |
| `google-calendar` | Google Calendar | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-calendar.md) | | [setup](https://nango.dev/docs/api-integrations/google-calendar/how-to-register-your-own-google-calendar-api-oauth-app.md) | popular, productivity |
| `google-calendar-mcp` | Google Calendar (MCP) | | [docs](https://nango.dev/docs/api-integrations/google-calendar-mcp.md) | | [setup](https://nango.dev/docs/api-integrations/google-calendar-mcp/how-to-register-your-own-google-calendar-mcp-api-oauth-app.md) | popular, productivity, mcp |
| `google-chat` | Google Chat | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-chat.md) | | [setup](https://nango.dev/docs/api-integrations/google-chat/how-to-register-your-own-google-chat-api-oauth-app.md) | productivity |
| `google-cloud-storage` | Google Cloud Storage | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-cloud-storage.md) | | [setup](https://nango.dev/docs/api-integrations/google-cloud-storage/how-to-register-your-own-google-cloud-storage-api-oauth-app.md) | storage |
| `google-contacts` | Google Contacts | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-contacts.md) | | [setup](https://nango.dev/docs/api-integrations/google-contacts/how-to-register-your-own-google-contacts-api-oauth-app.md) | productivity |
Expand Down
101 changes: 101 additions & 0 deletions docs/api-integrations/google-calendar-mcp.mdx
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)

---
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
---
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
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).

---
1 change: 1 addition & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1229,6 +1229,7 @@
"api-integrations/google-analytics",
"api-integrations/google-bigquery",
"api-integrations/google-calendar",
"api-integrations/google-calendar-mcp",
"api-integrations/google-chat",
"api-integrations/google-cloud-storage",
"api-integrations/google-contacts",
Expand Down
1 change: 1 addition & 0 deletions docs/llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14621,6 +14621,7 @@ Use these slugs to construct provider-specific docs URLs only when needed.
| `google-analytics` | Google Analytics | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-analytics.md) | | [setup](https://nango.dev/docs/api-integrations/google-analytics/how-to-register-your-own-google-analytics-api-oauth-app.md) | analytics |
| `google-bigquery` | Google BigQuery | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-bigquery.md) | | [setup](https://nango.dev/docs/api-integrations/google-bigquery/how-to-register-your-own-google-bigquery-api-oauth-app.md) | productivity |
| `google-calendar` | Google Calendar | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-calendar.md) | | [setup](https://nango.dev/docs/api-integrations/google-calendar/how-to-register-your-own-google-calendar-api-oauth-app.md) | popular, productivity |
| `google-calendar-mcp` | Google Calendar (MCP) | | [docs](https://nango.dev/docs/api-integrations/google-calendar-mcp.md) | | [setup](https://nango.dev/docs/api-integrations/google-calendar-mcp/how-to-register-your-own-google-calendar-mcp-api-oauth-app.md) | popular, productivity, mcp |
| `google-chat` | Google Chat | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-chat.md) | | [setup](https://nango.dev/docs/api-integrations/google-chat/how-to-register-your-own-google-chat-api-oauth-app.md) | productivity |
| `google-cloud-storage` | Google Cloud Storage | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-cloud-storage.md) | | [setup](https://nango.dev/docs/api-integrations/google-cloud-storage/how-to-register-your-own-google-cloud-storage-api-oauth-app.md) | storage |
| `google-contacts` | Google Contacts | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/google-contacts.md) | | [setup](https://nango.dev/docs/api-integrations/google-contacts/how-to-register-your-own-google-contacts-api-oauth-app.md) | productivity |
Expand Down
2 changes: 1 addition & 1 deletion docs/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ Use provider URLs by replacing `{slug}` with a slug from the API catalog:

## APIs and integrations

- [API catalog](https://nango.dev/docs/api-catalog.txt): 882 provider slugs with canonical docs routes, auth modes, setup guides, and connect guides.
- [API catalog](https://nango.dev/docs/api-catalog.txt): 883 provider slugs with canonical docs routes, auth modes, setup guides, and connect guides.
- Provider-specific pages are intentionally not expanded here so core Nango guides remain easy for agents to find.

## Resources
Expand Down
14 changes: 14 additions & 0 deletions packages/providers/providers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9012,6 +9012,20 @@ google-calendar:
docs: https://nango.dev/docs/api-integrations/google-calendar
setup_guide_url: https://nango.dev/docs/api-integrations/google-calendar/how-to-register-your-own-google-calendar-api-oauth-app

google-calendar-mcp:
display_name: Google Calendar (MCP)
categories:
- popular
- productivity
- mcp
alias: google-calendar
proxy:
base_url: https://calendarmcp.googleapis.com/mcp
headers:
accept: application/json,text/event-stream
docs: https://nango.dev/docs/api-integrations/google-calendar-mcp
setup_guide_url: https://nango.dev/docs/api-integrations/google-calendar-mcp/how-to-register-your-own-google-calendar-mcp-api-oauth-app

google-contacts:
display_name: Google Contacts
categories:
Expand Down
Loading
Loading