返回市场
文件存储MCP

文件存储MCP

作者:sjzar4 星标更新:2025-04-26

项目介绍

<div align="center">

文件存储MCP服务器

文件存储MCP

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

Go 报告卡 GoDoc GitHub 发布 GitHub 许可证

</div>

特性

  • 支持多云存储提供商
  • 统一的文件上传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。

何时使用:当用户提供他们希望处理或分析的文件的网络链接时。适用于用户引用需要纳入当前工作流程的外部文件的情况。

参数

  • 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)

AWS S3 配置

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

环境变量描述是否必需默认值
FSM_S3_BUCKETS3桶名称-
FSM_S3_REGIONAWS区域-
FSM_S3_ENDPOINTS3兼容服务的自定义端点AWS S3端点
FSM_S3_ACCESS_KEYAWS访问密钥ID-
FSM_S3_SECRET_KEYAWS秘密访问密钥-
FSM_S3_SESSIONAWS会话令牌-
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_ENDPOINTOSS端点-
FSM_OSS_ACCESS_KEYOSS访问密钥ID-
FSM_OSS_SECRET_KEYOSS访问密钥秘密-
FSM_OSS_BUCKETOSS桶名称-
FSM_OSS_DOMAINOSS桶的自定义域名-
FSM_OSS_URL_EXPIRATION签名URL过期时间(秒)604800(7天)

腾讯云COS 配置

设置 FSM_STORAGE_TYPE=cos 使用腾讯云COS。

环境变量描述是否必需默认值
FSM_COS_BUCKETCOS桶名称-
FSM_COS_REGIONCOS区域-
FSM_COS_APP_ID腾讯云App ID-
FSM_COS_ACCESS_KEY密钥ID-
FSM_COS_SECRET_KEY密钥-
FSM_COS_DOMAINCOS桶的自定义域名-
FSM_COS_USE_HTTPS是否使用HTTPStrue
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天)

可用的七牛区域

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

GitHub仓库 配置

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

环境变量描述是否必需默认值
FSM_GITHUB_TOKENGitHub个人访问令牌-
FSM_GITHUB_OWNER仓库所有者-
FSM_GITHUB_REPO仓库名称-
FSM_GITHUB_BRANCH分支名称main
FSM_GITHUB_PATH仓库内的文件存储路径-
FSM_GITHUB_DOMAINGitHub内容的自定义域名-

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发布 - 详情见LICENSE文件。

</div>