transfa MCP server
✓ VerifiedAllows AI agents to autonomously upload, share, and manage files via signed links with SHA-256 verification and TTL enforcement.
Also known as colapsis/transfa, transfa-mcp
- Stars
- 21
- Tools
- 5
- Downloads, 30 days
- —
- Latest version
- 1.0.1
- Last commit
- May 15, 2026
- License
- MIT
What is transfa MCP?
transfa allows AI agents to autonomously upload, share, and manage files via signed links with SHA-256 verification and TTL enforcement. It exposes 5 tools, such as upload, file_info, list_uploads.
Summary generated from the project's README
About transfa MCP server
transfa provides a specialized file-sharing solution designed specifically for terminal environments, shell scripts, and AI agents. It allows users to upload files of any format, including large machine learning models like .gguf or .safetensors, with support for sizes up to 100 GB. The service is built to work without requiring an account, though an API key can be used for advanced features and higher limits.
Developers can integrate this server into MCP-compatible clients like Claude or Cursor using the transfa-mcp package. The server provides specific tools such as upload, file_info, list_uploads, delete_upload, and run_artifacts. These tools enable agents to autonomously manage files, verify integrity via SHA-256 checksums, and enforce security through password protection, download limits, and time-to-live settings. It is an ideal choice for moving build artifacts, code, or data science files through automated pipelines.
What you can do with it
- 1Autonomous file sharing by agentsAn AI agent can upload a generated report and provide a direct link to the user in a chat.
- 2Automated CI/CD artifact managementDevelopers can use the service to upload build artifacts and coverage reports directly from GitHub Actions workflows.
- 3Secure file distributionYou can protect sensitive files by adding a password and setting a specific expiration time.
Written from the project's README. Every use case is checked against a quote from it.
How to install transfa MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall transfa MCP in Claude Code
$ claude mcp add --env 'TRANSFA_API_KEY=<YOUR_TRANSFA_API_KEY>' transfa -- npx -y transfa-mcpInstall transfa MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"transfa": {
"command": "npx",
"args": [
"-y",
"transfa-mcp"
],
"env": {
"TRANSFA_API_KEY": "<YOUR_TRANSFA_API_KEY>"
}
}
}
}Install transfa MCP in VS Code
.vscode/mcp.json
{
"servers": {
"transfa": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"transfa-mcp"
],
"env": {
"TRANSFA_API_KEY": "<YOUR_TRANSFA_API_KEY>"
}
}
}
}Install transfa MCP in VS Code CLI
$ code --add-mcp '{"name":"transfa","type":"stdio","command":"npx","args":["-y","transfa-mcp"],"env":{"TRANSFA_API_KEY":"<YOUR_TRANSFA_API_KEY>"}}'Install transfa MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"transfa": {
"command": "npx",
"args": [
"-y",
"transfa-mcp"
],
"env": {
"TRANSFA_API_KEY": "<YOUR_TRANSFA_API_KEY>"
}
}
}
}Install transfa MCP in Codex
$ codex mcp add transfa --env 'TRANSFA_API_KEY=<YOUR_TRANSFA_API_KEY>' -- npx -y transfa-mcpInstall transfa MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.transfa] command = "npx" args = ["-y", "transfa-mcp"] [mcp_servers.transfa.env] TRANSFA_API_KEY = "<YOUR_TRANSFA_API_KEY>"
Install transfa MCP in Gemini CLI
$ gemini mcp add -s user -e 'TRANSFA_API_KEY=<YOUR_TRANSFA_API_KEY>' transfa npx -- -y transfa-mcpInstall transfa MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"transfa": {
"command": "npx",
"args": [
"-y",
"transfa-mcp"
],
"env": {
"TRANSFA_API_KEY": "<YOUR_TRANSFA_API_KEY>"
}
}
}
}transfa MCP tools 5
Detected from the READMEuploadfile_infolist_uploadsdelete_uploadrun_artifacts
| upload | — | |
| file_info | — | |
| list_uploads | — | |
| delete_upload | — | |
| run_artifacts | — |
Configuration
TRANSFA_API_KEYSecretYour Transfa API key. Free at transfa.sh — leave empty for guest mode (10 MB limit).
TRANSFA_BASE_URLCustom Transfa instance URL for self-hosted deployments. Defaults to https://transfa.sh
| Name | Description | |
|---|---|---|
| TRANSFA_API_KEY | Your Transfa API key. Free at transfa.sh — leave empty for guest mode (10 MB limit). | Secret |
| TRANSFA_BASE_URL | Custom Transfa instance URL for self-hosted deployments. Defaults to https://transfa.sh |
Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablecolapsis/transfa is public and reachablegithub.com/colapsis/transfa ↗Pass
- Package names this repository as its sourcetransfa-mcp names colapsis/transfa as sourcenpmjs.com/package/transfa-mcp ↗Pass
- Build provenance (Sigstore attestation)No build attestation published for this releaseNot checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-05-15github.com/colapsis/transfa ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from transfa-mcpPass
- No critical advisory in the package or its dependencies99 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model5 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHub$ 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):
| Field | Header | Description |
|---|---|---|
ttl |
X-Transfa-TTL |
Expiry: 1h, 24h, 7d, 30d |
password |
— | Password-protect the download link |
max_downloads |
— | Burn after N downloads |
filename |
X-Transfa-Filename |
Override 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:
| Category | Formats |
|---|---|
| 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
| Guest | Free | Pro | Team | |
|---|---|---|---|---|
| Max file size | 10 MB | 500 MB | 50 GB | 100 GB |
| Uploads / day | 5 | 20 | 500 | 5,000 |
| Max TTL | 24h | 48h | 30 days | 180 days |
| Storage | — | — | Unlimited | Unlimited |
| Price | Free | Free | $12/mo | $48/mo |
| Trial | — | — | 3-day free trial | 3-day free trial |
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
| Tool | Description |
|---|---|
upload |
Upload 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_info |
Get metadata about an upload — filename, size, SHA-256, expiry, download count, 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. |
Example agent workflow
When Claude has transfa as an MCP tool, it can:
- Generate a report → call
upload→ get a link → paste the link in the conversation - Pass a file to another agent by sharing the
agent_link - Clean up with
delete_uploadwhen 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
| Variable | Description |
|---|---|
PORT |
Server port (default: 3001) |
BASE_URL |
Public URL e.g. https://transfa.sh |
STRIPE_SECRET_KEY |
Stripe secret key for billing |
STRIPE_WEBHOOK_SECRET |
Stripe webhook signing secret |
STRIPE_PRO_PRICE_ID |
Stripe price ID for Pro plan |
STRIPE_TEAM_PRICE_ID |
Stripe 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
transfa MCP questions
How do I add transfa MCP to Claude Code?
Run claude mcp add --env 'TRANSFA_API_KEY=<YOUR_TRANSFA_API_KEY>' transfa -- npx -y transfa-mcp in your terminal. Add --scope user to make it available in every project.
How do I add transfa MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does transfa MCP provide?
It exposes 5 tools, including upload, file_info, list_uploads, delete_upload, run_artifacts.
Does transfa require an account to use?
No, you can upload files without signing up; it is designed for use without friction.
What is the maximum file size supported?
The service supports files up to 100 GB.
Can I protect my shared links?
Yes, you can add password protection and set download limits or time-to-live (TTL) for every link.
Is there an API key required for the MCP server?
An API key is optional; the server can operate in guest mode with a 10 MB and 24h limit.