diff --git a/docs-v2/components/ConnectCodeSnippets.js b/docs-v2/components/ConnectCodeSnippets.js index 7a7d396f5c734..335aea0a0c128 100644 --- a/docs-v2/components/ConnectCodeSnippets.js +++ b/docs-v2/components/ConnectCodeSnippets.js @@ -13,7 +13,7 @@ export function getServerCodeSnippet(externalUserId) { // This code runs on your server const pd = createBackendClient({ - environment: "development", + environment: "production", credentials: { clientId: process.env.PIPEDREAM_CLIENT_ID, clientSecret: process.env.PIPEDREAM_CLIENT_SECRET, diff --git a/docs-v2/next.config.mjs b/docs-v2/next.config.mjs index 935ae3d3a475a..c9d01b1edac08 100644 --- a/docs-v2/next.config.mjs +++ b/docs-v2/next.config.mjs @@ -91,7 +91,12 @@ export default withNextra({ }, { source: "/quickstart/run-workflow-on-a-schedule/", - destination: "/quickstart/", + destination: "/workflows/quickstart/", + permanent: true, + }, + { + source: "/quickstart/", + destination: "/workflows/quickstart/", permanent: true, }, { @@ -476,6 +481,11 @@ export default withNextra({ destination: "/connect/managed-auth/webhooks/", permanent: true, }, + { + source: "/connect/environments/", + destination: "/connect/managed-auth/environments/", + permanent: true, + }, { source: "/integrations/connected-accounts/oauth-clients/", destination: "/integrations/oauth-clients/", diff --git a/docs-v2/pages/_meta.tsx b/docs-v2/pages/_meta.tsx index 5901170e7dbaa..aab0d67fdd3bc 100644 --- a/docs-v2/pages/_meta.tsx +++ b/docs-v2/pages/_meta.tsx @@ -1,6 +1,5 @@ export default { "index": "What is Pipedream?", - "quickstart": "Quickstart", "workspaces": "Workspaces", "projects": "Projects", "connect": "Connect", diff --git a/docs-v2/pages/connect/_meta.tsx b/docs-v2/pages/connect/_meta.tsx index 1d9bbb169e7fa..c1c827301f8d9 100644 --- a/docs-v2/pages/connect/_meta.tsx +++ b/docs-v2/pages/connect/_meta.tsx @@ -1,31 +1,12 @@ export default { - "index": { - "title": "Overview", - }, - "use-cases": { - "title": "Use cases", - }, - "managed-auth": { - "title": "Managed auth", - }, - "components": { - "title": "Pre-built tools", - }, - "mcp": { - "title": "MCP servers", - }, - "api-proxy": { - "title": "API proxy", - }, - "workflows": { - "title": "Workflows", - }, - "environments": { - "title": "Environments", - }, - "api": { - "title": "API & SDK reference", - }, + "index": "Overview", + "use-cases": "Use cases", + "managed-auth": "Managed auth", + "components": "Tool calling", + "mcp": "MCP", + "api-proxy": "API proxy", + "workflows": "Workflows", + "api": "API & SDK reference", "migrating-from-project-keys-to-oauth": { "display": "hidden", }, diff --git a/docs-v2/pages/connect/api-proxy.mdx b/docs-v2/pages/connect/api-proxy.mdx index 00348cc835286..f9bc714c3c933 100644 --- a/docs-v2/pages/connect/api-proxy.mdx +++ b/docs-v2/pages/connect/api-proxy.mdx @@ -27,7 +27,7 @@ Before getting started with the Connect proxy, make sure you've already gone thr You can send requests to the Connect proxy using the [Pipedream SDK](/connect/sdk/) with a fetch-style interface, or by making a request to the [REST API](/rest-api/connect/proxy/). - A [Pipedream OAuth client](/rest-api/auth/#oauth) to make authenticated requests to Pipedream's API -- Connect [environment](/connect/environments/) (ex, `production` or `development`) +- Connect [environment](/connect/managed-auth/environments/) (ex, `production` or `development`) - The [external user ID](/connect/api/#external-users) for your end user (ex, `abc-123`) - The [account ID](/connect/api/#accounts) for your end user's connected account (ex, `apn_1234567`) diff --git a/docs-v2/pages/connect/api.mdx b/docs-v2/pages/connect/api.mdx index 6b587b82bab59..c5f0099ee55e5 100644 --- a/docs-v2/pages/connect/api.mdx +++ b/docs-v2/pages/connect/api.mdx @@ -104,7 +104,7 @@ export default function Home() { ## Environment -Some API endpoints accept an [environment](/connect/environments/) parameter. This lets you specify the environment (`production` or `development`) where resources will live in your project. +Some API endpoints accept an [environment](/connect/managed-auth/environments/) parameter. This lets you specify the environment (`production` or `development`) where resources will live in your project. Always set the environment when you create the SDK client: diff --git a/docs-v2/pages/connect/managed-auth/_meta.tsx b/docs-v2/pages/connect/managed-auth/_meta.tsx index 692e9c6c53693..2e217dee82d9e 100644 --- a/docs-v2/pages/connect/managed-auth/_meta.tsx +++ b/docs-v2/pages/connect/managed-auth/_meta.tsx @@ -4,6 +4,7 @@ export default { "tokens": "Connect Tokens", "connect-link": "Connect Link", "oauth-clients": "OAuth Clients", + "environments": "Environments", "webhooks": "Webhooks", - "customization": "Customizing the Auth Flow", + "customization": "Project Configuration", } as const diff --git a/docs-v2/pages/connect/managed-auth/customization.mdx b/docs-v2/pages/connect/managed-auth/customization.mdx index b4f842cf3f0c8..a87adc2ea8b7b 100644 --- a/docs-v2/pages/connect/managed-auth/customization.mdx +++ b/docs-v2/pages/connect/managed-auth/customization.mdx @@ -1,17 +1,15 @@ import ArcadeEmbed from '@/components/ArcadeEmbed' import Callout from '@/components/Callout' -# Customizing the Auth Flow +# Project Configuration + +By default, your end users will see a primarly Pipedream branded experience when they connect their account. To customize this screen to highlight your application, you can configure your [app's name](#application-name), [support email](#support-email), and [logo](#logo) in the Pipedream UI. - -By default, your end users will see a primarly Pipedream branded experience when they connect their account. To customize this screen to highlight your application, you can configure your [app's name](#application-name), [support email](#support-email), and [logo](#logo) in the Pipedream UI. - - ## Customizing your application details Open your project in the Pipedream UI: [https://pipedream.com/projects](https://pipedream.com/projects) diff --git a/docs-v2/pages/connect/environments.mdx b/docs-v2/pages/connect/managed-auth/environments.mdx similarity index 93% rename from docs-v2/pages/connect/environments.mdx rename to docs-v2/pages/connect/managed-auth/environments.mdx index 5d2efde5eb1c7..67af2fa4363db 100644 --- a/docs-v2/pages/connect/environments.mdx +++ b/docs-v2/pages/connect/managed-auth/environments.mdx @@ -3,22 +3,22 @@ import Image from 'next/image' # Environments -Pipedream Connect projects support two environments: `development` and `production`. Connected accounts and credentials stored in `development` remain separate from `production`. +Pipedream Connect projects support two environments: `development` and `production`. Connected accounts and credentials stored in one environment remain separate from the other. -You can use all of the Connect features in `development` mode **on any plan**. **[Visit the pricing page](https://pipedream.com/pricing?plan=Connect)** to select the right plan when you're ready to ship to production. +You can use all of the Connect features in `development` mode **on any plan**. **[Visit the pricing page](https://pipedream.com/pricing?plan=Connect)** to select the right plan when you're ready to ship your app to production. ## Development mode -Development mode provides access to all Connect features while you're building and testing your integration. It has the following constraints: +Development mode provides access to all Connect features while you're building and testing your integration with the following constraints: - **Maximum of 10 external users**: The development environment is limited to 10 unique external user IDs. If you exceed this limit, you'll need to [delete some existing users](/connect/managed-auth/users/#deleting-users) before adding new ones. - **Must be signed in to pipedream.com**: When connecting an account in development mode, you must be signed in to pipedream.com in the same browser where you're connecting your account. - **Personal testing only**: Development mode is intended for your own accounts during testing and development, not for your real end users. -The `development` environment is not intended for production use with your customers. When you're ready to launch, you should transition to the `production` environment. +The `development` environment is not intended for production use with your customers. When you're ready to launch, you should transition to `production`.
@@ -39,7 +39,8 @@ const pd = createBackendClient({ credentials: { clientId: "your-oauth-client-id", clientSecret: "your-oauth-client-secret", - } + }, + projectId: "proj_xxxxxxx" }); ``` diff --git a/docs-v2/pages/connect/managed-auth/quickstart.mdx b/docs-v2/pages/connect/managed-auth/quickstart.mdx index ffb79dca8aa4d..20c4895592f05 100644 --- a/docs-v2/pages/connect/managed-auth/quickstart.mdx +++ b/docs-v2/pages/connect/managed-auth/quickstart.mdx @@ -1,5 +1,5 @@ import Callout from '@/components/Callout' -import { Steps, Tabs } from 'nextra/components' +import { Steps } from 'nextra/components' import Image from 'next/image' import VideoPlayer from "@/components/VideoPlayer" import { GlobalConnectProvider } from '@/components/GlobalConnectProvider' @@ -27,17 +27,17 @@ Here's how Connect sits in your frontend and backend, and communicates with Pipe ## Getting started +We'll walk through these steps below with an interactive demo that lets you see an execute the code directly in the docs. + ### Configure your environment You'll need to do two things to add Pipedream Connect to your app: -1. [Connect to the Pipedream API from your server](#generate-a-short-lived-token). This lets you make secure calls to the Pipedream API to initiate the account connection flow and retrieve account credentials. If you're running a JavaScript framework like Node.js on your server, you can use the Pipedream SDK. +1. [Connect to the Pipedream API from your server](#generate-a-short-lived-token). This lets you make secure calls to the Pipedream API to initiate the account connection flow and retrieve account credentials. 2. [Add the Pipedream SDK to your frontend](#connect-your-users-account) or redirect your users to [a Pipedream-hosted URL](/connect/connect-link/) to start the account connection flow. -We'll walk through these steps below with an interactive demo that lets you see an execute the code directly in the docs. - If you're building your own app, you'll need to provide these credentials to the environment, or retrieve them from your secrets store: ```bash @@ -50,18 +50,15 @@ PIPEDREAM_PROJECT_ID=your_project_id ### Create a project in Pipedream -1. Open an existing Pipedream project or create a new one at [pipedream.com/projects](https://pipedream.com/projects). -2. Click the **Settings** tab, then copy your **Project ID**. +1. Open an existing Pipedream project or create a new one at [pipedream.com/projects](https://pipedream.com/projects) +2. Click the **Settings** tab, then copy your **Project ID** ### Create a Pipedream OAuth client Pipedream uses OAuth to authorize requests to the REST API. To create an OAuth client: -1. Visit the [API settings](https://pipedream.com/settings/api) for your workspace. -2. Click the **New OAuth Client** button. -3. Name your client and click **Create**. -4. Copy the client secret. **It will not be accessible again**. Click **Close**. -5. Copy the client ID from the list. +1. Visit the [API settings](https://pipedream.com/settings/api) for your workspace +2. Create a new OAuth client and note the client ID and secret You'll need these when configuring the SDK and making API requests. @@ -69,7 +66,7 @@ You'll need these when configuring the SDK and making API requests. To securely initiate account connections for your users, you'll need to generate a short-lived token for your users and use that in the [account connection flow](#connect-your-users-account). See [the docs on Connect tokens](/connect/tokens/) for a general overview of why we need to create tokens and scope them to end users. -In the code below you can see how we generate a Connect token for an example user, and even **try it yourself**: +Check out the code below **try it yourself**:
@@ -83,7 +80,7 @@ Refer to the API docs for [full set of parameters you can pass](/connect/api/#cr ### Connect your user's account -To connect a third-party account for a user, you have two options: +You have two options when connecting an account for your user: 1. [Use the Pipedream SDK](#use-the-pipedream-sdk-in-your-frontend) in your frontend 2. [Use Connect Link](#or-use-connect-link) to deliver a hosted URL to your user @@ -128,24 +125,16 @@ Check out the [full API docs](/connect/api/#create-token) for all parameters you Now that your users have connected an account, you can use their auth in one of a few ways: -1. [Retrieve their credentials from the REST API](/connect/api/#accounts) to use in your backend application -2. [Use Pipedream's visual workflow builder](/connect/workflows/) to define complex logic to run on behalf of your users -3. [Embed Pipedream components directly in your app](/connect/components/) to run actions and triggers on their behalf +1. [Expose 10k+ tools](/connect/components/) to your AI app or agent and call them on behalf of your customers +2. [Send custom requests](/connect/proxy/) to any one of the 2500+ APIs using the Connect API proxy +3. [Use Pipedream's visual workflow builder](/connect/workflows/) to define complex logic to run on behalf of your users +4. [Embed Pipedream components directly in your app](/connect/components/) to run actions and triggers on their behalf ### Deploy your app to production -- Test end to end in [development](/connect/environments/) +- Test end to end in [development](/connect/managed-auth/environments/) - Ship to production! -
-

This quickstart showcases the recommended implementation flow:

-
    -
  1. Securely generate a token on your server (keeping credentials private)
  2. -
  3. Pass the token to your frontend to connect an account
  4. -
-

Note: Each time you reload this page, a new unique user ID is generated.

-
- diff --git a/docs-v2/pages/connect/managed-auth/tokens.mdx b/docs-v2/pages/connect/managed-auth/tokens.mdx index 12d6abfa5a22c..18b4860940115 100644 --- a/docs-v2/pages/connect/managed-auth/tokens.mdx +++ b/docs-v2/pages/connect/managed-auth/tokens.mdx @@ -27,6 +27,6 @@ When you generate a token, you can specify a `webhook_uri` where Pipedream will ## Tokens are scoped to end users and environments -When you [create a new Connect token](/connect/api/#create-token), you pass an `external_user_id` and an `environment`. See the docs on [environments](/connect/environments/) for more information on passing environment in the SDK and API. +When you [create a new Connect token](/connect/api/#create-token), you pass an `external_user_id` and an `environment`. See the docs on [environments](/connect/managed-auth/environments/) for more information on passing environment in the SDK and API. Tokens are scoped to this user and environment. When the user successfully connects an account with that token, it will be saved for that `external_user_id` in the specified environment. diff --git a/docs-v2/pages/connect/mcp.mdx b/docs-v2/pages/connect/mcp.mdx deleted file mode 100644 index 255cc74110063..0000000000000 --- a/docs-v2/pages/connect/mcp.mdx +++ /dev/null @@ -1,189 +0,0 @@ -import Callout from '@/components/Callout' -import { Steps, Tabs } from 'nextra/components' -import Image from 'next/image' - -# MCP Servers - -Pipedream offers dedicated MCP ([Model Context Protocol](https://modelcontextprotocol.io/)) servers for all of our {process.env.PUBLIC_APPS}+ integrated apps. These servers enable AI assistants like Claude to securely access and interact with thousands of APIs through a standardized communication protocol, performing real-world tasks by connecting to your accounts. - -{/* ![MCP visualization](https://res.cloudinary.com/pipedreamin/image/upload/v1714074324/pd-mcp-illustration_y76lnt.webp) */} - -Pipedream's MCP servers are powered by [Pipedream Connect](https://pipedream.com/docs/connect), including: - -- Access to {process.env.PUBLIC_APPS}+ apps and APIs through a consistent interface -- Over 10,000 pre-built tools and actions -- Fully-managed OAuth and credential storage -- Secure account connections with revocable access - - -User credentials are encrypted at rest and all requests are made through Pipedream's servers, never directly exposing credentials to AI models. Read more about how we protect user credentials [here](/privacy-and-security/#third-party-oauth-grants-api-keys-and-environment-variables). - - -## Available MCP servers - -Pipedream provides MCP servers for all our [supported apps](https://pipedream.com/apps). Each app has its own dedicated MCP server with tools specific to that API. For example: - -- **[Slack MCP server](https://mcp.pipedream.com/app/slack)**: Send messages, manage channels, create reminders, and more -- **[GitHub MCP server](https://mcp.pipedream.com/app/github)**: Create issues, manage pull requests, search repositories -- **[Google Sheets MCP server](https://mcp.pipedream.com/app/google-sheets)**: Read and write data, format cells, create charts - -Explore the full list of available MCP servers at [mcp.pipedream.com](https://mcp.pipedream.com). - -## Getting started - -You can use Pipedream's MCP servers in two ways: - -1. **[As an end user](#for-end-users)**: Connect your accounts through our hosted MCP servers at [mcp.pipedream.com](https://mcp.pipedream.com) -2. **[As a developer](#for-developers)**: Host your own MCP servers for your application or organization - -### For end users - -Set up MCP servers to use with any compatible MCP client, like Claude Desktop, Windsurf, Cursor, and VS Code. - - - -#### Configure MCP servers and connect accounts - -- Navigate to [mcp.pipedream.com](https://mcp.pipedream.com) and sign in or create an account (this is a separate account from pipdream.com) -- Browse available MCP servers -- Follow the configuration instructions on the server page to add it to your preferred MCP client -- Connect your account (you can do this in the UI or the AI will prompt you when you first use a tool) - -#### Start chatting - -Ask the LLM or agent to perform tasks using your connected services. For example: - -- "Send a message to my team in Slack" -- "Create a new issue in GitHub" -- "Add data to my Google Sheet" - -The AI will refer to the configured tools available in its MCP servers to complete the task. - -#### Get things done - -With MCP-enabled AI, you can: - -- Send messages and manage communication -- Create and update documents -- Query and analyze data -- Automate workflows across your favorite tools - -All using your own connected accounts with full control and security. - - - -### For developers - -Deploy Pipedream's MCP servers to your application or agent and make authenticated request on behalf of your customers. Refer to our reference implementation [here](https://github.com/PipedreamHQ/pipedream/blob/master/modelcontextprotocol/README.md). - - - -#### Prerequisites - -To run your own MCP server, you'll need: - -1. A [Pipedream account](https://pipedream.com/auth/signup) -2. A [Pipedream project](/projects/#creating-projects). Accounts connected via MCP will be stored here. -3. [Pipedream OAuth credentials](/connect/managed-auth/oauth-clients/) - -#### Set up environment variables - -Set the following environment variables: - -```bash -PIPEDREAM_CLIENT_ID=your_client_id -PIPEDREAM_CLIENT_SECRET=your_client_secret -PIPEDREAM_PROJECT_ID=your_project_id -PIPEDREAM_PROJECT_ENVIRONMENT=development -``` - -#### Run the MCP server - -Pipedream's MCP servers can run in two modes: - -##### Stdio (for local testing) - -```bash -npx @pipedream/mcp stdio --app slack --external-user-id user123 -``` - -##### SSE (for hosting) - -```bash -npx @pipedream/mcp sse -``` - -This exposes routes at: -- `GET /:external_user_id/:app` - App-specific SSE connection endpoint -- `POST /:external_user_id/:app/messages` - App-specific message handler - -Where: -- `:external_user_id` is your user's unique identifier in your system -- `:app` is the app slug (e.g., "slack", "github") - -#### Customize for your needs - -You can host and customize the MCP server for your specific requirements: - -```bash -# Clone the repo -git clone https://github.com/PipedreamHQ/pipedream -cd pipedream/modelcontextprotocol - -# Install dependencies -npm install - -# Build -npm run build - -# Run the SSE server -npm run start:sse:prod -``` - -See the [MCP server README](https://github.com/PipedreamHQ/pipedream/blob/master/modelcontextprotocol/README.md) for detailed instructions on customization options. - - - -## Security - -MCP servers follow strict security best practices: - -- **Credential isolation**: Each user's credentials are stored securely and isolated from other users -- **No credential exposure**: Credentials are never exposed to AI models or your client-side code -- **Request authentication**: All requests to the MCP server are authenticated -- **Revocable access**: Users can revoke access to their connected accounts at any time - -For more information on security, see our [security documentation](/privacy-and-security/). - -## Use cases - -Pipedream's MCP servers enable AI assistants to perform a wide range of tasks: - -- **Productivity automation**: Schedule meetings, send emails, create documents -- **Data analysis**: Query databases, analyze spreadsheets, generate reports -- **Content creation**: Post social media updates, create marketing materials -- **Customer support**: Respond to inquiries, create tickets, update CRM records -- **Developer workflows**: Create issues, review code, deploy applications - -## Supported tools - -- Each MCP server provides tools specific to that app. Tools are automatically created based on Pipedream's registry of pre-built actions. -- You can find the supported tools for a given app on its MCP server page or search for specific actions here: [pipedream.com/expore](https://pipedream.com/explore#popular-actions). - -## Known gaps and limitations - -- Pipedream's MCP server doesn't yet support [configuring dynamic props](/connect/components/#configure-dynamic-props), which means LLMs may get confused when trying to configure props that require inputs from previous props -- As an end user, you need to manually add distinct MCP servers for every app you want to interact with, instead of using a single MCP server that contains tools for many APIs - -## Pricing - -- Anyone can use Pipedream's hosted MCP servers for their own use **for free** -- To deploy Pipedream's MCP servers to your own app or agent, you can get started for free in development mode -- [Visit the pricing page](https://pipedream.com/pricing?plan=Connect) when you're ready to ship to production - -## Additional resources - -- [Pipedream hosted MCP servers](https://mcp.pipedream.com) -- [MCP official spec](https://modelcontextprotocol.io/) -- [Pipedream MCP reference implementation](https://github.com/PipedreamHQ/pipedream/tree/master/modelcontextprotocol) -- [MCP inspector tool](https://modelcontextprotocol.io/docs/tools/inspector/) \ No newline at end of file diff --git a/docs-v2/pages/connect/mcp/_meta.tsx b/docs-v2/pages/connect/mcp/_meta.tsx new file mode 100644 index 0000000000000..c754a4ac7a17f --- /dev/null +++ b/docs-v2/pages/connect/mcp/_meta.tsx @@ -0,0 +1,9 @@ +export default { + "index": "Overview", + "developers": "Developers", + "users": "Consumers", + "openai": { + title: "OpenAI", + display: "hidden", + }, +} as const diff --git a/docs-v2/pages/connect/mcp/developers.mdx b/docs-v2/pages/connect/mcp/developers.mdx new file mode 100644 index 0000000000000..11da11123b5b6 --- /dev/null +++ b/docs-v2/pages/connect/mcp/developers.mdx @@ -0,0 +1,74 @@ +import { Steps } from 'nextra/components' + +# Deploy Pipedream MCP to your agent +Deploy Pipedream's MCP servers to your application or agent and make authenticated request on behalf of your customers. Refer to our reference implementation [here](https://github.com/PipedreamHQ/pipedream/blob/master/modelcontextprotocol/README.md). + +## Quickstart + + + +#### Prerequisites + +To run your own MCP server, you'll need: + +1. A [Pipedream account](https://pipedream.com/auth/signup) +2. A [Pipedream project](/projects/#creating-projects). Accounts connected via MCP will be stored here. +3. [Pipedream OAuth credentials](/rest-api/auth/#oauth) + +#### Set up environment variables + +Set the following environment variables: + +```bash +PIPEDREAM_CLIENT_ID=your_client_id +PIPEDREAM_CLIENT_SECRET=your_client_secret +PIPEDREAM_PROJECT_ID=your_project_id +PIPEDREAM_PROJECT_ENVIRONMENT=development +``` + +#### Run the MCP server + +Pipedream's MCP servers can run in two modes: + +##### Stdio (for local testing) + +```bash +npx @pipedream/mcp stdio --app slack --external-user-id user123 +``` + +##### SSE (for hosting) + +```bash +npx @pipedream/mcp sse +``` + +This exposes routes at: +- `GET /:external_user_id/:app` - App-specific SSE connection endpoint +- `POST /:external_user_id/:app/messages` - App-specific message handler + +Where: +- `:external_user_id` is your user's unique identifier in your system +- `:app` is the app slug (e.g., "slack", "github") + +#### Customize for your needs + +You can host and customize the MCP server for your specific requirements: + +```bash +# Clone the repo +git clone https://github.com/PipedreamHQ/pipedream +cd pipedream/modelcontextprotocol + +# Install dependencies +npm install + +# Build +npm run build + +# Run the SSE server +npm run start:sse:prod +``` + +See the [MCP server README](https://github.com/PipedreamHQ/pipedream/blob/master/modelcontextprotocol/README.md) for detailed instructions on customization options. + + \ No newline at end of file diff --git a/docs-v2/pages/connect/mcp/index.mdx b/docs-v2/pages/connect/mcp/index.mdx new file mode 100644 index 0000000000000..825dd60ddedb3 --- /dev/null +++ b/docs-v2/pages/connect/mcp/index.mdx @@ -0,0 +1,73 @@ +import Callout from '@/components/Callout' + +# MCP Servers + +Pipedream offers dedicated MCP ([Model Context Protocol](https://modelcontextprotocol.io/)) servers for all of our {process.env.PUBLIC_APPS}+ integrated apps. These servers enable AI assistants like Claude to securely access and interact with thousands of APIs through a standardized communication protocol, performing real-world tasks using your or your users' accounts. + +{/* ![MCP visualization](https://res.cloudinary.com/pipedreamin/image/upload/v1714074324/pd-mcp-illustration_y76lnt.webp) */} + +Pipedream's MCP servers are powered by [Pipedream Connect](https://pipedream.com/docs/connect) and include: + +- Access to {process.env.PUBLIC_APPS}+ apps and APIs through a consistent interface +- Over 10,000 pre-built tools +- Fully-managed OAuth and secure credential storage + + +User credentials are encrypted at rest and all requests are made through Pipedream's servers, never directly exposing credentials to AI models. Read more about how we protect user credentials [here](/privacy-and-security/#third-party-oauth-grants-api-keys-and-environment-variables). + + +## Available MCP servers + +Pipedream provides MCP servers for all our [supported apps](https://mcp.pipedream.com/). Each app has its own dedicated MCP server with tools specific to that API. For example: + +- **[Slack](https://mcp.pipedream.com/app/slack)**: Send messages, manage channels, create reminders, and more +- **[GitHub](https://mcp.pipedream.com/app/github)**: Create issues, manage pull requests, search repositories +- **[Google Sheets](https://mcp.pipedream.com/app/google-sheets)**: Read and write data, format cells, create charts + +Explore the full list of available MCP servers at [mcp.pipedream.com](https://mcp.pipedream.com). + +## Getting started + +You can use Pipedream's MCP servers in two ways: + +1. **[As an end user](/connect/mcp/users)**: Connect your accounts through our hosted MCP servers at [mcp.pipedream.com](https://mcp.pipedream.com) +2. **[As a developer](/connect/mcp/developers)**: Host your own MCP servers for your application or organization + + +## Security + +Like the rest of Pipedream Connect, MCP servers follow strict security best practices: + +- **Credential isolation**: Each user's credentials are stored securely and isolated from other users +- **No credential exposure**: Credentials are never exposed to AI models or your client-side code +- **Revocable access**: Users can revoke access to their connected accounts at any time + +For more information on security, see our [security documentation](/privacy-and-security/). + +## Use cases + +Pipedream MCP enables AI assistants to perform a wide range of tasks: + +- **Productivity automation**: Schedule meetings, send emails, create documents +- **Data analysis**: Query databases, analyze spreadsheets, generate reports +- **Content creation**: Post social media updates, create marketing materials +- **Customer support**: Respond to inquiries, create tickets, update CRM records +- **Developer workflows**: Create issues, review code, deploy applications + +## Supported tools + +- Each MCP server provides tools specific to that app. Tools are automatically created based on Pipedream's [registry of pre-built actions](https://github.com/PipedreamHQ/pipedream/tree/master/components) +- You can find the supported tools for a given app on its MCP server page or search for specific actions here: [pipedream.com/expore](https://pipedream.com/explore#popular-actions) + +## Pricing + +- Anyone can use Pipedream's hosted MCP servers for their own use **for free** +- To deploy Pipedream's MCP servers to your own app or agent, you can get started for free in development mode +- [Visit the pricing page](https://pipedream.com/pricing?plan=Connect) when you're ready to ship to production + +## Additional resources + +- [Pipedream hosted MCP servers](https://mcp.pipedream.com) +- [MCP official spec](https://modelcontextprotocol.io/) +- [Pipedream MCP reference implementation](https://github.com/PipedreamHQ/pipedream/tree/master/modelcontextprotocol) +- [MCP inspector tool](https://modelcontextprotocol.io/docs/tools/inspector/) \ No newline at end of file diff --git a/docs-v2/pages/connect/mcp/openai.mdx b/docs-v2/pages/connect/mcp/openai.mdx new file mode 100644 index 0000000000000..ddb7b767589cc --- /dev/null +++ b/docs-v2/pages/connect/mcp/openai.mdx @@ -0,0 +1,114 @@ +import { Callout, Tabs } from 'nextra/components' + +# Using Pipedream MCP with OpenAI + +Access {process.env.PUBLIC_APPS}+ APIs and 10,000+ tools in OpenAI using Pipedream MCP with the [OpenAI Responses API](https://platform.openai.com/docs/guides/tools?api-mode=responses). MCP makes it easy to extend the capabilties of your app or agent, and Pipedream offers drop-in support with OpenAI. + + +Pipedream MCP includes built-in user authentication for [every integrated API](https://pipedream.com/apps/), which means you don't need to build any authorization flows or think about token storage or refresh. + + +## Getting Started +To use Pipedream MCP with your own users, you need the following: + +1. A [Pipedream account](https://pipedream.com/auth/signup) +2. A [Pipedream project](/projects/#creating-projects). Accounts connected via MCP will be stored here. +3. [Pipedream OAuth credentials](/rest-api/auth/#oauth) + + +These are requiremnents for you, the developer. Your users do **not** need to sign up for Pipedream in order to connect their accounts in your app or agent. + + +#### Set up environment variables + +Set the following environment variables (learn more about environments in Pipedream Connect [here](/connect/managed-auth/environments/)): + +```bash +PIPEDREAM_CLIENT_ID=your_client_id +PIPEDREAM_CLIENT_SECRET=your_client_secret +PIPEDREAM_PROJECT_ID=your_project_id +PIPEDREAM_PROJECT_ENVIRONMENT=development +``` + +### Examples + +{/* + */} +```javascript +import OpenAI from "openai"; +import { createBackendClient } from "@pipedream/sdk/server"; + +const externalUserId = "abc-123" // Unique ID in your system to identify the user + +// Initialize the Pipedream SDK +const pd = createBackendClient({ + credentials: { + clientId: PIPEDREAM_CLIENT_ID, + clientSecret: PIPEDREAM_CLIENT_SECRET, + }, + environment: PIPEDREAM_ENVIRONMENT, + projectId: PIPEDREAM_PROJECT_ID, +}); + +const { token } = await pd.createConnectToken({ + external_user_id: externalUserId, +}) + +const client = new OpenAI(); + +const response = await client.responses.create({ + model: "gpt-4.1", + tools: [ + { + "type": "mcp", + "server_label": "Notion", + "server_url": `https://mcp.pipedream.net/${externalUserId}/notion`, + "headers": { + "Authorization": `Bearer ${token}` + } + "require_approval": "never" + }, + ], + input: "Summarize my most recently created Notion doc for me and help draft an email to our customers" +}) + +console.log(response); +``` +{/* + +```python +from openai import OpenAI +client = OpenAI() + +response = client.responses.create( + model="gpt-4.1", + tools=[{"type": "web_search_preview"}], + input="What was a positive news story from today?" +) + +print(response.output_text) +``` + + +```bash +curl "https://api.openai.com/v1/responses" \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OPENAI_API_KEY" \ + -d '{ + "model": "gpt-4.1", + "tools": [{"type": "web_search_preview"}], + "input": "what was a positive news story from today?" + }' +``` + + */} + + +## Account Connection + +One of the core features of Pipedream Connect and MCP is the ability for your users to easily connect their accounts without having to build any of the authorization flow or handle token storage, etc. + +You can handle account connections in a couple different ways in your app: + +1. Add the [frontend Pipedream SDK](/connect/managed-auth/quickstart/#use-the-pipedream-sdk-in-your-frontend) to your app, let users connect their account directly in your UI. +2. Return a [Connect Link URL](/connect/managed-auth/quickstart/#or-use-connect-link) to your users from the LLM response. \ No newline at end of file diff --git a/docs-v2/pages/connect/mcp/users.mdx b/docs-v2/pages/connect/mcp/users.mdx new file mode 100644 index 0000000000000..b9405c55f852a --- /dev/null +++ b/docs-v2/pages/connect/mcp/users.mdx @@ -0,0 +1,38 @@ + +import { Steps } from 'nextra/components' + +# Using Pipedream MCP as an end user + +Set up MCP servers to use with any compatible MCP client, like Claude Desktop, Windsurf, Cursor, and VS Code. + + + +#### Configure MCP servers and connect accounts + +- Navigate to [mcp.pipedream.com](https://mcp.pipedream.com) and sign in or create an account (this is a separate account from pipdream.com) +- Browse available MCP servers +- Follow the configuration instructions on the server page to add it to your preferred MCP client +- Connect your account (you can do this in the UI or the AI will prompt you when you first use a tool) + +#### Start chatting + +Ask the LLM or agent to perform tasks using your connected services. For example: + +- "Send a message to my team in Slack" +- "Create a new issue in GitHub" +- "Add data to my Google Sheet" + +The AI will refer to the configured tools available in its MCP servers to complete the task. + +#### Get things done + +With MCP-enabled AI, you can: + +- Send messages and manage communication +- Create and update documents +- Query and analyze data +- Automate workflows across your favorite tools + +All using your own connected accounts with full control and security. + + \ No newline at end of file diff --git a/docs-v2/pages/connect/workflows.mdx b/docs-v2/pages/connect/workflows.mdx index c46e69e2a38de..09acdb19673cb 100644 --- a/docs-v2/pages/connect/workflows.mdx +++ b/docs-v2/pages/connect/workflows.mdx @@ -115,7 +115,7 @@ To invoke workflows, you'll need: 2. Your [Project ID](/projects/#finding-your-projects-id) 3. Your workflow's HTTP endpoint URL 4. The [external user ID](/connect/api/#external-users) of the user you'd like to run the workflow for -5. The [Connect environment](/connect/environments/) tied to the user's account +5. The [Connect environment](/connect/managed-auth/environments/) tied to the user's account Then invoke the workflow like so: @@ -275,7 +275,7 @@ To get started, you'll need: - Your [project ID](/projects/#finding-your-projects-id) - Your workflow's HTTP endpoint URL - The [external user ID](/connect/api/#external-users) of your end user -- The [Connect environment](/connect/environments/) +- The [Connect environment](/connect/managed-auth/environments/) diff --git a/docs-v2/pages/workflows/_meta.tsx b/docs-v2/pages/workflows/_meta.tsx index 8d36d4b84e22d..407826b07ffbc 100644 --- a/docs-v2/pages/workflows/_meta.tsx +++ b/docs-v2/pages/workflows/_meta.tsx @@ -1,5 +1,6 @@ export default { "index": "Overview", + "quickstart": "Quickstart", "building-workflows": "Building Workflows", "data-management": "Data Management", "event-history": "Event History", diff --git a/docs-v2/pages/quickstart.mdx b/docs-v2/pages/workflows/quickstart.mdx similarity index 100% rename from docs-v2/pages/quickstart.mdx rename to docs-v2/pages/workflows/quickstart.mdx diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98ee964905365..b1e20188ec18c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15400,11 +15400,22 @@ importers: specifier: ^6.0.0 version: 6.2.0 + modelcontextprotocol/node_modules2/@modelcontextprotocol/sdk/dist/cjs: {} + + modelcontextprotocol/node_modules2/@modelcontextprotocol/sdk/dist/esm: {} + + modelcontextprotocol/node_modules2/zod-to-json-schema/dist/cjs: {} + + modelcontextprotocol/node_modules2/zod-to-json-schema/dist/esm: {} + packages/ai: dependencies: '@pipedream/sdk': specifier: workspace:^ version: link:../sdk + openai: + specifier: ^4.77.0 + version: 4.97.0(ws@8.18.0)(zod@3.24.4) zod: specifier: ^3.24.4 version: 3.24.4 @@ -15415,9 +15426,6 @@ importers: bun: specifier: ^1.2.13 version: 1.2.13 - openai: - specifier: ^4.77.0 - version: 4.97.0(ws@8.18.0)(zod@3.24.4) tsup: specifier: ^8.3.6 version: 8.3.6(@microsoft/api-extractor@7.47.12(@types/node@22.15.9))(jiti@1.21.6)(postcss@8.4.49)(tsx@4.19.4)(typescript@5.6.3)(yaml@2.6.1)