PluginBench
MCP Server
Maintained
MIT

io.github.colapsis/transfa MCP Server

io.github.colapsis/transfa

Dead-simple file sharing for developers and AI agents. Upload with one command, get a signed link. No account required.

What is the io.github.colapsis/transfa MCP server?

The transfa MCP server is a file-sharing tool designed for Claude, Cursor, and other MCP-compatible AI agents to upload files and generate shareable links autonomously. It provides SHA-256 verification, TTL enforcement, password protection, and download limits—all without requiring an account. The server integrates seamlessly into agent workflows for passing files between tools and sharing outputs.

transfa is a lightweight file-sharing service built for terminal workflows, CI pipelines, and AI agents. It lets you upload any file (up to 100 GB on paid plans), get an instant shareable link, and control access with passwords, expiration times, and download limits. The MCP server integration means Claude and Cursor can upload and manage files directly without shell commands or manual setup.

How to install io.github.colapsis/transfa

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • TRANSFA_API_KEY
    secret

    Your Transfa API key. Free at transfa.sh — leave empty for guest mode (10 MB limit).

  • TRANSFA_BASE_URL

    Custom Transfa instance URL for self-hosted deployments. Defaults to https://transfa.sh

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "transfa": {
      "command": "npx",
      "args": [
        "-y",
        "transfa-mcp"
      ],
      "env": {
        "TRANSFA_API_KEY": "<YOUR_TRANSFA_API_KEY>",
        "TRANSFA_BASE_URL": "<YOUR_TRANSFA_BASE_URL>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • upload — Upload a file from the local filesystem. Returns agent_link (direct URL), human_link (share page), and SHA-256 hash. Accepts run_id, step, consumer, and intent for provenance tracking.
  • file_info — Get metadata about an upload including filename, size, SHA-256, expiry time, download count, and provenance fields.
  • list_uploads — List recent uploads (requires API key).
  • delete_upload — Delete an upload immediately.
  • run_artifacts — Get all files uploaded under a run_id—the full provenance manifest for a pipeline run or agent session.

Use cases

  • Upload ML models, datasets, or build artifacts and share them via link without account signup
  • Generate reports or analysis outputs in Claude and instantly get a shareable link to paste in conversations
  • Pass files between AI agents or tools by sharing agent_link URLs with SHA-256 verification
  • Protect sensitive uploads with passwords and set automatic expiration times (1 hour to 180 days)
  • Track file provenance across agent runs with run_id and artifact metadata for audit trails

io.github.colapsis/transfa MCP server FAQ

What is the transfa MCP server?

It's an MCP integration that lets Claude, Cursor, and other AI agents upload files and generate shareable links directly. No account required for guest uploads (10 MB / 24h limit); optional API key unlocks higher limits and storage.

Is transfa free?

Yes. Guest mode is free (5 uploads/day, 10 MB max, 24h TTL). Free tier ($0, requires signup) offers 20 uploads/day and 500 MB files. Pro ($12/mo) and Team ($48/mo) plans unlock larger files and longer TTLs.

How do I install it in Claude Desktop or Cursor?

Run `npx -y transfa-mcp` to start the server, then add it to your MCP config (e.g., `~/Library/Application Support/Claude/claude_desktop_config.json`). Optionally set TRANSFA_API_KEY environment variable for higher limits.

Do I need authentication?

No. Guest uploads work without any key. Optional API key (free or paid account) increases file size limits, upload quota, and TTL. Set via TRANSFA_API_KEY environment variable.

What formats does transfa support?

Over 100 file types with auto-detected MIME types, including ML models (.gguf, .safetensors, .pt), data science (.parquet, .ipynb), archives (.zip, .tar.gz), 3D (.glb, .obj), and media (.webp, .opus, .webm). Any other format accepted as application/octet-stream.

Can I self-host transfa?

Yes. Clone the repository, configure environment variables (PORT, BASE_URL, Stripe keys), and run with Node.js 18+ and nginx. See the README for full self-hosting instructions.

README (reference)

Source of truth, from the repository.

<p align="center"> <a href="https://transfa.sh"><img src="https://transfa.sh/brand/logo-wordmark.png" height="52" alt="transfa" /></a> </p> <p align="center"> <strong>Dead-simple file sharing for developers and AI agents.</strong><br/> Upload with one command. Share with a link. No account required. </p> <p align="center"> <a href="https://www.npmjs.com/package/transfa"><img src="https://img.shields.io/npm/v/transfa?color=0ea5e9&label=npm" alt="npm version" /></a> <a href="https://www.npmjs.com/package/transfa"><img src="https://img.shields.io/npm/dm/transfa?color=8b5cf6&label=downloads" alt="npm downloads" /></a> <img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="node version" /> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License" /></a> <a href="https://transfa.sh"><img src="https://img.shields.io/badge/hosted-transfa.sh-ff6b6b" alt="Hosted service" /></a> </p>
$ tf upload model.gguf
✓ Uploaded  model.gguf  (4.2 GB)  →  https://transfa.sh/f/xK9mRp
  SHA-256    a3f8c2...d91b
  Expires    in 7 days

Why transfa?

Most file-sharing tools are built for humans clicking through UIs. transfa is built for the terminal — designed to be called from shell scripts, CI pipelines, and AI agents (Claude, GPT, Cursor, etc.) that need to move files without friction.

  • No signup required — just install and upload
  • Any format, any size — up to 100 GB; ML models, archives, binaries, code, media
  • Built for agents — JSON API, SHA-256 checksums, idempotent uploads
  • Password protection, download limits, TTL — full control over every link
  • 100+ formats detected — MIME type auto-detection including .gguf, .safetensors, .parquet, .ipynb, and more

Install

Node.js / CLI

npm install -g transfa

Python SDK

pip install transfa

MCP server (Claude, Cursor, any MCP-compatible agent)

npx -y transfa-mcp

Or use the raw install script:

curl -fsSL https://transfa.sh/install | sh

Quick start

# Upload a file (no account needed)
tf upload photo.jpg

# Upload with custom TTL and password
tf upload secret.zip --ttl 24h --password hunter2

# Upload and pipe the URL to clipboard
tf upload bundle.tar.gz | grep url | awk '{print $2}' | pbcopy

# Download a file
tf download https://transfa.sh/f/xK9mRp

# List your uploads
tf list

# Delete an upload
tf delete xK9mRp

GitHub Actions

Upload build artifacts, coverage reports, and any CI output straight from your workflow:

- uses: colapsis/transfa-action@v1
  id: upload
  with:
    file: ./dist/report.pdf
    api-key: ${{ secrets.TRANSFA_API_KEY }}

- run: echo "${{ steps.upload.outputs.agent-link }}" >> $GITHUB_STEP_SUMMARY

All five outputs are available after the step: id, agent-link, human-link, sha256, expires-at.

See colapsis/transfa-action for the full input reference and more examples (password-protected links, self-hosted instances, single-download limits).


API

transfa is fully REST. Every operation the CLI does, you can do with curl or any HTTP client.

Upload

curl -X POST https://transfa.sh/api/upload \
  -H "Authorization: Bearer $TF_KEY" \
  -F "file=@model.gguf" \
  -F "ttl=7d"
{
  "id": "xK9mRp",
  "url": "https://transfa.sh/f/xK9mRp",
  "download_url": "https://transfa.sh/api/download/xK9mRp",
  "filename": "model.gguf",
  "bytes": 4512345678,
  "sha256": "a3f8c2...d91b",
  "expires_at": "2026-05-21T12:00:00.000Z"
}

Upload options (form fields or headers):

FieldHeaderDescription
ttlX-Transfa-TTLExpiry: 1h, 24h, 7d, 30d
password—Password-protect the download link
max_downloads—Burn after N downloads
filenameX-Transfa-FilenameOverride the stored filename

Download

# Direct download (no auth required)
curl -L https://transfa.sh/api/download/xK9mRp -o model.gguf

# Password-protected
curl -L "https://transfa.sh/api/download/xK9mRp?password=hunter2" -o secret.zip

File info

curl https://transfa.sh/api/download/info/xK9mRp
{
  "id": "xK9mRp",
  "filename": "model.gguf",
  "bytes": 4512345678,
  "sha256": "a3f8c2...d91b",
  "mime_type": "application/octet-stream",
  "download_count": 3,
  "has_password": false,
  "expires_at": "2026-05-21T12:00:00.000Z",
  "active": true
}

List uploads

curl https://transfa.sh/api/upload \
  -H "Authorization: Bearer $TF_KEY"

Delete

curl -X DELETE https://transfa.sh/api/upload/xK9mRp \
  -H "Authorization: Bearer $TF_KEY"

Supported formats

Over 100 file types with correct MIME detection — including types not in standard MIME databases:

CategoryFormats
ML models.gguf .ggml .safetensors .onnx .pt .pth .pkl .ckpt .tflite .mlmodel .lora
Data science.parquet .arrow .feather .h5 .hdf5 .npz .npy .lance .duckdb .ipynb
Code.py .rs .go .ts .kt .swift .scala .cu .sol .vy .elm .zig
Archives.zip .tar .gz .bz2 .xz .7z .zst
3D / Design.glb .gltf .obj .stl .usdz .blend .fig .sketch .psd
Media.avif .webp .heic .jxl .opus .flac .webm .av1
Config.toml .hcl .tf .tfvars .nix .dhall .lock .env
Everything else.wasm .sqlite .db .pem .crt .p12 + all standard types

Any other format is accepted as application/octet-stream — nothing is blocked.


Plans

GuestFreeProTeam
Max file size10 MB500 MB50 GB100 GB
Uploads / day5205005,000
Max TTL24h48h30 days180 days
Storage——UnlimitedUnlimited
PriceFreeFree$12/mo$48/mo
Trial——3-day free trial3-day free trial

→ See full pricing


MCP server (Claude, Cursor, and any MCP-compatible agent)

transfa ships an MCP server that lets Claude, Cursor, and any MCP-compatible agent upload and share files autonomously — no shell commands, no infrastructure setup.

npx -y transfa-mcp

Claude Desktop config

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "transfa": {
      "command": "npx",
      "args": ["-y", "transfa-mcp"],
      "env": {
        "TRANSFA_API_KEY": "your-api-key"
      }
    }
  }
}

The API key is optional — the server works in guest mode without one (10 MB / 24h limit).

Available MCP tools

ToolDescription
uploadUpload a file from the local filesystem. Returns agent_link (direct URL), human_link (share page), and sha256. Accepts run_id, step, consumer, intent for provenance.
file_infoGet metadata about an upload — filename, size, SHA-256, expiry, download count, provenance fields.
list_uploadsList recent uploads (requires API key).
delete_uploadDelete an upload immediately.
run_artifactsGet all files uploaded under a run_id — the full provenance manifest for a pipeline run or agent session.

Example agent workflow

When Claude has transfa as an MCP tool, it can:

  1. Generate a report → call upload → get a link → paste the link in the conversation
  2. Pass a file to another agent by sharing the agent_link
  3. Clean up with delete_upload when done

Python SDK

import transfa

# Upload
result = transfa.upload("model.pt", ttl="24h", run_id="run-42", artifact=True)
print(result.url, result.sha256)

# Download (SHA-256 verified)
transfa.download(result.id, output="model.pt")

# Provenance manifest for a run
manifest = transfa.run_artifacts("run-42")

# Async
async with transfa.AsyncClient() as client:
    result = await client.upload("model.pt")

See python/README.md for the full API reference.


Use with AI agents (script/subprocess)

transfa is also designed to be called from shell scripts, CI pipelines, and agents that prefer subprocess calls:

import subprocess, json

result = subprocess.run(
    ["tf", "upload", "output.csv"],
    capture_output=True, text=True
)
data = json.loads(result.stdout)
print(data["url"])  # https://transfa.sh/f/xK9mRp

Or use the REST API directly — no SDKs, no auth flows, just HTTP.


Self-hosting

git clone https://github.com/colapsis/transfa.git
cd transfa
cp .env.example .env          # fill in your keys
npm install --prefix server
npm install --prefix cli
npm run build --prefix frontend
pm2 start ecosystem.config.cjs

Requirements: Node.js 18+, nginx (for SSL/proxy)

See nginx/transfa.conf for a production-ready nginx config.

Environment variables

VariableDescription
PORTServer port (default: 3001)
BASE_URLPublic URL e.g. https://transfa.sh
STRIPE_SECRET_KEYStripe secret key for billing
STRIPE_WEBHOOK_SECRETStripe webhook signing secret
STRIPE_PRO_PRICE_IDStripe price ID for Pro plan
STRIPE_TEAM_PRICE_IDStripe price ID for Team plan

Security

Found a vulnerability? Please email tansfa.sh@gmail.com or see SECURITY.md.

Do not open a public issue for security reports.


License

MIT — © 2026 transfa contributors

Related MCP servers

CI-1T prediction stability engine. Detect ghosts, evaluate drift, monitor fleets. 20 tools.

View repository →

Submit an article to The AI Journal, a daily journal written entirely by AI systems.

0
HTML
View repository →

Search jobs from 4,400+ company career pages directly—no duplicates, fresh postings within hours.

63
Python
MIT
View repository →

Scale HR evaluation SaaS for Japanese SMBs. Manage users, evaluation sheets, periods and 1on1s.

Clean TypeScript starter for MCP servers: zod-validated tools, tests, one-command dev loop.

0
TypeScript
MIT
View repository →

Mining claim search and professional mineral exploration maps from public registries.

1
JavaScript
View repository →