mcpField
V
vkcloud-s3-mcp-ai-cli

vkcloud-s3-mcp-ai-cli

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

关于 vkcloud-s3-mcp-ai-cli

vkcloud-s3-mcp-ai-cli 是面向 VK Cloud S3 的 Go MCP 服务、CLI 和 Agent 技能,可连接 Hotbox/Icebox 存储,供对象检查与备份恢复使用。它默认只读,按能力注册工具,并提供存储池选择、范围访问和破坏操作的人为确认。

主要功能

  1. 01对象增删改查、复制和分段传输
  2. 02版本、对象标签与预签名 URL
  3. 03受限扫描与前缀用量分析
  4. 04Hotbox/Icebox 存储池配置
  5. 05CLI、诊断和 Agent 技能安装
  6. 06范围访问和破坏操作确认

适用场景

  1. 01检查 VK Cloud S3 对象及元数据
  2. 02选择对应存储池检查备份
  3. 03统计前缀用量并生成归档链接
  4. 04限制 Agent 的存储访问和破坏操作

MCP 相关

向 MCP 客户端提供 S3 工具及配置、能力、存储池资源。默认只注册读取工具,其他操作依权限级别和服务能力启用;支持范围限制及破坏性操作确认。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"stufently-vkcloud-s3-mcp-ai-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"VKCLOUD_S3_ACCESS_KEY_ID",
"-e",
"VKCLOUD_S3_SECRET_ACCESS_KEY",
"-e",
"VKCLOUD_S3_POOL",
"-e",
"VKCLOUD_S3_ENDPOINT",
"-e",
"VKCLOUD_S3_ALLOW_INSECURE",
"-e",
"VKCLOUD_S3_ALLOW",
"-e",
"VKCLOUD_S3_DESTRUCTIVE_POLICY",
"-e",
"VKCLOUD_S3_ALLOWED_BUCKETS",
"-e",
"VKCLOUD_S3_ALLOWED_PREFIXES",
"-e",
"VKCLOUD_S3_FILE_ROOT",
"-e",
"VKCLOUD_S3_AUDIT_FILE",
"ghcr.io/stufently/vkcloud-s3-mcp-ai-cli:0.1.0"
],
"env": {
"VKCLOUD_S3_ACCESS_KEY_ID": "<VKCLOUD_S3_ACCESS_KEY_ID>",
"VKCLOUD_S3_SECRET_ACCESS_KEY": "<VKCLOUD_S3_SECRET_ACCESS_KEY>",
"VKCLOUD_S3_POOL": "<VKCLOUD_S3_POOL>",
"VKCLOUD_S3_ENDPOINT": "<VKCLOUD_S3_ENDPOINT>",
"VKCLOUD_S3_ALLOW_INSECURE": "<VKCLOUD_S3_ALLOW_INSECURE>",
"VKCLOUD_S3_ALLOW": "<VKCLOUD_S3_ALLOW>",
"VKCLOUD_S3_DESTRUCTIVE_POLICY": "<VKCLOUD_S3_DESTRUCTIVE_POLICY>",
"VKCLOUD_S3_ALLOWED_BUCKETS": "<VKCLOUD_S3_ALLOWED_BUCKETS>",
"VKCLOUD_S3_ALLOWED_PREFIXES": "<VKCLOUD_S3_ALLOWED_PREFIXES>",
"VKCLOUD_S3_FILE_ROOT": "<VKCLOUD_S3_FILE_ROOT>",
"VKCLOUD_S3_AUDIT_FILE": "<VKCLOUD_S3_AUDIT_FILE>"
}
}
}
}
启动命令docker run -i --rm -e VKCLOUD_S3_ACCESS_KEY_ID -e VKCLOUD_S3_SECRET_ACCESS_KEY -e VKCLOUD_S3_POOL -e VKCLOUD_S3_ENDPOINT -e VKCLOUD_S3_ALLOW_INSECURE -e VKCLOUD_S3_ALLOW -e VKCLOUD_S3_DESTRUCTIVE_POLICY -e VKCLOUD_S3_ALLOWED_BUCKETS -e VKCLOUD_S3_ALLOWED_PREFIXES -e VKCLOUD_S3_FILE_ROOT -e VKCLOUD_S3_AUDIT_FILE ghcr.io/stufently/vkcloud-s3-mcp-ai-cli:0.1.0
需要配置的环境变量
VKCLOUD_S3_ACCESS_KEY_ID密钥S3 access key ID
VKCLOUD_S3_SECRET_ACCESS_KEY密钥S3 secret access key
VKCLOUD_S3_POOLSigning pool
VKCLOUD_S3_ENDPOINTOptional endpoint override
VKCLOUD_S3_ALLOW_INSECURESet 1 only for explicit HTTP test endpoints
VKCLOUD_S3_ALLOWIndependent write,delete,admin levels; read only by default
VKCLOUD_S3_DESTRUCTIVE_POLICY
VKCLOUD_S3_ALLOWED_BUCKETSComma-separated bucket scope
VKCLOUD_S3_ALLOWED_PREFIXESComma-separated bucket/prefix/ scope
VKCLOUD_S3_FILE_ROOTOptional confined local file root
VKCLOUD_S3_AUDIT_FILEOptional private append-only audit output

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

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

工具

还没有获取到工具列表

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

详细介绍

VK Cloud S3 MCP 服务与 AI CLI

Status License

用于 VK Cloud(ВК Облако)S3 的 MCP 服务和 CLI:将 Hotbox/Icebox 连接到 Claude Code、Cursor 和 Codex,以查看对象并下载备份。二进制文件 vkcloud-s3 使用独立的云功能配置文件。

English guide · S3 MCP 服务目录

English

用于 VK Cloud S3 Object Storage 的 Go MCP 服务、CLI 和 Agent 技能。将 Claude Code、Cursor 和 Codex 连接到受限的对象存储,以便查看和恢复备份。支持 ru-msk 和 kz-ast 池;不支持存储桶标记。请参阅完整的英文指南。

快速开始

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

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

auth set 会在不回显的情况下询问 key ID 和 secret;没有 TTY 时会从 stdin 读取两行。不要将 secret 作为 argv 传递。文件 ~/.config/vkcloud-s3/credentials 会以 0600 权限原子创建;权限更宽松的文件将被拒绝。

优先级:标志 > env > 文件。环境变量:VKCLOUD_S3_ACCESS_KEY_ID、VKCLOUD_S3_SECRET_ACCESS_KEY、VKCLOUD_S3_POOL(ru-msk)、VKCLOUD_S3_ENDPOINT。HTTP 需要设置 VKCLOUD_S3_ALLOW_INSECURE=1。

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

功能

  • 在配置文件限定的范围内,支持流式 object CRUD、copy、multipart 和 presigned URL。
  • 如果受支持,则注册版本、标签、CORS、策略和 Object Lock configuration。
  • 支持受限扫描、诊断、JSON、MCP 安装和内置 skill 安装。

连接到 Claude Code、Cursor、Codex

Add vkcloud-s3 MCP server to Cursor

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

{
  "mcpServers": {
    "vkcloud-s3": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "VKCLOUD_S3_ACCESS_KEY_ID",
        "-e",
        "VKCLOUD_S3_SECRET_ACCESS_KEY",
        "-e",
        "VKCLOUD_S3_POOL",
        "ghcr.io/stufently/vkcloud-s3-mcp-ai-cli:0.1.0"
      ],
      "env": {
        "VKCLOUD_S3_ACCESS_KEY_ID": "${env:VKCLOUD_S3_ACCESS_KEY_ID}",
        "VKCLOUD_S3_SECRET_ACCESS_KEY": "${env:VKCLOUD_S3_SECRET_ACCESS_KEY}",
        "VKCLOUD_S3_POOL": "${env:VKCLOUD_S3_POOL}"
      }
    }
  }
}
vkcloud-s3 mcp install --client cursor --dry-run
vkcloud-s3 mcp install --client cursor
vkcloud-s3 mcp install --client claude-desktop
vkcloud-s3 mcp install --client codex
vkcloud-s3 mcp install --client claude-code --scope project
vkcloud-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;只替换 # >>> vkcloud-s3 (managed) / # <<< vkcloud-s3 (managed) 之间的区块。没有标记的表格即使使用 --force 也不会被替换;TOML 的其他字节保持不变。

各级权限可独立启用:vkcloud-s3 mcp --allow-write --allow-delete --allow-admin 或 VKCLOUD_S3_ALLOW=write,delete,admin。mcp install 也支持这些标志。通过 VKCLOUD_S3_FILE_ROOT 启用 FILE_ROOT。

MCP 工具

LevelTools
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

资源:vkcloud-s3://config、vkcloud-s3://capabilities、vkcloud-s3://pools。不支持的能力对应的工具将被排除。

列表最多包含 1000 个项目,并使用 continuation_token;版本/multipart 还会使用第二个标记。Inline get/put 上限为 262144 字节,preview 上限为 65536 字节;大文件通过 presigned URL 或 FILE_ROOT 处理。响应包含 structuredContent 和 JSON 文本;超过 256 KiB 的文本会替换为简要摘要。错误包含 code/message/retryable;遇到 429/503 时,SDK 会自适应重试。

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

场景:检查 Hotbox/Icebox 并访问所需区域

配置文件包含莫斯科 ru-msk 和哈萨克斯坦 kz-ast 存储池。选择存储桶所在的存储池,检查 Hotbox/Icebox 元数据,并创建一个短链接以分享现有归档:

vkcloud-s3 --pool ru-msk stat backups/daily/archive.tar
vkcloud-s3 --pool ru-msk du backups/daily/ --max-scan 10000 --json
vkcloud-s3 --pool ru-msk presign backups/daily/archive.tar --expires 3600

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

CLI

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

cp 接受普通本地路径和 S3 URI:s3://bucket/key 或 vkcloud-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 技能

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

默认安装在 ~/.claude/skills/vkcloud-s3。幂等安装 SKILL.md 和六个 references:backup/restore、share、least privilege、cost hygiene、migration、incident response。触发词:「vkcloud s3」、「VK Cloud 存储桶」、「上传到 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;不支持的功能和缺失的级别会排除相应工具。

VKCLOUD_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 需要经过同一门控。

作用范围:VKCLOUD_S3_ALLOWED_BUCKETS=backups 和 VKCLOUD_S3_ALLOWED_PREFIXES=backups/daily/。前缀会考虑路径段边界;daily-evil 不匹配。路径段 '..' 会被拒绝。部分范围会禁止访问整个存储桶和宽泛列表,即使该存储桶列在 ALLOWED_BUCKETS 中也是如此。Copy/move 会检查来源和目标。

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

s3_download_file 默认会发布下载的文件,不覆盖现有文件,包括下载期间创建的文件。要进行覆盖,请传入 overwrite:true:系统会应用破坏性操作策略,并通过表单确认,或在人类同意后设置 confirm:true。

VK Cloud 存储池和存储类别

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

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

常见问题

如何选择 VK Cloud S3 endpoint? 使用 VKCLOUD_S3_POOL=ru-msk 或 kz-ast;对应的 endpoint 取自兼容性配置。不要更改签名区域,使其与所选服务不一致。

此项目支持 Hotbox 和 Icebox 吗? 这两个存储类别在配置中分别表示为 STANDARD 和 STANDARD_IA。配置中包含某个类别,并不意味着 CLI 会自动在类别之间转换对象;详情和价格请参阅 VK Cloud 调研。

可以通过 MCP 更改 VK Cloud 存储桶标签吗? bucket_tagging 已关闭;对象标签工具和存储桶标签工具不能互换。请检查 vkcloud-s3://capabilities 和下方的工具表。

什么是 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 和 兼容性。工具根据配置注册;此版本无法配置 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 和 VK Cloud 文档。

评论

支持 Markdown

第一次接触 MCP?

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

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