多云文件存储服务

支持多种云存储提供商的统一文件存储服务,提供文件上传、预签名URL生成等功能,适用于需要跨云存储和文件管理的场景。

  • by sjzar
  • Go
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 sjzar/file-store-mcp

使用说明

文件存储MCP服务器

支持多个云提供商的文件存储服务

特性

  • 多云存储提供商支持
  • 用于文件上载的统一API
  • 预签名URL生成以实现安全访问
  • 支持AWS S3、阿里云OSS、腾讯云COS、七牛云、GitHub
  • 通过环境变量轻松配置
  • 可自定义的URL过期时间
  • 支持自定义域和CDN
  • 双操作模式:stdio用于直接集成,SSE用于服务器模式

快速开始

安装

go install github.com/sjzar/file-store-mcp@latest

基本用法

  1. 为所选存储提供商设置所需的环境变量
  2. 在stdio模式(默认)下运行,以便与其他应用程序直接集成:
    file-store-mcp
    
  3. 或者在SSE服务器模式下运行以进行基于HTTP的集成:
    file-store-mcp --sse-port 8080
    

MCP工具

文件存储MCP提供了三种将文件上传到云存储的工具:

1.上传文件工具(upload_files)

将本地文件上传到云存储并返回HTTP URL。

何时使用:当用户提到本地文件路径或需要在线访问他们的文件时。非常适合分析PDF内容、在绘图任务中引用本地图像或处理任何本地文件。

参数:

  • paths:要上传的绝对本地文件路径数组(必需)

示例:

{
  "tool": "upload_files",
  "params": {
    "paths": ["/path/to/file1.pdf", "C:/Users/user/Documents/file2.jpg"]
  }
}

2.上传剪贴板文件工具(upload_clipboard_files)

将文件从剪贴板上传到云存储并返回HTTP URL。

何时使用:仅当用户明确请求从剪贴板上传文件时。当用户想要共享或处理剪贴板内容而不首先在本地保存时非常有用。

参数:无需

示例:

{
  "tool": "upload_clipboard_files"
}

3.上传URL文件工具(upload_url_files)

从提供的URL下载文件并将其上传到云存储,返回新的HTTP URL。

何时使用:当用户提供指向他们想要处理或分析的文件的web链接时。非常适合用户引用需要合并到当前工作流中的外部文件的情况。

参数:

  • urls:指向要下载和上传的文件的URL数组(必填)

示例:

{
  "tool": "upload_url_files",
  "params": {
    "urls": ["https://example.com/file1.pdf", "https://another-site.org/image.jpg"]
  }
}

存储提供商

文件存储MCP支持以下存储提供程序:

  • AWS S3(以及Cloudflare R2等兼容服务)
  • 阿里云OSS
  • 腾讯云COS
  • 七牛云存储
  • GitHub存储库

配置

通用配置

环境变量 描述 默认值
FSM_STORAGE_TYPE 存储提供者类型(s3、oss、cos、qiniu、github) empty

AWS S3配置

集 FSM_STORAGE_TYPE=s3 使用AWS S3或兼容服务。

环境变量 描述 必填 默认
FSM_S3_BUCKET S3存储桶名称 是 -
FSM_S3_REGION AWS区域 是 -
FSM_S3_ENDPOINT S3兼容服务的自定义端点 否 AWS S3端点
FSM_S3_ACCESS_KEY AWS访问密钥ID 是 -
FSM_S3_SECRET_KEY AWS秘密访问密钥 是 -
FSM_S3_SESSION AWS会话令牌 否 -
FSM_S3_URL_EXPIRATION 预设URL过期时间(秒) 否 604800(7天)

S3兼容服务注意事项:

  • 对于Cloudflare R2:设置 FSM_S3_ENDPOINT 到您的R2端点URL
  • 对于其他S3兼容服务:配置相应的端点URL

阿里云OSS配置

集 FSM_STORAGE_TYPE=oss 使用阿里云OSS。

环境变量 描述 必填 默认
FSM_OSS_ENDPOINT OSS端点 是 -
FSM_OSS_ACCESS_KEY OSS访问密钥ID 是 -
FSM_OSS_SECRET_KEY OSS访问密钥机密 是 -
FSM_OSS_BUCKET OSS存储桶名称 是 -
FSM_OSS_DOMAIN OSS bucket的自定义域 否 -
FSM_OSS_URL_EXPIRATION 签名URL过期时间(秒) 否 604800(7天)

腾讯云COS配置

集 FSM_STORAGE_TYPE=cos 使用腾讯云COS。

环境变量 描述 必填 默认
FSM_COS_BUCKET COS存储桶名称 是 -
FSM_COS_REGION COS区域 是 -
FSM_COS_APP_ID 腾讯云应用ID 是 -
FSM_COS_ACCESS_KEY 机密ID 是 -
FSM_COS_SECRET_KEY 密钥 是 -
FSM_COS_DOMAIN COS桶的自定义域 否 -
FSM_COS_USE_HTTPS 是否使用HTTPS 否 true
FSM_COS_USE_ACCELERATE 是否使用全局加速 否 false
FSM_COS_URL_EXPIRATION 预设URL过期时间(秒) 否 604800(7天)

七牛云存储配置

集 FSM_STORAGE_TYPE=qiniu 使用七牛云存储。

环境变量 描述 必填 默认
FSM_QINIU_ACCESS_KEY 七牛访问密钥 是 -
FSM_QINIU_SECRET_KEY 七牛密钥 是 -
FSM_QINIU_BUCKET 七牛桶名 是 -
FSM_QINIU_DOMAIN 七牛桶自定义域名(必填) 是 -
FSM_QINIU_REGION 存储区域 否 z0 (华东)
FSM_QINIU_URL_EXPIRATION 签名URL过期时间(秒) 否 604800(7天)

Qiniu 地区:

  • z0:华东
  • z1:华北
  • z2:华南
  • na0:北美
  • as0:东南亚

GitHub存储库配置

集 FSM_STORAGE_TYPE=github 使用GitHub作为存储提供商。

环境变量 描述 必填 默认
FSM_GITHUB_TOKEN GitHub个人访问令牌 是 -
FSM_GITHUB_OWNER 存储库所有者 是 -
FSM_GITHUB_REPO 存储库名称 是 -
FSM_GITHUB_BRANCH 分行名称 否 main
FSM_GITHUB_PATH 存储库中的文件存储路径 否 -
FSM_GITHUB_DOMAIN GitHub内容的自定义域 否 -

GitHub令牌权限:

  • 令牌必须具有 repo 私有存储库的范围
  • 对于公共存储库, public_repo 范围足够

高级用法

使用自定义域

对于所有存储提供商,您可以配置自定义域来为您的文件提供服务。当您的存储前面有CDN服务时,这尤其有用。

阿里云OSS自定义域名示例:

FSM_STORAGE_TYPE=oss
FSM_OSS_BUCKET=my-bucket
FSM_OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com
FSM_OSS_ACCESS_KEY=your-access-key
FSM_OSS_SECRET_KEY=your-secret-key
FSM_OSS_DOMAIN=cdn.example.com

调试模式

启用调试模式以进行更详细的日志记录:

file-store-mcp --debug

发展

从源头构建

git clone https://github.com/sjzar/file-store-mcp.git
cd file-store-mcp
go build

许可证

此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。