Pipedream MCP server

Self-hosted stdio or SSE MCP server that runs Pipedream's prebuilt actions for one connected app

Official · sacerdoti TypeScript Local · stdio Developer toolsProductivityCommunication

11 popularity score ↓ 67/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs PIPEDREAM_CLIENT_ID, PIPEDREAM_CLIENT_SECRET, PIPEDREAM_PROJECT_ID. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add pipedream -e PIPEDREAM_CLIENT_ID=<PIPEDREAM_CLIENT_ID> -e PIPEDREAM_CLIENT_SECRET=<PIPEDREAM_CLIENT_SECRET> -e PIPEDREAM_PROJECT_ID=<PIPEDREAM_PROJECT_ID> -- npx -y @pipedream/mcp stdio --app '<APP_SLUG>'
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "pipedream": {
      "command": "npx",
      "args": [
        "-y",
        "@pipedream/mcp",
        "stdio",
        "--app",
        "<APP_SLUG>"
      ],
      "env": {
        "PIPEDREAM_CLIENT_ID": "<PIPEDREAM_CLIENT_ID>",
        "PIPEDREAM_CLIENT_SECRET": "<PIPEDREAM_CLIENT_SECRET>",
        "PIPEDREAM_PROJECT_ID": "<PIPEDREAM_PROJECT_ID>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "pipedream": {
      "command": "npx",
      "args": [
        "-y",
        "@pipedream/mcp",
        "stdio",
        "--app",
        "<APP_SLUG>"
      ],
      "env": {
        "PIPEDREAM_CLIENT_ID": "<PIPEDREAM_CLIENT_ID>",
        "PIPEDREAM_CLIENT_SECRET": "<PIPEDREAM_CLIENT_SECRET>",
        "PIPEDREAM_PROJECT_ID": "<PIPEDREAM_PROJECT_ID>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "pipedream": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@pipedream/mcp",
        "stdio",
        "--app",
        "<APP_SLUG>"
      ],
      "env": {
        "PIPEDREAM_CLIENT_ID": "<PIPEDREAM_CLIENT_ID>",
        "PIPEDREAM_CLIENT_SECRET": "<PIPEDREAM_CLIENT_SECRET>",
        "PIPEDREAM_PROJECT_ID": "<PIPEDREAM_PROJECT_ID>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.pipedream]
command = "npx"
args = ["-y", "@pipedream/mcp", "stdio", "--app", "<APP_SLUG>"]

[mcp_servers.pipedream.env]
PIPEDREAM_CLIENT_ID = "<PIPEDREAM_CLIENT_ID>"
PIPEDREAM_CLIENT_SECRET = "<PIPEDREAM_CLIENT_SECRET>"
PIPEDREAM_PROJECT_ID = "<PIPEDREAM_PROJECT_ID>"
Gemini CLITerminal
gemini mcp add --scope user -e PIPEDREAM_CLIENT_ID=<PIPEDREAM_CLIENT_ID> -e PIPEDREAM_CLIENT_SECRET=<PIPEDREAM_CLIENT_SECRET> -e PIPEDREAM_PROJECT_ID=<PIPEDREAM_PROJECT_ID> pipedream npx -- -y @pipedream/mcp stdio --app '<APP_SLUG>'

Settings 5

PIPEDREAM_CLIENT_ID Required: Client ID of your Pipedream OAuth client.
PIPEDREAM_CLIENT_SECRET Required: Client secret of your Pipedream OAuth client.
PIPEDREAM_PROJECT_ID Required: ID of the Pipedream project where connected accounts are stored.
PIPEDREAM_PROJECT_ENVIRONMENT Optional: Project environment, development (the default) or production.
PIPEDREAM_WEBHOOK_URI Optional: URL that Pipedream notifies when an account connects or fails to connect.

What it does

This is Pipedream's npm package of a self-hosted MCP server. It is not the hosted endpoint at mcp.pipedream.net. It connects to the Pipedream Connect API with your own project's credentials. For the app you choose (a Pipedream app slug such as slack), it registers that app's prebuilt Pipedream actions as MCP tools. A call to one of those tools runs the action through Pipedream, using an account that the user has connected to your Pipedream project.

There are two ways to run it. In stdio mode (`stdio --app <slug>`) it serves one app to a local client. In SSE mode (`sse`) it runs an Express server, on port 3010 unless `--port` is given. That server opens a session for each `/:external_user_id/:app` route, so one process can serve many end users and apps. This mode is meant for embedding MCP into your own product.

The source in the published 0.0.1 package shows how the tools are built. The tool list is fetched from Pipedream when the server starts, and only components of type action are turned into tools, so triggers are not exposed. Each tool is named after the component key. An extra `CONFIGURE_COMPONENT` tool looks up the allowed values for a property. If the user has no healthy connected account for the app, a tool call does not fail. Instead it returns a Pipedream Connect link for the user to open and sign in. In stdio mode the external user ID is a fresh random UUID on every start unless `--external-user-id` is given, so accounts connected in one session are not found in the next (lib/authProvisions.ts, src/cli.ts).

What it needs

RuntimeNode.js

Node.js with npx. You need a Pipedream account and a Pipedream project, plus a Pipedream OAuth client that supplies PIPEDREAM_CLIENT_ID and PIPEDREAM_CLIENT_SECRET, and the project's PIPEDREAM_PROJECT_ID. Stdio mode needs the slug of the app to serve (`--app`). The end user connects that app's account through a Pipedream Connect link the first time a tool is called.

Limits

Each stdio process serves exactly one app, and `--app` is required. The README calls the SSE server a simple reference implementation with no authorization of its own. It tells you to add OAuth before exposing it to the internet. Only Pipedream actions become tools, not triggers. Any action property whose type is not string, string[], number, integer or boolean is skipped. PIPEDREAM_PROJECT_ENVIRONMENT defaults to development (lib/config.ts). The only release is 0.0.1, from March 2025. Its npm entry lists no repository or licence field, and the README states the Pipedream Source Available License.

Who it suits

This suits a developer who already uses Pipedream Connect and wants to run their own MCP server: locally over stdio to try one app's actions, or as an SSE service inside their own product, where each customer is an external user ID. It is a poor fit if you want to connect a personal assistant to many apps without setting up a Pipedream project and OAuth client. For that, Pipedream's hosted server, held on this site as pipedream, needs no local process or credentials of your own. Also note that this package has not been updated since 0.0.1.

Tools 1

CONFIGURE_COMPONENT
Fetches the allowed options for a property of a Pipedream action, such as a channel or record ID

Similar servers