diff --git a/docs/api-catalog.txt b/docs/api-catalog.txt index 05a74ef257..7502c22b18 100644 --- a/docs/api-catalog.txt +++ b/docs/api-catalog.txt @@ -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 @@ -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 | diff --git a/docs/api-integrations/google-calendar-mcp.mdx b/docs/api-integrations/google-calendar-mcp.mdx new file mode 100644 index 0000000000..c4b6fa6956 --- /dev/null +++ b/docs/api-integrations/google-calendar-mcp.mdx @@ -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**. + + + + In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) → _Configure New Integration_ → _Google Calendar (MCP)_. + + + Go to [Connections](https://app.nango.dev/dev/connections) → _Add Test Connection_ → _Google Calendar (MCP)_ and authorize with your Google account. + + + 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): + + + + ```bash + curl "https://api.nango.dev/proxy/v1" \ + -X POST \ + -H "Authorization: Bearer " \ + -H "Provider-Config-Key: " \ + -H "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" + } + } + }' + ``` + + + + + + Install Nango's backend SDK with `npm i @nangohq/node`. Then run: + + ```typescript + import { Nango } from '@nangohq/node'; + + const nango = new Nango({ secretKey: '' }); + + const res = await nango.post({ + endpoint: '/v1', + providerConfigKey: '', + connectionId: '', + 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); + ``` + + + + 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. + + + + 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. + + + +## 📚 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) + +--- diff --git a/docs/api-integrations/google-calendar-mcp/how-to-register-your-own-google-calendar-mcp-api-oauth-app.mdx b/docs/api-integrations/google-calendar-mcp/how-to-register-your-own-google-calendar-mcp-api-oauth-app.mdx new file mode 100644 index 0000000000..71ed3d1f1f --- /dev/null +++ b/docs/api-integrations/google-calendar-mcp/how-to-register-your-own-google-calendar-mcp-api-oauth-app.mdx @@ -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. + + + 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. + + + + 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. + + + + + If you don't already have one, sign up for a [Google Cloud account](https://console.cloud.google.com/). + + + 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. + If you're not part of an organization, it will default to No organization + 6. Click **Create** and wait for the project to be created. + 7. Select it from the project dropdown. + + + 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**. + + 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. + + + 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` + + 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. + + 8. Under **Audience**, click **Add users** if you selected **External** user type (required for testing before verification). + + 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. + + + 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`. + + 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). + + 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. + + 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. + + + Follow the [_Quickstart_](/getting-started/quickstart) to build your integration. + + + 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. + + For applications using sensitive or restricted scopes, Google requires verification and a security assessment. This process can take several weeks to complete. + + + 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. + + + +## 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). + +--- diff --git a/docs/docs.json b/docs/docs.json index 3187797769..4d56ee567c 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -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", diff --git a/docs/llms-full.txt b/docs/llms-full.txt index f9439642ad..534142e22d 100644 --- a/docs/llms-full.txt +++ b/docs/llms-full.txt @@ -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 | diff --git a/docs/llms.txt b/docs/llms.txt index 75998c2d8c..28e7494c3e 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -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 diff --git a/packages/providers/providers.yaml b/packages/providers/providers.yaml index 4fc23a5129..1a8b310dcf 100644 --- a/packages/providers/providers.yaml +++ b/packages/providers/providers.yaml @@ -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: diff --git a/packages/webapp/public/images/template-logos/google-calendar-mcp.svg b/packages/webapp/public/images/template-logos/google-calendar-mcp.svg new file mode 120000 index 0000000000..6cb04103c3 --- /dev/null +++ b/packages/webapp/public/images/template-logos/google-calendar-mcp.svg @@ -0,0 +1 @@ +google-calendar.svg \ No newline at end of file diff --git a/packages/webapp/public/images/template-logos/plain.svg b/packages/webapp/public/images/template-logos/plain.svg index 634946cdf9..964f52fa93 100644 --- a/packages/webapp/public/images/template-logos/plain.svg +++ b/packages/webapp/public/images/template-logos/plain.svg @@ -1,63 +1 @@ - - - - - - \ No newline at end of file + \ No newline at end of file