Send Me My Files - R2 upload with short lived signed urls

☁️ 安全上传,限时分享,多桶无忧

基于TypeScript的MCP技能,支持上传文件至Cloudflare R2、AWS S3等S3兼容存储,自动生成带签名的临时下载链接,默认5分钟过期,支持多桶配置。

收藏
12.1k
安装
3.8k
版本
1.0.3
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

r2-upload 是一个面向开发者和自动化工作流的文件上传工具,采用MCP(Model Context Protocol)协议,允许AI助手直接调用。核心功能包括:

1. 多平台存储支持:原生兼容Cloudflare R2、AWS S3、MinIO等任意S3 API兼容服务
2. 安全链接生成:自动创建预签名URL(presigned URL),默认5分钟有效期,支持自定义过期时间(秒/h/d单位)

3. 灵活配置:通过YAML配置文件管理多桶,支持环境变量覆盖和默认桶设置

4. 智能路径处理:可选自定义上传路径(--key),自动添加UUID前缀防冲突,自动识别Content-Type

配置流程

用户需创建 ~/.r2-upload.yml,包含endpoint、access_key_id、secret_access_key、bucket_name等字段。R2用户需特别注意region设为auto,并从Cloudflare Dashboard生成限定桶权限的API Token。

工具链

  • r2_upload:上传并返回签名URL
  • r2_list:查看近期上传记录
  • r2_delete:删除指定文件

显著优点

  • 安全性设计:预签名URL避免长期暴露存储凭证,短时效降低泄露风险
  • 多租户友好:单配置文件支持多桶切换,适合团队/个人项目隔离
  • 零运维成本:R2提供 generous free tier(10GB/月),小团队友好
  • 协议标准化:MCP协议确保与Claude、Cursor等AI IDE无缝集成

潜在局限

1. 凭证管理风险:明文存储access_key于本地YAML文件,需配合文件权限控制(建议600)
2. 无服务端加密选项:配置中未体现SSE-S3/SSE-KMS等加密参数

3. 过期时间粒度:仅支持到秒级,无更细粒度控制

4. 无自动刷新机制:预签名URL过期后需重新上传或手动续签

5. 依赖网络可达性:无本地缓存或断点续传能力

适合人群

  • 需要AI辅助生成临时分享链接的内容创作者
  • 构建MCP生态的开发者,需文件上传能力的Agent
  • 使用R2/S3作为对象存储的中小团队
  • 避免长期暴露CDN域名的安全敏感型用户

常规风险

| 风险类型 | 描述 | 缓解建议 |
|---------|------|---------|
| 凭证泄露 | YAML文件权限不当或被提交至Git | 使用`chmod 600`,添加至`.gitignore`,或改用环境变量注入 |
| URL滥用 | 预签名URL在有效期内被截获传播 | 缩短有效期,配合WAF规则限制referer |
| 配置错误 | endpoint格式错误导致上传失败 | 严格遵循`https://<account_id>.r2.cloudflarestorage.com`格式 |
| 成本失控 | 大文件/高频上传超出免费额度 | 设置R2使用告警,启用请求计费监控 |
| 数据残留 | 删除操作仅移除引用,存储桶版本控制可能保留历史 | 显式配置生命周期策略或禁用版本控制 |

Send Me My Files - R2 upload with short lived signed urls 内容

src文件夹
手动下载zip · 37.4 kB
index.tstext/plain
请选择文件