Docs

MCP server

Training Pipes ships an MCP server so AI-native editors like Cursor can manage your projects, buckets, and file systems directly. Once installed, you can ask the agent to provision a bucket, list objects, stop a file system, or pull a usage report without leaving your editor.

The endpoint is https://api.trainingpipes.com/v1/mcp and speaks Streamable HTTP with JSON-RPC. Authentication is OAuth 2.1 — you sign in through the browser and the editor stores the token, so there is no API key to create, paste, or rotate (see Authentication).

Install the Cursor plugin (recommended)

The Training Pipes plugin bundles the MCP server with five skills that teach the agent when and how to use it. Install it from the Cursor chat:

/plugin marketplace add training-pipes/training-pipes-plugin
/plugin install training-pipes

The first tool call opens a browser window to sign in. Approve the request and the agent is connected — no key handling anywhere in the flow. The same two commands work in Claude Code.

The skills that ship with the plugin:

  • connecting-training-pipes — wiring the MCP server into a project or agent
  • choosing-ml-training-storage — deciding where training data should live
  • mounting-object-storage-for-training — putting a file system over a bucket
  • diagnosing-dataloader-io-bottlenecks — when a job is slow on I/O rather than compute
  • reducing-cross-region-egress-costs — when data-transfer charges are unexpectedly high

Install manually

To register just the MCP server without the skills, add it to ~/.cursor/mcp.json directly:

{
  "mcpServers": {
    "training-pipes": {
      "url": "https://api.trainingpipes.com/v1/mcp"
    }
  }
}

No headers block is needed. The client discovers the authorization server from the endpoint and runs the OAuth flow on the first call. Restart or reload Cursor to pick up the new server.

What you can do

The server exposes 15 tools and 6 resources. Tools take action; resources return live data you can @-reference inline.

Tools

Read-only tools are safe to call without confirmation. Tools marked destructive provision or delete real cloud resources — Cursor will prompt for confirmation before invoking them.

ToolTypePurpose
list_projectsReadList projects you can access
get_projectReadFetch a single project
create_projectDestructiveCreate a new project
delete_projectDestructiveDelete an empty project
list_bucketsReadList buckets in a project
get_bucketReadFetch a single bucket
create_bucketDestructiveProvision a managed Wasabi bucket
delete_bucketDestructiveTear down a bucket and its IAM user. All stored objects are lost.
list_bucket_objectsReadList one page of S3 objects under a prefix
list_mountsReadList file systems in a project
get_mountReadFetch a single file system
create_mountDestructiveSpin up a regional file system (NFS / agent)
update_mountDestructiveSet desired status (running / stopped)
delete_mountDestructiveStop the gateway and remove the file system record
get_usageReadStorage and file-system-hours over a window

Resources

Resources let editors pull live state into context. In Cursor, type @ in chat and search for one of these URIs:

URIReturns
tp://projectsAll projects you can access
tp://projects/{project_id}One project
tp://projects/{project_id}/bucketsBuckets in a project
tp://projects/{project_id}/mountsFile systems in a project
tp://buckets/{bucket_id}One bucket including S3 endpoint and access key
tp://mounts/{mount_id}One file system including export endpoints

Authentication

Editors authenticate over OAuth 2.1 with PKCE. The endpoint publishes protected-resource metadata pointing at our authorization server, and a 401 carries a WWW-Authenticate header so clients can discover it unprompted. Dynamic client registration is supported, so no pre-registration is required. Tokens are short-lived and refreshed automatically, so nothing long-lived is stored in your editor config.

API keys (tp_…) remain supported as a fallback for headless environments and clients that can't run a browser flow — CI, scripts, remote shells. Create one from Settings → API Keys and send it as Authorization: Bearer tp_…. Prefer OAuth wherever a browser is available.

Either way, credentials are scoped to a single user. Tools that act on a project or bucket id will only succeed if you're a member of that project.

Safety and confirmations

Every tool that creates, updates, or deletes resources carries a destructiveHint annotation. Cursor reads these annotations and will surface a confirmation prompt before invoking the tool. We recommend leaving auto-run disabled for the destructive set.

If a tool fails (for example, deleting a project that still contains buckets), it returns a structured error and makes no partial changes.

Other clients

Any client that speaks Streamable HTTP MCP works. Claude Code, Claude Desktop, Continue, and Zed all support remote MCP servers — point them at https://api.trainingpipes.com/v1/mcp. Clients that implement OAuth discovery will prompt for sign-in on the first call; those that don't can send an API key as a bearer token instead.

Troubleshooting

  • 401 Unauthorized— the OAuth grant was revoked or the refresh token expired. Toggle the server off and on to trigger a fresh sign-in. If you're using an API key instead, confirm it hasn't been revoked.
  • No browser window opens— the client doesn't implement OAuth discovery, or it's running headless. Fall back to an API key in the headers block.
  • Tools missing in Cursor — toggle the server off and on under Settings → Features → Model Context Protocol to reload.