Skip to content
Open
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2,493 changes: 2,493 additions & 0 deletions .speakeasy/gen.lock

Large diffs are not rendered by default.

53 changes: 53 additions & 0 deletions .speakeasy/gen.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
configVersion: 2.0.0
generation:
sdkClassName: SDK
maintainOpenAPIOrder: true
usageSnippets:
optionalPropertyRendering: withExample
sdkInitStyle: constructor
useClassNamesForArrayFields: true
fixes:
nameResolutionDec2023: true
nameResolutionFeb2025: true
parameterOrderingFeb2024: true
requestResponseComponentNamesFeb2024: true
securityFeb2025: true
sharedErrorComponentsApr2025: true
sharedNestedComponentsJan2026: true
nameOverrideFeb2026: true
auth:
oAuth2ClientCredentialsEnabled: true
oAuth2PasswordEnabled: true
hoistGlobalSecurity: true
inferSSEOverload: true
sdkHooksConfigAccess: true
schemas:
allOfMergeStrategy: shallowMerge
requestBodyFieldName: body
versioningStrategy: automatic
persistentEdits: {}
tests:
generateTests: false
generateNewTests: true
skipResponseBodyAssertions: false
mcp-typescript:
version: 0.0.1
additionalDependencies:
dependencies: {}
devDependencies: {}
peerDependencies: {}
advancedFlags: []
author: Speakeasy
baseErrorName: SDKError
cloudflareEnabled: false
defaultErrorName: SDKDefaultError
formStringArrayEncodeMode: array
gramEnabled: false
inferUnionDiscriminators: true
inputModelSuffix: input
maxMethodParams: 0
multipartArrayFormat: standard
outputModelSuffix: output
packageName: mcp
responseFormat: flat
validateResponse: false
226 changes: 226 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -783,3 +783,229 @@ Then connect to `PIPESHUB_INSTANCE_URL/mcp` with a Bearer token to test the endp

</details>


<!-- Start Summary [summary] -->
## Summary

PipesHub API: Unified API documentation for PipesHub services.

PipesHub is an enterprise-grade platform providing:
- User authentication and management
- Document storage and version control
- Knowledge base management
- Enterprise search and conversational AI
- Third-party integrations via connectors
- System configuration management
- Crawling job scheduling
- Email services

## Authentication
Most endpoints require JWT Bearer token authentication. Some internal endpoints use scoped tokens for service-to-service communication.

**OAuth 2.0 Bearer tokens** from `POST /oauth2/token` use the same `Authorization: Bearer` header. For **`client_credentials`**, machine tokens may encode `userId === client_id` in the JWT; the **Node API gateway** resolves the OAuth **app creator**, sets the authenticated user accordingly, and forwards **`x-oauth-user-id`** to Python services on proxied calls. Do not send **`x-oauth-user-id`** yourself—the gateway removes untrusted values on ingress. See the **OAuth Provider** tag for full behavior.

## Base URLs
All endpoints use the `/api/v1` prefix unless otherwise noted.
<!-- End Summary [summary] -->

<!-- Start Table of Contents [toc] -->
## Table of Contents
<!-- $toc-max-depth=2 -->
* [Connecting MCP Clients to PipesHub MCP Server](#connecting-mcp-clients-to-pipeshub-mcp-server)
* [Prerequisites](#prerequisites)
* [Step 1: Create an OAuth App in PipesHub](#step-1-create-an-oauth-app-in-pipeshub)
* [Placeholders](#placeholders)
* [Remote MCP Setup](#remote-mcp-setup)
* [List servers and their auth status](#list-servers-and-their-auth-status)
* [Authenticate with PipesHub (opens browser for login)](#authenticate-with-pipeshub-opens-browser-for-login)
* [Re-authenticate if tokens expire](#re-authenticate-if-tokens-expire)
* [List all configured servers](#list-all-configured-servers)
* [Remove the server](#remove-the-server)
* [Temporarily disable/enable](#temporarily-disableenable)

<!-- End Table of Contents [toc] -->

<!-- Start Installation [installation] -->
## Installation

<details>
<summary>Claude Desktop</summary>

Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](./mcp-server.mcpb) file:

Simply drag and drop the [`mcp-server.mcpb`](./mcp-server.mcpb) file onto Claude Desktop to install the extension.

The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.

> [!NOTE]
> MCP bundles provide a streamlined way to package and distribute MCP servers. Learn more about [Desktop Extensions](https://www.anthropic.com/engineering/desktop-extensions).

</details>

<details>
<summary>Cursor</summary>

[![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=SDK&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJtY3AiLCJzdGFydCIsIi0tc2VydmVyLWluZGV4IiwiMCIsIi0taW5zdGFuY2UtdXJsIiwiaHR0cHM6Ly9hcHAucGlwZXNodWIuY29tIiwiLS1iZWFyZXItYXV0aCIsIiIsIi0tY2xpZW50LWlkIiwiIiwiLS1jbGllbnQtc2VjcmV0IiwiIiwiLS10b2tlbi11cmwiLCIvYXBpL3YxL29hdXRoMi90b2tlbiJdfQ==)

Or manually:

1. Open Cursor Settings
2. Select Tools and Integrations
3. Select New MCP Server
4. If the configuration file is empty paste the following JSON into the MCP Server Configuration:

```json
{
"command": "npx",
"args": [
"mcp",
"start",
"--server-index",
"0",
"--instance-url",
"https://app.pipeshub.com",
"--bearer-auth",
"",
"--client-id",
"",
"--client-secret",
"",
"--token-url",
"/api/v1/oauth2/token"
]
}
```

</details>

<details>
<summary>Claude Code CLI</summary>

```bash
claude mcp add SDK -- npx -y mcp start --server-index 0 --instance-url https://app.pipeshub.com --bearer-auth --client-id --client-secret --token-url /api/v1/oauth2/token
```

</details>
<details>
<summary>Gemini</summary>

```bash
gemini mcp add SDK -- npx -y mcp start --server-index 0 --instance-url https://app.pipeshub.com --bearer-auth --client-id --client-secret --token-url /api/v1/oauth2/token
```

</details>
<details>
<summary>Windsurf</summary>

Refer to [Official Windsurf documentation](https://docs.windsurf.com/windsurf/cascade/mcp#adding-a-new-mcp-plugin) for latest information

1. Open Windsurf Settings
2. Select Cascade on left side menu
3. Click on `Manage MCPs`. (To Manage MCPs you should be signed in with a Windsurf Account)
4. Click on `View raw config` to open up the mcp configuration file.
5. If the configuration file is empty paste the full json

```bash
{
"command": "npx",
"args": [
"mcp",
"start",
"--server-index",
"0",
"--instance-url",
"https://app.pipeshub.com",
"--bearer-auth",
"",
"--client-id",
"",
"--client-secret",
"",
"--token-url",
"/api/v1/oauth2/token"
]
}
```
</details>
<details>
<summary>VS Code</summary>

[![Install in VS Code](https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20SDK%20MCP&color=0098FF)](vscode://ms-vscode.vscode-mcp/install?name=SDK&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJtY3AiLCJzdGFydCIsIi0tc2VydmVyLWluZGV4IiwiMCIsIi0taW5zdGFuY2UtdXJsIiwiaHR0cHM6Ly9hcHAucGlwZXNodWIuY29tIiwiLS1iZWFyZXItYXV0aCIsIiIsIi0tY2xpZW50LWlkIiwiIiwiLS1jbGllbnQtc2VjcmV0IiwiIiwiLS10b2tlbi11cmwiLCIvYXBpL3YxL29hdXRoMi90b2tlbiJdfQ==)

Or manually:

Refer to [Official VS Code documentation](https://code.visualstudio.com/api/extension-guides/ai/mcp) for latest information

1. Open [Command Palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette)
1. Search and open `MCP: Open User Configuration`. This should open mcp.json file
2. If the configuration file is empty paste the full json
Comment on lines +940 to +941

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The numbering for these steps is incorrect. It should be sequential (1, 2, 3...). Please correct the numbering.

Suggested change
1. Search and open `MCP: Open User Configuration`. This should open mcp.json file
2. If the configuration file is empty paste the full json
2. Search and open `MCP: Open User Configuration`. This should open mcp.json file
3. If the configuration file is empty paste the full json


```bash
{
"command": "npx",
"args": [
"mcp",
"start",
"--server-index",
"0",
"--instance-url",
"https://app.pipeshub.com",
"--bearer-auth",
"",
"--client-id",
"",
"--client-secret",
"",
"--token-url",
"/api/v1/oauth2/token"
]
}
```

</details>
<details>
<summary> Stdio installation via npm </summary>
To start the MCP server, run:

```bash
npx mcp start --server-index 0 --instance-url https://app.pipeshub.com --bearer-auth --client-id --client-secret --token-url /api/v1/oauth2/token
```

For a full list of server arguments, run:

```
npx mcp --help
```

</details>
<!-- End Installation [installation] -->

<!-- Start Progressive Discovery [dynamic-mode] -->
## Progressive Discovery

MCP servers with many tools can bloat LLM context windows, leading to increased token usage and tool confusion. Dynamic mode solves this by exposing only a small set of meta-tools that let agents progressively discover and invoke tools on demand.

To enable dynamic mode, pass the `--mode dynamic` flag when starting your server:

```jsonc
{
"mcpServers": {
"SDK": {
"command": "npx",
"args": ["mcp", "start", "--mode", "dynamic"],
// ... other server arguments
}
}
}
```

In dynamic mode, the server registers only the following meta-tools instead of every individual tool:

- **`list_tools`**: Lists all available tools with their names and descriptions.
- **`describe_tool`**: Returns the input schema for one or more tools by name.
- **`execute_tool`**: Executes a tool by name with the provided input parameters.

This approach significantly reduces the number of tokens sent to the LLM on each request, which is especially useful for servers with a large number of tools.
<!-- End Progressive Discovery [dynamic-mode] -->

<!-- Placeholder for Future Speakeasy SDK Sections -->
Loading
Loading