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-pipesThe 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 agentchoosing-ml-training-storage— deciding where training data should livemounting-object-storage-for-training— putting a file system over a bucketdiagnosing-dataloader-io-bottlenecks— when a job is slow on I/O rather than computereducing-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.
| Tool | Type | Purpose |
|---|---|---|
list_projects | Read | List projects you can access |
get_project | Read | Fetch a single project |
create_project | Destructive | Create a new project |
delete_project | Destructive | Delete an empty project |
list_buckets | Read | List buckets in a project |
get_bucket | Read | Fetch a single bucket |
create_bucket | Destructive | Provision a managed Wasabi bucket |
delete_bucket | Destructive | Tear down a bucket and its IAM user. All stored objects are lost. |
list_bucket_objects | Read | List one page of S3 objects under a prefix |
list_mounts | Read | List file systems in a project |
get_mount | Read | Fetch a single file system |
create_mount | Destructive | Spin up a regional file system (NFS / agent) |
update_mount | Destructive | Set desired status (running / stopped) |
delete_mount | Destructive | Stop the gateway and remove the file system record |
get_usage | Read | Storage 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:
| URI | Returns |
|---|---|
tp://projects | All projects you can access |
tp://projects/{project_id} | One project |
tp://projects/{project_id}/buckets | Buckets in a project |
tp://projects/{project_id}/mounts | File 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
headersblock. - Tools missing in Cursor — toggle the server off and on under Settings → Features → Model Context Protocol to reload.