Skip to main content

r2-upload

Upload files to Cloudflare R2, AWS S3, or any S3-compatible storage (like MinIO) and generate secure, time-limited presigned download links with configurable expiration, typically set to 5 minutes. Use when the user needs to upload a file to cloud storage and get a shareable link, or mentions R2, S3, presigned URLs, temporary links, or file uploads with expiration.

Datos de origen

Repositorio
zebbern/claude-code-guide
Última actividad en el origen
30 de octubre de 2026 a las 00:04
Idioma detectado de SKILL.md
inglés
Estrellas
4694
Forks
470

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
9 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
r2-upload
description
Upload files to Cloudflare R2, AWS S3, or any S3-compatible storage (like MinIO) and generate secure, time-limited presigned download links with configurable expiration, typically set to 5 minutes. Use when the user needs to upload a file to cloud storage and get a shareable link, or mentions R2, S3, presigned URLs, temporary links, or file uploads with expiration.
summary
TypeScript-based MCP skill for uploading files to cloud storage (R2, S3, MinIO) with secure, temporary download links. Features multi-bucket support, interactive onboarding, and 5-minute default expiration.
# Send Me My Files - R2 Upload with Short Lived Signed URLs Upload files to Cloudflare R2 or any S3-compatible storage and generate presigned download links. ## Features - Upload files to R2/S3 buckets - Generate presigned download URLs (configurable expiration) - Support for any S3-compatible storage (R2, AWS S3, MinIO, etc.) - Multiple bucket configurations - Automatic content-type detection ## Configuration Create `~/.r2-upload.yml` (or set `R2_UPLOAD_CONFIG` env var): ```yaml # Default bucket (used when no bucket specified) default: my-bucket # Bucket configurations buckets: my-bucket: endpoint: https://abc123.r2.cloudflarestorage.com access_key_id: your_access_key secret_access_key: your_secret_key bucket_name: my-bucket public_url: https://files.example.com # Optional: custom domain region: auto # For R2, use "auto" # Additional buckets personal: endpoint: https://xyz789.r2.cloudflarestorage.com access_key_id: ... secret_access_key: ... bucket_name: personal-files region: auto ``` ### Cloudflare R2 Setup 1. Go to Cloudflare Dashboard → R2 2. Create a bucket 3. Go to R2 API Tokens: `https://dash.cloudflare.com/<ACCOUNT_ID>/r2/api-tokens` 4. Create a new API token - **Important:** Apply to specific bucket (select your bucket) - Permissions: Object Read & Write 5. Copy the Access Key ID and Secret Access Key 6. Use endpoint format: `https://<account_id>.r2.cloudflarestorage.com` 7. Set `region: auto` ### AWS S3 Setup ```yaml aws-bucket: endpoint: https://s3.us-east-1.amazonaws.com access_key_id: ... secret_access_key: ... bucket_name: my-aws-bucket region: us-east-1 ``` ## Setup This skill is a stdio MCP server, not a shell command (there is no `r2-upload` binary). Build it once and register it with Claude Code: ```bash cd "${CLAUDE_SKILL_DIR}" && npm install && npm run build claude mcp add r2-upload -- node "${CLAUDE_SKILL_DIR}/dist/index.js" ``` Run `npm run onboard` in the same folder to create `~/.r2-upload.yml` interactively. ## Tools - `r2_upload` - Upload `file_path` and return a presigned URL. Optional: `key` (custom object path), `bucket`, `expires` (`300`, `24h`, `1d`; default `5m`), `public` (unsigned URL, needs a public bucket), `content_type` - `r2_list` - List files in a bucket (`bucket`, `prefix`, `max_keys`) - `r2_delete` - Delete a file by `key` - `r2_generate_url` - Generate a new presigned URL for an existing `key` ## Environment Variables - `R2_UPLOAD_CONFIG` - Path to config file (default: `~/.r2-upload.yml`) - `R2_DEFAULT_BUCKET` - Override default bucket ## Notes - Uploaded files are stored with their original filename unless `key` is specified - Automatic UUID prefix added to prevent collisions (e.g., `abc123/file.pdf`) - Content-Type automatically detected from file extension - Presigned URLs expire after the configured duration
Ver en GitHub