关于 remote-filesystem
Remote Filesystem 是一个 MCP 服务,用于对云存储执行远程文件系统操作,目前支持 Google Cloud Storage,计划支持 S3 和 Cloudflare R2。适合需要在存储桶中上传、下载和管理文件的用户。
主要功能
- 01上传文件并设置公开或私有访问
- 02以文本或 base64 下载文件
- 03按前缀列出文件和目录
- 04修改文件属性和元数据
- 05工具组实现只读与读写权限控制
适用场景
- 01将截图等生成文件上传到 GCS 并生成公开链接
- 02在只读模式下浏览存储桶中的文件
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 upload、download、list_files、modify 和 delete_file 等工具,用于操作云存储中的文件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
mcp.json · 通用配置
启动命令
npx -y remote-filesystem-mcp-server需要配置的环境变量
GCS_BUCKETGoogle Cloud Storage bucket name.GCS_PROJECT_IDGoogle Cloud project ID.GCS_CLIENT_EMAILService account email for inline credentials.GCS_PRIVATE_KEY密钥Service account private key for inline credentials.GOOGLE_APPLICATION_CREDENTIALS密钥Path to Google Cloud service account key file.GCS_ROOT_PATHRoot path prefix to restrict access within bucket.GCS_MAKE_PUBLICMake uploaded files publicly accessible.ENABLED_TOOLGROUPSComma-separated tool groups: readonly or readwrite.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 远程文件系统中的文件路径(相对于根目录)。示例:"screenshots/pr-123.png" |
| asBase64 | boolean | 否 | 如果为 true,则以 base64 编码字符串形式返回文件内容。适用于图像等二进制文件。默认值:false(以文本形式返回)。 |
详细介绍
远程文件系统 MCP 服务
用于在云存储提供商上执行远程文件系统操作的 MCP 服务。目前支持 Google Cloud Storage (GCS),计划支持 S3、Cloudflare R2 等。
功能
- 上传文件到云存储,并设置公开或私有访问权限
- 下载文件为文本或 base64(用于二进制文件)
- 列出文件和目录,并按前缀筛选
- 修改文件属性(公开/私有、内容类型、元数据)
- 删除远程存储中的文件
- 限制根路径,限定存储桶内的访问范围
- 提供用于基于权限控制访问的工具组
- 支持内联凭据(无需 JSON 密钥文件)
- 为私有文件生成签名 URL
安装
npm install remote-filesystem-mcp-server
或使用 npx 直接运行:
npx remote-filesystem-mcp-server
配置
环境变量
| 变量 | 必填 | 描述 | 默认值 |
|---|---|---|---|
GCS_BUCKET | 是 | GCS 存储桶名称 | - |
GCS_PROJECT_ID | 否 | Google Cloud 项目 ID | 自动 |
GCS_CLIENT_EMAIL | 否* | 服务账号邮箱(内联凭据) | - |
GCS_PRIVATE_KEY | 否* | 服务账号私钥(内联凭据) | - |
GOOGLE_APPLICATION_CREDENTIALS | 否* | 服务账号密钥文件的路径 | - |
GCS_ROOT_PATH | 否 | 根路径前缀——限制访问范围 | 无 |
GCS_MAKE_PUBLIC | 否 | 将文件设为可公开访问 | false |
ENABLED_TOOLGROUPS | 否 | 工具组:readonly、readwrite | 全部 |
- 必须选择一种身份验证方式:内联凭据、密钥文件或 ADC
Claude Desktop 配置
{
"mcpServers": {
"remote-filesystem": {
"command": "npx",
"args": ["-y", "remote-filesystem-mcp-server"],
"env": {
"GCS_BUCKET": "your-bucket-name",
"GCS_CLIENT_EMAIL": "[email protected]",
"GCS_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\n...",
"GCS_ROOT_PATH": "uploads/"
}
}
}
}
工具
upload
将文件上传到远程文件系统。
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
source | string | 是 | 文件路径(file://...)或 base64 数据 |
path | string | 否 | 目标路径(未指定时自动生成) |
contentType | string | 否 | MIME 类型(未提供时自动检测) |
makePublic | boolean | 否 | 覆盖默认的公开/私有设置 |
示例:
upload({
source: 'file:///tmp/screenshot.png',
path: 'screenshots/pr-123.png',
makePublic: true,
});
download
从远程文件系统下载文件。
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
path | string | 是 | 文件路径 |
asBase64 | boolean | 否 | 以 base64 格式返回(用于二进制数据) |
示例:
download({
path: 'screenshots/pr-123.png',
asBase64: true,
});
list_files
列出远程文件系统中的文件和目录。
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
prefix | string | 否 | 要列出的目录前缀 |
maxResults | number | 否 | 返回的文件数量上限 |
示例:
list_files({
prefix: 'screenshots/',
maxResults: 100,
});
modify
修改文件属性。
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
path | string | 是 | 文件路径 |
makePublic | boolean | 否 | 将文件设为公开 |
makePrivate | boolean | 否 | 将文件设为私有 |
contentType | string | 否 | 新的 MIME 类型 |
metadata | object | 否 | 自定义元数据键值 |
示例:
modify({
path: 'reports/doc.pdf',
makePublic: true,
metadata: { author: 'claude' },
});
delete_file
从远程文件系统中删除文件。
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
path | string | 是 | 文件路径 |
示例:
delete_file({
path: 'temp/old-file.txt',
});
工具组
服务器支持通过工具组进行基于权限的访问控制:
readonly:仅提供download和list_files工具readwrite:提供所有工具(包括只读工具)
设置 ENABLED_TOOLGROUPS=readonly 可将操作限制为只读操作。
身份验证
服务器支持多种身份验证方式:
1. 内联凭据(推荐)
[email protected]
GCS_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
2. 密钥文件
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
3. 应用默认凭据(ADC)
gcloud auth application-default login
许可证
MIT
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。