mcpField
C
cloudru-s3-mcp-ai-cli

cloudru-s3-mcp-ai-cli

本地服务
github.com/stufently文件与存储02 周前更新

关于 cloudru-s3-mcp-ai-cli

cloudru-s3-mcp-ai-cli 将 Go MCP 服务、命令行工具和 Agent 技能结合,用于 Cloud.ru Evolution Object Storage。它支持受限范围访问,并为破坏性操作设置人工审批门槛,默认仅启用读取。

主要功能

  1. 01S3 对象操作与分段传输
  2. 02按存储桶和前缀限制访问
  3. 03破坏性操作人工审批策略
  4. 04访问诊断与受限扫描
  5. 05安装命令行工具和 Agent 技能

适用场景

  1. 01检查 Evolution Object Storage 访问情况
  2. 02查看对象并恢复备份
  3. 03创建临时预签名链接
  4. 04让 Claude Code、Cursor 或 Codex 连接受限存储

MCP 相关

stdio MCP 服务按启用的访问级别和受支持能力,提供 S3 读取、写入、删除及管理工具,并提供配置、能力和存储池资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"stufently-cloudru-s3-mcp-ai-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CLOUDRU_S3_ACCESS_KEY_ID",
"-e",
"CLOUDRU_S3_SECRET_ACCESS_KEY",
"-e",
"CLOUDRU_S3_POOL",
"-e",
"CLOUDRU_S3_ENDPOINT",
"-e",
"CLOUDRU_S3_ALLOW_INSECURE",
"-e",
"CLOUDRU_S3_ALLOW",
"-e",
"CLOUDRU_S3_DESTRUCTIVE_POLICY",
"-e",
"CLOUDRU_S3_ALLOWED_BUCKETS",
"-e",
"CLOUDRU_S3_ALLOWED_PREFIXES",
"-e",
"CLOUDRU_S3_FILE_ROOT",
"-e",
"CLOUDRU_S3_AUDIT_FILE",
"ghcr.io/stufently/cloudru-s3-mcp-ai-cli:0.1.0"
],
"env": {
"CLOUDRU_S3_ACCESS_KEY_ID": "<CLOUDRU_S3_ACCESS_KEY_ID>",
"CLOUDRU_S3_SECRET_ACCESS_KEY": "<CLOUDRU_S3_SECRET_ACCESS_KEY>",
"CLOUDRU_S3_POOL": "<CLOUDRU_S3_POOL>",
"CLOUDRU_S3_ENDPOINT": "<CLOUDRU_S3_ENDPOINT>",
"CLOUDRU_S3_ALLOW_INSECURE": "<CLOUDRU_S3_ALLOW_INSECURE>",
"CLOUDRU_S3_ALLOW": "<CLOUDRU_S3_ALLOW>",
"CLOUDRU_S3_DESTRUCTIVE_POLICY": "<CLOUDRU_S3_DESTRUCTIVE_POLICY>",
"CLOUDRU_S3_ALLOWED_BUCKETS": "<CLOUDRU_S3_ALLOWED_BUCKETS>",
"CLOUDRU_S3_ALLOWED_PREFIXES": "<CLOUDRU_S3_ALLOWED_PREFIXES>",
"CLOUDRU_S3_FILE_ROOT": "<CLOUDRU_S3_FILE_ROOT>",
"CLOUDRU_S3_AUDIT_FILE": "<CLOUDRU_S3_AUDIT_FILE>"
}
}
}
}
启动命令docker run -i --rm -e CLOUDRU_S3_ACCESS_KEY_ID -e CLOUDRU_S3_SECRET_ACCESS_KEY -e CLOUDRU_S3_POOL -e CLOUDRU_S3_ENDPOINT -e CLOUDRU_S3_ALLOW_INSECURE -e CLOUDRU_S3_ALLOW -e CLOUDRU_S3_DESTRUCTIVE_POLICY -e CLOUDRU_S3_ALLOWED_BUCKETS -e CLOUDRU_S3_ALLOWED_PREFIXES -e CLOUDRU_S3_FILE_ROOT -e CLOUDRU_S3_AUDIT_FILE ghcr.io/stufently/cloudru-s3-mcp-ai-cli:0.1.0
需要配置的环境变量
CLOUDRU_S3_ACCESS_KEY_ID密钥S3 access key ID
CLOUDRU_S3_SECRET_ACCESS_KEY密钥S3 secret access key
CLOUDRU_S3_POOLSigning pool
CLOUDRU_S3_ENDPOINTOptional endpoint override
CLOUDRU_S3_ALLOW_INSECURESet 1 only for explicit HTTP test endpoints
CLOUDRU_S3_ALLOWIndependent write,delete,admin levels; read only by default
CLOUDRU_S3_DESTRUCTIVE_POLICY
CLOUDRU_S3_ALLOWED_BUCKETSComma-separated bucket scope
CLOUDRU_S3_ALLOWED_PREFIXESComma-separated bucket/prefix/ scope
CLOUDRU_S3_FILE_ROOTOptional confined local file root
CLOUDRU_S3_AUDIT_FILEOptional private append-only audit output

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/stufently/cloudru-s3-mcp-ai-cli:0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Cloud.ru S3 MCP 服务与 AI CLI

Status License

用于 Cloud.ru Evolution Object Storage 的 MCP 服务和 CLI:将 S3 存储连接到 Claude Code、Cursor 和 Codex,诊断访问问题并恢复文件。二进制文件 cloudru-s3 适用于 endpoint 为 s3.cloud.ru 的 Evolution。

English guide · S3 MCP 服务目录

英文

一个用于 Cloud.ru S3 Object Storage 的 Go MCP 服务、CLI 和 Agent 技能。将 Claude Code、Cursor 和 Codex 连接到受限的对象存储,以便检查和恢复备份。适用于 Evolution、s3.cloud.ru、ru-central-1;不适用于 Advanced 配置文件。请参阅完整英文指南。

快速开始

该配置文件连接到 Evolution Object Storage。在 auth set 中完整输入密钥 ID:<tenant_id>:<key_id>。存储池为 ru-central-1,endpoint 为 https://s3.cloud.ru。Advanced OBS 需要单独的配置文件。

从 Releases 下载适用于你平台的二进制文件(已发布 v0.1.0;已收录于 MCP Registry 和 Smithery),或使用 Go 1.27.2 构建:

bash scripts/go.sh go build -o cloudru-s3 ./cmd/cloudru-s3
./cloudru-s3 version
./cloudru-s3 auth set
./cloudru-s3 auth status
./cloudru-s3 ls --json

auth set 会提示输入密钥 ID 和密钥,输入时不会回显;没有 TTY 时则从 stdin 读取两行。不要通过 argv 传递密钥。文件 ~/.config/cloudru-s3/credentials 会以 0600 权限原子创建;权限更宽松时会被拒绝。

优先级:标志 > 环境变量 > 文件。环境变量:CLOUDRU_S3_ACCESS_KEY_ID、CLOUDRU_S3_SECRET_ACCESS_KEY、CLOUDRU_S3_POOL(ru-central-1)、CLOUDRU_S3_ENDPOINT。HTTP 需要设置 CLOUDRU_S3_ALLOW_INSECURE=1。

镜像:ghcr.io/stufently/cloudru-s3-mcp-ai-cli:0.1.0;本地构建:docker build -t cloudru-s3 . 镜像以 uid 65532 运行 MCP,并包含 CA 证书。通过私有环境或文件传递凭据。

功能

  • 在配置文件范围内对 object 执行流式 CRUD、copy、multipart 和 presigned URL 操作。
  • 在支持的情况下注册版本、标签、CORS、策略和 Object Lock 配置。
  • 提供受限扫描、诊断、JSON、MCP 安装和内置 skill。

连接到 Claude Code、Cursor、Codex

将 cloudru-s3 MCP 服务添加到 Cursor

此按钮会以只读模式从 Docker 镜像 ghcr.io/stufently/cloudru-s3-mcp-ai-cli:0.1.0 安装 MCP。密钥不会写入配置:Cursor 会从环境中读取 ${env:…},因此请在启动 Cursor 的环境中设置 CLOUDRU_S3_ACCESS_KEY_ID 和 CLOUDRU_S3_SECRET_ACCESS_KEY;如果存储桶不在默认存储池中,也请设置 CLOUDRU_S3_POOL(空值 = 默认存储池)。Windsurf(mcp_config.json)也可使用同一配置块;也可手动将其添加到 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "cloudru-s3": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "CLOUDRU_S3_ACCESS_KEY_ID",
        "-e",
        "CLOUDRU_S3_SECRET_ACCESS_KEY",
        "-e",
        "CLOUDRU_S3_POOL",
        "ghcr.io/stufently/cloudru-s3-mcp-ai-cli:0.1.0"
      ],
      "env": {
        "CLOUDRU_S3_ACCESS_KEY_ID": "${env:CLOUDRU_S3_ACCESS_KEY_ID}",
        "CLOUDRU_S3_SECRET_ACCESS_KEY": "${env:CLOUDRU_S3_SECRET_ACCESS_KEY}",
        "CLOUDRU_S3_POOL": "${env:CLOUDRU_S3_POOL}"
      }
    }
  }
}
cloudru-s3 mcp install --client cursor --dry-run
cloudru-s3 mcp install --client cursor
cloudru-s3 mcp install --client claude-desktop
cloudru-s3 mcp install --client codex
cloudru-s3 mcp install --client claude-code --scope project
cloudru-s3 mcp install --client claude-code --scope user

最后一条命令只会打印 claude mcp add。二进制文件路径为绝对路径;密钥不会写入配置。Cursor:~/.cursor/mcp.json,Claude Code 项目:./.mcp.json;Desktop — 使用对应操作系统的配置目录。JSON 会保留其他密钥、.bak 和幂等性。

Codex:~/.codex/config.toml。现有表格需要使用 --force;只会替换 # >>> cloudru-s3 (managed) / # <<< cloudru-s3 (managed) 之间的区块。没有标记的表格即使使用 --force 也不会替换;TOML 的其他字节保持不变。

可分别启用各权限级别:cloudru-s3 mcp --allow-write --allow-delete --allow-admin 或 CLOUDRU_S3_ALLOW=write,delete,admin。mcp install 也支持这些标志。通过 CLOUDRU_S3_FILE_ROOT 启用 FILE_ROOT。

MCP 工具

Level工具
reads3_list_buckets, s3_list_objects, s3_head_object, s3_get_object, s3_preview_object, s3_presign_get, s3_list_object_versions, s3_list_multipart_uploads, s3_list_parts, s3_get_bucket_config, s3_largest_objects, s3_prefix_usage, s3_unfinished_uploads, s3_get_object_tagging
read + FILE_ROOTs3_download_file
writes3_put_object, s3_create_folder, s3_copy_object, s3_presign_put, s3_multipart_create, s3_multipart_presign_part, s3_multipart_complete, s3_put_object_tagging
write + FILE_ROOTs3_upload_file
deletes3_delete_object, s3_delete_objects, s3_multipart_abort
admins3_create_bucket, s3_put_bucket_versioning, s3_put_bucket_cors, s3_put_bucket_policy, s3_delete_bucket_policy, s3_put_object_lock_configuration
admin + deletes3_delete_bucket

资源:cloudru-s3://config、cloudru-s3://capabilities、cloudru-s3://pools。不支持的功能不会包含在工具中。

列表最多包含 1000 个元素,并带有 continuation_token;版本和 multipart 操作各自有第二个标记。Inline get/put 限制为 262144 字节,preview 限制为 65536 字节;较大的文件通过 presigned URL 或 FILE_ROOT 处理。响应包含 structuredContent 和 JSON 文本;超过 256 KiB 的文本会替换为简短摘要。错误包含 code/message/retryable;SDK 会对 429/503 进行自适应重试。

分析扫描数量最多为 max_scan(默认 10000);partial/token 表示结果不完整。Prefix usage 通过 next_result_offset 返回聚合数据的分页结果。这不是计费信息。

场景:诊断 Evolution Object Storage 访问权限

开始迁移或恢复前,请先检查 Evolution 的访问权限,并对指定前缀进行有限扫描。此配置不适用于 Cloud.ru 的其他 S3 产品,因为它们的 endpoint 和区域不同:

cloudru-s3 doctor --json
cloudru-s3 --pool ru-central-1 ls backups/daily/ --json
cloudru-s3 cp s3://backups/daily/archive.tar ./restored-cloudru.tar

示例使用现有的存储桶 backups 和对象 daily/archive.tar;请替换为自己的值。配置和云 API 仍需进行实际验证。

CLI

cloudru-s3 mb backups
cloudru-s3 cp ./archive.tar s3://backups/daily/archive.tar --part-size 5242880 --overwrite --yes
cloudru-s3 ls backups/daily/ --max-keys 100 --json
cloudru-s3 stat backups/daily/archive.tar
cloudru-s3 cp s3://backups/daily/archive.tar ./restored.tar
cloudru-s3 cp ./directory s3://backups/tree/ --recursive --overwrite --yes
cloudru-s3 cp s3://backups/tree/ ./restored-directory --recursive
cloudru-s3 cp s3://backups/daily/archive.tar s3://backups/copy.tar --overwrite --yes
cloudru-s3 cat backups/daily/notes.txt
cloudru-s3 versions backups/daily/ --json
cloudru-s3 du backups/daily/ --max-scan 10000 --json
cloudru-s3 presign backups/daily/archive.tar --expires 3600
cloudru-s3 rm backups/copy.tar --yes
cloudru-s3 rb empty-bucket --yes
cloudru-s3 doctor --json
cloudru-s3 compat --markdown

cp 接受常规本地路径以及 S3 URI s3://bucket/key 或 cloudru-s3://bucket/key。较大的上传会使用 manager/multipart,--recursive 会复制目录/前缀。覆盖需要 --overwrite 并确认;下载采用原子操作。对于 rm/rb/mv,非 TTY 环境下如果没有 --yes,将返回代码 2;TTY 环境下会提示确认。--json 为通用选项,错误输出到 stderr,并返回非零代码。

doctor 会检查凭据来源/权限、DNS/TLS、根据 Date 检查时钟以及 ListBuckets:偏差超过 5 分钟会发出警告,超过 15 分钟会报错。

AI Agent 技能

cloudru-s3 skill install
cloudru-s3 skill install --target ./agent-skills/cloudru-s3

默认安装在 ~/.claude/skills/cloudru-s3。以幂等方式安装 SKILL.md 和六个参考文档:备份/恢复、共享、最小权限、成本管理、迁移、事件响应。触发词:「cloudru s3」、「Cloud.ru 存储桶」、「上传到 s3」、「presigned」、「备份到 s3」。

安全

如果 conditional_writes:false,不覆盖写入会在发送 S3 请求前拒绝:HEAD 无法提供原子保护。要进行一致性写入,请在 CLI 中使用 --overwrite --yes,或在 MCP 中使用 overwrite:true, confirm:true,并保留确认策略。如果 conditional_delete:false,则会禁用 mv 和 s3_move_object。

MCP 默认只注册 read;不支持的功能和缺失的级别会导致工具被排除。

CLOUDRU_S3_DESTRUCTIVE_POLICY:confirm 在客户端支持时使用 elicitation,否则需要在人同意后设置 confirm:true;elicit 要求支持 elicitation,且不能通过 confirm:true 绕过;block 始终禁止操作,allow 则无需门控即可执行。拒绝操作会在任何 S3 请求之前发生。门控涵盖删除、move、presigned PUT、策略/Object Lock、暂停 versioning 以及覆盖写入。

当 conditional_writes:true 时,put/copy/move/multipart complete/upload file 操作会使用 overwrite:false、对目标执行 HEAD,并设置 If-None-Match: *;当其为 false 时,默认拒绝写入。overwrite:true 需要通过同一门控。

作用域:CLOUDRU_S3_ALLOWED_BUCKETS=backups 和 CLOUDRU_S3_ALLOWED_PREFIXES=backups/daily/。前缀按路径段边界匹配;daily-evil 不匹配。路径段 '..' 会被拒绝。部分作用域会禁止访问整个存储桶和宽泛列表,即使该存储桶已列入 ALLOWED_BUCKETS。Copy/move 会同时检查源和目标。

文件 MCP 工具使用 os.Root:只能访问 FILE_ROOT 内的相对路径;'..'、绝对路径和指向外部的符号链接会被拒绝。每次调用会在 stderr 中输出一行 JSON;CLOUDRU_S3_AUDIT_FILE 还会以 0600 权限写入文件。日志和错误中的密钥以及 X-Amz-Signature/Credential/Security-Token 会被隐藏。完整的签名链接仅作为操作结果返回。还应限制 S3 密钥本身的权限。

s3_download_file 默认会发布下载的文件,且不会替换现有文件,包括下载过程中创建的文件。要进行替换,请传入 overwrite:true:此时会应用破坏性操作策略,通过表单确认,或在人同意后设置 confirm:true。

Cloud.ru 存储池和存储类别

存储池、端点和存储类别见兼容性表;每项事实、价格和错误及其一手来源见调研文档。默认存储池:ru-central-1;SigV4 区域与所选存储池相同。配置文件中 verified:false:在 versitygw 上的验证无法确认云 API 的情况。未经确认的信息会标记为 [推测];配置文件中的价格不能用作账单计算器。

云服务可能支持 Lifecycle、ACL、bucket tagging 和 object retention,但此版本不提供用于配置这些功能的工具;配置文件中的数据描述的是 S3 API 兼容性。

常见问题

这是面向 Cloud.ru Evolution 还是 Advanced 的 MCP? 面向 Evolution Object Storage:配置使用 https://s3.cloud.ru 和 ru-central-1。不要将这些值用于 Advanced;官方资料和限制针对 Evolution。

如何检查 Cloud.ru S3 密钥和访问权限? cloudru-s3 auth status 会检查本地设置,而 doctor --json 还会连接服务,检查 DNS/TLS、时钟和 ListBuckets。网络和云操作需要使用您有效的密钥。

可以把 SINGLE 视为 Multi-AZ 类别吗? 不可以:配置中将 SINGLE 类别单独列出。池支持 Multi-AZ 并不意味着所有类别都具有相同的冗余能力;详情见研究文档。

什么是 MCP 服务? 它是一种通过 Model Context Protocol 向 Agent 提供工具和资源的程序;这里使用 stdio。

如何将 MCP 服务连接到 Claude Code? 保存 auth set 密钥,然后使用 project install,或使用打印出的 user 命令。

向 Agent 提供 S3 访问权限安全吗? 请限制密钥、作用域和权限级别;保留 confirm/block,并审慎批准可能造成破坏的操作。

这与 aws-cli 和 rclone 有何不同? 该二进制文件整合了 MCP、网关、审计、分析、skill 和 CLI;aws-cli/rclone 仍是独立的传输/自动化工具。

支持哪些功能? 请参阅 capabilities 和 compat。工具会根据配置注册;此版本无法配置 lifecycle、ACL、bucket tagging 和 object retention。

其他提供商

通用目录:适用于俄罗斯 S3 的 MCP 服务和 CLI。

提供商仓库使用场景
Selectelselectel-s3-mcp-ai-cli选择存储池并恢复备份
Yandex Cloudyandex-s3-mcp-ai-cli清点对象并检查备份版本
VK Cloudvkcloud-s3-mcp-ai-cli检查 Hotbox/Icebox 并访问所需区域
Cloud.rucloudru-s3-mcp-ai-cli诊断 Evolution Object Storage 的访问权限
Timeweb Cloudtimeweb-s3-mcp-ai-cli恢复归档并统计前缀大小
MWSmws-s3-mcp-ai-cli检查 HMAC 访问权限并生成归档短链接
Begetbeget-s3-mcp-ai-cli查看并恢复现有存储桶中的文件
Shared Go kits3-mcp-ai-cli-kit通用 MCP、CLI、防护和 CI

许可证

MIT。已核实的事实和假设。

Docker 中的检查:bash scripts/go.sh go test -race ./..., bash scripts/conformance.sh, bash scripts/mcp_smoke.sh, bash scripts/mutation_gate.sh, bash scripts/check_docs.sh。Conformance 使用 versitygw v1.8.0 和测试密钥。

通用 MCP/CLI、防护和检查由 s3-mcp-ai-cli-kit v0.1.0 提供;此仓库保留内置配置、精简的 main 和 Cloud.ru 文档。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。