项目简介

File Store MCP Server 是一个专门设计用于 Model Context Protocol (MCP) 生态系统的后端服务。它提供标准化的方式,让大型语言模型 (LLM) 客户端能够安全、便捷地处理文件。通过集成多种主流云存储服务,该项目为LLM应用提供了强大的文件上传和访问能力。

主要功能点

  • 多云存储支持: 无缝接入 AWS S3 (兼容R2等)、阿里云OSS、腾讯云COS、七牛云、GitHub等多种存储后端。
  • 统一的文件上传接口: 为LLM客户端提供统一的MCP工具接口,无需关心底层具体的存储实现细节。
  • 多种上传方式: 提供工具支持上传本地文件、剪贴板中的文件以及网络链接指向的文件。
  • 安全访问: 支持生成带有过期时间的签名URL或使用自定义域名进行安全的文件访问。
  • 灵活配置: 所有存储提供商和高级功能均通过环境变量轻松配置。
  • 多种传输协议: 支持标准输入/输出 (Stdio) 和Server-Sent Events (SSE) 两种通信模式。

安装步骤

安装非常简单,只需要Go语言环境:

  1. 确保您已安装Go语言(版本1.18或更高)。
  2. 打开终端或命令行工具。
  3. 运行以下命令进行安装:
    go install github.com/sjzar/file-store-mcp@latest

安装完成后,'file-store-mcp' 命令将在您的Go bin路径下可用。

服务器配置

作为MCP服务器,File Store MCP需要被MCP客户端(如支持MCP的AI助手或应用)启动和连接。客户端通常需要配置服务器的启动命令和参数。此外,您还需要通过环境变量配置实际的文件存储服务。

1. 文件存储服务配置 (环境变量):

这是服务器运行所必需的,用于指定文件上传到哪里。根据您选择的存储服务,设置相应的环境变量。例如,如果您使用AWS S3:

  • 'FSM_STORAGE_TYPE': 设置为 's3'。
  • 'FSM_S3_BUCKET': 您的S3存储桶名称。
  • 'FSM_S3_REGION': S3存储桶所在的区域。
  • 'FSM_S3_ACCESS_KEY': 您的AWS Access Key ID。
  • 'FSM_S3_SECRET_KEY': 您的AWS Secret Access Key。
  • (可选)'FSM_S3_ENDPOINT': 如果使用S3兼容服务,设置自定义端点。
  • (可选)'FSM_S3_URL_EXPIRATION': 签名URL过期时间(秒)。

其他存储类型(oss, cos, qiniu, github)也有对应的环境变量,请参考项目的README文档了解详细配置项。

2. MCP客户端启动配置 (通常在客户端应用中设置):

这是告诉您的MCP客户端如何启动和连接到File Store MCP服务器的配置。配置格式取决于您的MCP客户端应用,但通常包含服务器名称、命令和参数。

  • 使用 Stdiod 模式 (默认): 这种模式通过标准输入/输出来进行通信,适用于集成到命令行工具或桌面应用中。

    {
      "server name": "file-store-mcp",
      "command": "file-store-mcp",
      "args": [],
      "description": "文件存储MCP服务器,使用Stdio模式通信,提供文件上传能力。"
    }
  • 使用 SSE 模式 (通过 HTTP): 这种模式启动一个HTTP服务器,通过Server-Sent Events进行通信,适用于远程访问或Web应用集成。您需要指定一个端口。

    {
      "server name": "file-store-mcp",
      "command": "file-store-mcp",
      "args": ["--sse-port", "8080"], // 将8080替换为您希望使用的端口
      "description": "文件存储MCP服务器,使用SSE模式通过HTTP通信,提供文件上传能力。"
    }

请根据您的MCP客户端应用的要求,将其配置为使用上述命令启动File Store MCP。

基本使用方法

File Store MCP服务器启动并与MCP客户端建立连接后,LLM就可以通过调用服务器声明的“工具”来使用其功能。该服务器提供了以下几个工具:

  1. 'upload_files' 工具: 用于上传本地文件。LLM客户端检测到用户提及本地文件路径时,可以调用此工具。

    • 参数: 一个名为 'paths' 的字符串数组,包含需要上传的本地文件的绝对路径。
    • 示例调用: 客户端向服务器发送一个JSON-RPC请求,调用 'mcp/call_tool' 方法,参数类似:
      {
        "tool": "upload_files",
        "params": {
          "paths": ["/home/user/documents/report.pdf", "C:\\Users\\user\\Pictures\\image.png"]
        }
      }
    • 服务器响应: 服务器上传文件后,会返回成功消息和对应文件的可访问URL列表。
  2. 'upload_clipboard_files' 工具: 用于上传当前剪贴板中的文件。仅在用户明确要求处理剪贴板文件时调用。

    • 参数: 无。
    • 示例调用:
      {
        "tool": "upload_clipboard_files"
      }
    • 服务器响应: 服务器会尝试获取剪贴板中的文件并上传,然后返回结果URL列表或提示剪贴板中没有文件。
  3. 'upload_url_files' 工具: 用于下载网络链接指向的文件,然后将这些文件上传到配置的存储服务。在LLM客户端识别到用户提供了文件下载链接时调用。

    • 参数: 一个名为 'urls' 的字符串数组,包含需要下载和上传的文件链接。
    • 示例调用:
      {
        "tool": "upload_url_files",
        "params": {
          "urls": ["https://example.com/data.csv", "http://anothersite.org/archive.zip"]
        }
      }
    • 服务器响应: 服务器下载并上传文件后,返回新生成的可访问URL列表。

LLM客户端通过理解用户意图,自动选择合适的工具并构造参数,然后通过MCP协议发送请求给File Store MCP服务器,以完成文件相关的操作。

信息

分类

数据库与文件