项目简介
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语言环境:
- 确保您已安装Go语言(版本1.18或更高)。
- 打开终端或命令行工具。
- 运行以下命令进行安装:
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就可以通过调用服务器声明的“工具”来使用其功能。该服务器提供了以下几个工具:
-
'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列表。
-
'upload_clipboard_files' 工具: 用于上传当前剪贴板中的文件。仅在用户明确要求处理剪贴板文件时调用。
- 参数: 无。
- 示例调用:
{ "tool": "upload_clipboard_files" } - 服务器响应: 服务器会尝试获取剪贴板中的文件并上传,然后返回结果URL列表或提示剪贴板中没有文件。
-
'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服务器,以完成文件相关的操作。
信息
分类
数据库与文件