Skip to main content
Glama
stufently

selectel-s3-mcp-ai-cli

Selectel S3 MCP Server & AI CLI

Status License

MCP-сервер и CLI для S3 Селектел (Selectel Object Storage): подключение к Claude Code, Cursor и Codex, просмотр бакетов, восстановление бэкапов и работа с файлами через Go-бинарь selectel-s3.

English guide · Каталог S3 MCP-серверов

English

A Go MCP server, CLI and agent skill for Selectel S3 Object Storage. Connect Claude Code, Cursor and Codex to scoped object storage for inspection and backup recovery. Six profile pools; tagging and lifecycle tools are disabled. See the full English guide.

Related MCP server: beget-s3-mcp-ai-cli

Возможности

  • Object CRUD, серверные copy/move, версии, multipart, presigned GET/PUT.

  • CORS, политика бакета и Object Lock configuration; регистрация по возможностям профиля.

  • Ограниченные сканы: крупные объекты, использование префиксов, брошенные загрузки.

  • Потоковый CLI, JSON, диагностика, установка MCP-конфигураций и встроенного skill.

Быстрый старт

Возьми бинарь своей платформы из Releases (v0.1.0 опубликован; есть в MCP Registry и Smithery) либо собери с Go 1.27.2:

go build -o selectel-s3 ./cmd/selectel-s3
./selectel-s3 version
./selectel-s3 auth set
./selectel-s3 auth status
./selectel-s3 ls --json

auth set спрашивает key ID и secret без эха; без TTY читает две строки stdin. Не передавай секрет в argv. Файл ~/.config/selectel-s3/credentials создаётся атомарно с 0600; более широкие права отклоняются.

Приоритет: флаги > env > файл. Переменные: SELECTEL_S3_ACCESS_KEY_ID, SELECTEL_S3_SECRET_ACCESS_KEY, SELECTEL_S3_POOL (ru-1), SELECTEL_S3_ENDPOINT. HTTP требует SELECTEL_S3_ALLOW_INSECURE=1.

Образ: ghcr.io/stufently/selectel-s3-mcp-ai-cli:0.1.0; локальная сборка: docker build -t selectel-s3 . Образ запускает MCP от uid 65532, содержит CA-сертификаты. Передай креды через приватное окружение/файл.

Подключение к Claude Code, Cursor, Codex

Add selectel-s3 MCP server to Cursor

Кнопка ставит MCP из Docker-образа ghcr.io/stufently/selectel-s3-mcp-ai-cli:0.1.0 в режиме только чтения. Ключи в конфиг не пишутся: Cursor подставляет ${env:…} из окружения, поэтому задай SELECTEL_S3_ACCESS_KEY_ID и SELECTEL_S3_SECRET_ACCESS_KEY там, откуда запускается Cursor; SELECTEL_S3_POOL — если бакет не в пуле по умолчанию (пустое значение = пул по умолчанию). Тот же блок — для Windsurf (mcp_config.json) и вручную для ~/.cursor/mcp.json:

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

Последняя команда только печатает claude mcp add. Путь бинаря абсолютный; ключи в конфиг не пишутся. Cursor: ~/.cursor/mcp.json, Claude Code project: ./.mcp.json; Desktop — каталог конфигурации своей ОС. JSON сохраняет чужие ключи, .bak и идемпотентность.

Codex: ~/.codex/config.toml. Существующая таблица требует --force; заменяется только блок между # >>> selectel-s3 (managed) / # <<< selectel-s3 (managed). Таблица без маркеров не заменяется даже с --force; остальные байты TOML целы.

Уровни включаются независимо: selectel-s3 mcp --allow-write --allow-delete --allow-admin либо SELECTEL_S3_ALLOW=write,delete,admin. Флаги доступны и в mcp install. FILE_ROOT включается через SELECTEL_S3_FILE_ROOT.

Инструменты MCP

Уровень

Инструменты

read

s3_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

read + FILE_ROOT

s3_download_file

write

s3_put_object, s3_create_folder, s3_copy_object, s3_presign_put, s3_multipart_create, s3_multipart_presign_part, s3_multipart_complete

write + FILE_ROOT

s3_upload_file

delete

s3_delete_object, s3_delete_objects, s3_multipart_abort

write + delete

s3_move_object

admin

s3_create_bucket, s3_put_bucket_versioning, s3_put_bucket_cors, s3_put_bucket_policy, s3_delete_bucket_policy, s3_put_object_lock_configuration

admin + delete

s3_delete_bucket

Теги у Selectel не регистрируются. Ресурсы: selectel-s3://config, selectel-s3://capabilities, selectel-s3://pools.

Списки — до 1000 элементов с continuation_token; версии/multipart имеют второй маркер. Inline get/put — 262144 байт, preview — 65536; большие файлы идут через presigned URL или FILE_ROOT. Ответ содержит structuredContent и JSON-текст; текст свыше 256 КиБ заменяется краткой сводкой. Ошибки: code/message/retryable; 429/503 SDK повторяет адаптивно.

Аналитика сканирует максимум max_scan (по умолчанию 10000); partial/token отмечают неполный результат. Prefix usage выдаёт страницы агрегатов через next_result_offset. Это не биллинг.

Сценарий: Выбор пула и восстановление резервных копий

Выберите пул существующего бакета и проверьте архив перед восстановлением. --pool меняет и endpoint, и регион подписи; для московского пула ru-6 пример выглядит так:

selectel-s3 --pool ru-6 ls backups/daily/ --json
selectel-s3 --pool ru-6 stat backups/daily/archive.tar
selectel-s3 --pool ru-6 cp s3://backups/daily/archive.tar ./restored-selectel.tar

Примеры используют существующий бакет backups и объект daily/archive.tar; замените их своими значениями. Профиль и API облака ещё требуют живой проверки.

CLI

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

cp принимает обычные локальные пути и S3 URI s3://bucket/key либо selectel-s3://bucket/key. Большие загрузки используют manager/multipart, --recursive копирует каталоги/префиксы. Перезапись требует --overwrite и подтверждения; выгрузка атомарна. rm/rb/mv без --yes на не-TTY дают код 2; на TTY спрашивают. --json общий, ошибки — stderr и ненулевой код.

doctor проверяет источник/права кредов, DNS/TLS, часы по Date и ListBuckets: >5 минут — предупреждение, >15 — ошибка.

Skill для AI-агентов

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

По умолчанию ~/.claude/skills/selectel-s3. Идемпотентно устанавливает SKILL.md и шесть references: backup/restore, share, least privilege, cost hygiene, migration, incident response. Триггеры: «selectel s3», «бакет селектел», «загрузи в s3», «presigned», «бэкап в s3».

Безопасность

MCP по умолчанию регистрирует только read; неподдерживаемые возможности и отсутствующие уровни исключают инструмент.

SELECTEL_S3_DESTRUCTIVE_POLICY: confirm использует elicitation при поддержке клиента, иначе нужен confirm:true после согласия человека; elicit требует elicitation и не допускает обхода confirm:true; block всегда запрещает, allow выполняет без гейта. Отказ предшествует любым S3-запросам. Гейт покрывает удаления, move, presigned PUT, политику/Object Lock, suspension versioning и перезаписи.

put/copy/move/multipart complete/upload file по умолчанию имеют overwrite:false: HEAD цели и If-None-Match: *. overwrite:true требует тот же гейт.

Скоуп: SELECTEL_S3_ALLOWED_BUCKETS=backups и SELECTEL_S3_ALLOWED_PREFIXES=backups/daily/. Префикс учитывает границу сегмента; daily-evil не подходит. Сегменты '..' отклоняются. Частичный скоуп запрещает целый бакет и широкие списки даже при наличии его в ALLOWED_BUCKETS. Copy/move проверяет источник и цель.

Файловые MCP-инструменты используют os.Root: только относительные пути внутри FILE_ROOT; '..', абсолютные пути и симлинки наружу отклоняются. На каждый вызов одна JSON-строка в stderr; SELECTEL_S3_AUDIT_FILE дополнительно пишет в 0600. Секреты и X-Amz-Signature/Credential/Security-Token редактируются в логах/ошибках. Полная подписанная ссылка — только результат операции. Ограничивай также права самого S3-ключа.

s3_download_file по умолчанию публикует скачанный файл без замены существующего, в том числе созданного во время скачивания. Для замены передай overwrite:true: применяется разрушительная политика с подтверждением через форму либо confirm:true после согласия человека.

Пулы и классы хранения Selectel

ru-1 и ru-3 — Санкт-Петербург; ru-6 (Multi-AZ), ru-7, gis-1 (изолированный ГИС) — Москва; uz-2 — Узбекистан. Регион SigV4 равен пулу; path-style по умолчанию. Эндпоинты и совместимость.

Стандартное, холодное, ледяное; ледяное только ru-3. Класс выбирается в панели при создании и потом не меняется; create_bucket не принимает класс. Цены от 2,56 / 1,25 / 0,89 ₽/ГБ·мес — непроверенная сводка владельца за 2026-10. Максимум presigned 604800 секунд тоже не подтверждён; документация говорит о 15 минутах срока подписи запроса.

Объект до 50 ТБ, один PUT до 5 ГБ, multipart до 10000 частей. На бакет запросов/с: всего 2000, GET+HEAD 1000, POST 200, PUT и DELETE по 300; превышение даёт 429. TTL задаётся в панели и применяется к новым объектам.

FAQ

Как выбрать регион Selectel S3 для MCP? Укажите SELECTEL_S3_POOL или флаг --pool с идентификатором из таблицы совместимости. Пул должен совпадать с пулом вашего бакета; ru-1 — значение по умолчанию.

Можно ли настроить lifecycle и теги Селектел через этот MCP-сервер? В профиле проекта эти возможности выключены, поэтому соответствующие инструменты не регистрируются. Настройки TTL через панель описаны в ресерче Selectel.

Как восстановить бэкап из Selectel S3? Используйте stat, затем cp s3://bucket/key ./new-file. CLI скачивает потоково и публикует локальный файл атомарно; новый путь позволяет избежать замены существующего архива.

Что такое MCP-сервер? Программа предоставляет агентам инструменты и ресурсы через Model Context Protocol; здесь stdio.

Как подключить MCP-сервер к Claude Code? Сохрани ключи auth set, затем используй project install либо напечатанную user-команду.

Безопасно ли давать агенту доступ к S3? Ограничь ключи, скоуп и уровни; сохрани confirm/block и одобряй разрушительные эффекты осознанно.

Чем это отличается от aws-cli и rclone? Бинарь объединяет MCP, гейт, аудит, аналитику, skill и CLI; aws-cli/rclone остаются самостоятельными средствами передачи/автоматизации.

Почему нет lifecycle и тегов? Selectel S3 API их не поддерживает. TTL новых объектов — в панели; теги исключены профилем.

Другие провайдеры

Общий каталог: MCP-серверы и CLI для российских S3.

Провайдер

Репозиторий

Сценарий

Selectel

selectel-s3-mcp-ai-cli

Выбор пула и восстановление резервных копий

Yandex Cloud

yandex-s3-mcp-ai-cli

Инвентаризация объектов и проверка версий бэкапов

VK Cloud

vkcloud-s3-mcp-ai-cli

Проверка Hotbox/Icebox и доступ к нужному региону

Cloud.ru

cloudru-s3-mcp-ai-cli

Диагностика доступа к Evolution Object Storage

Timeweb Cloud

timeweb-s3-mcp-ai-cli

Восстановление архивов и учёт объёма префикса

MWS

mws-s3-mcp-ai-cli

Проверка HMAC-доступа и короткие ссылки на архивы

Beget

beget-s3-mcp-ai-cli

Просмотр и восстановление файлов из готового бакета

Shared Go kit

s3-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 и документы Selectel.

Available Tools

13 tools
s3_get_bucket_configB

Read location, versioning, CORS, policy and Object Lock; report absent/unsupported configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses one behavioral trait: absent or unsupported configuration is reported rather than erroring. It does not state that it is read-only, what permissions are required, or that it likely fans out into several underlying API calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the verb first and no filler. It is appropriately sized, though the trailing clause about absent configs could be seen as slightly compressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should ideally sketch the shape of the multi-domain response; it only notes the absent/unsupported handling. Adequate but leaves the return structure and the bucket parameter unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single 'bucket' parameter is never mentioned, described, or exemplified in the description. For a tool whose only input is a bucket identifier, the description adds no meaning about format or required identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource ('Read ... bucket config') and it enumerates the exact configuration domains fetched: location, versioning, CORS, policy, Object Lock. This implicitly separates it from the object-oriented siblings (s3_get_object, s3_head_object, etc.), though it never explicitly names an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to reach for this tool versus the many s3_list_* / s3_get_object variants. The agent must infer that this is the bucket-level inspection call. No prerequisites or exclusion conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_get_objectA

Read at most 262144 bytes inline as text/base64; use presign for larger objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
encodingNo
max_bytesNo
version_idNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does disclose two meaningful traits: a hard 262144-byte truncation cap and that content is returned as text or base64. It omits permission requirements, error behavior for missing keys, and whether truncated output is flagged, leaving real gaps for a read tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the size constraint and output format front-loaded, followed immediately by the routing alternative. No filler; every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with no annotations and no output schema, the description covers the essential size/encoding behavior but leaves key gaps: version_id handling, truncation signaling, and failure modes. Adequate to call the tool, not complete for an agent to do so confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with 5 parameters, so the description must compensate. It partially does: the byte cap implies max_bytes and 'text/base64' implies encoding, but version_id is never mentioned and its semantics are undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (read an S3 object) plus a concrete scope for the operation (at most 262144 bytes, inline as text/base64). It explicitly distinguishes itself from s3_presign_get, but says nothing about how it differs from near-neighbors like s3_head_object or s3_preview_object, so the differentiation is partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not condition ('use presign for larger objects') and names the alternative tool, which is exactly the routing decision an agent needs. It stops short of a full when/when-not picture because it never addresses metadata-only (s3_head_object) or preview (s3_preview_object) use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_head_objectC

Read object metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
version_idNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose that no object body is returned, whether permissions/403 errors are common, whether a version_id is required for non-current versions, or what metadata fields come back. Only the implied read-only nature of 'Read' is conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler, which is structurally clean. But brevity here tips into under-specification: the sentence is too small to carry the tool's semantics rather than genuinely efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter coverage, an agent lacks everything it needs to call this correctly. Details on version_id usage, the metadata-only return, and error conditions are all missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and does not. The three parameters (bucket, key, version_id) are only inferable from their names; the description adds no meaning, format, or requirement details beyond the schema property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

'Read object metadata' names a specific verb (read) and resource (object metadata), which is clearer than a tautology. However, it does not differentiate from close siblings like s3_get_object or s3_get_object_tagging, so an agent can't tell from the text alone why HEAD-style metadata retrieval is the right pick over a full GET.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as s3_get_object (content) or s3_get_object_tagging (tags). The distinction only surfaces semantically if the agent already knows S3 HEAD semantics; the description never states it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_largest_objectsC

Bounded largest objects scan, default max_scan 10000; partial results carry continuation token.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
bucketYes
prefixNo
max_scanNo
continuation_tokenNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses bounded scanning, default max_scan=10000, and that partial results carry a continuation token. However, it omits read-only nature, permissions, cost/latency implications, and whether max_scan counts objects or bytes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single compact sentence, front-loaded with the core operation and key constraint. No fluff, but its brevity comes at the cost of missing parameter and usage detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter scan with no annotations or output schema, the description is too thin. It omits the roles of bucket, prefix, and limit, the relationship between limit and max_scan, how 'largest' is defined or ordered, and what the response contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 5 parameters. The description only addresses max_scan and continuation_token, leaving bucket, prefix, and limit undefined, and does not clarify how limit differs from max_scan.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific operation (scan for largest objects) and a key constraint (bounded with default max_scan). It does not differentiate from siblings like s3_list_objects or s3_prefix_usage, which also enumerate bucket contents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this over s3_list_objects or s3_prefix_usage, nor any prerequisites. The default max_scan and continuation token are parameter behavior, not selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_list_bucketsB

List visible buckets with pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_keysNo
continuation_tokenNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses 'visible' buckets and pagination, which adds useful context beyond the schema, but omits auth requirements, return format, and whether visibility is account-scoped or permission-scoped.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no waste, front-loading the action and resource. It is appropriately sized for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and zero schema description coverage on 2 parameters, the description is minimal. It leaves parameter meaning, return shape, and pagination mechanics unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description mentions only 'pagination', which loosely corresponds to max_keys and continuation_token. It does not explain the relationship between the parameters or their syntax, leaving most semantics undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: listing buckets. It is distinguishable from siblings like s3_list_objects or s3_list_object_versions by the resource 'buckets'. However, it doesn't call out the distinction explicitly, so an agent must infer it from the resource name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mention of 'visible' and 'pagination' implies usage context, but no explicit when-to-use, when-not-to-use, or sibling alternatives are given. An agent gets a weak signal without direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_list_multipart_uploadsC

List unfinished uploads; pass both returned markers.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_keysNo
upload_idNo
continuation_tokenNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It hints that results are paginated via markers, but does not state read-only safety, required permissions, whether results are scoped by bucket/prefix, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two terse, front-loaded clauses with no padding. It is appropriately sized for a short definition, though the second clause is too compressed to be useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter coverage across 5 parameters, the description is far too thin for the complexity. An agent cannot determine filtering behavior, permission needs, or return shape from this text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 5 parameters, so the description must compensate and largely does not. The cryptic phrase "both returned markers" ambiguously gestures at continuation_token/upload_id while bucket, prefix, and max_keys remain completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ("List unfinished uploads"), which is better than a tautology. However, it does not differentiate from near-duplicate siblings such as s3_list_parts and s3_unfinished_uploads, leaving the agent to guess which is appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is "pass both returned markers," which is a pagination instruction rather than a when-to-use rule. There is no indication of when this is preferable to s3_list_parts or s3_unfinished_uploads, nor any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_list_objectsC

List a scoped prefix, at most 1000 objects per page.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_keysNo
continuation_tokenNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses a page limit of 1000 objects and implies pagination, but doesn't explain that continuation_token is used for pagination, what happens when no prefix is given, or any permissions or rate limits. This is insufficient for a tool with four parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, though it could benefit from being more front-loaded with essential information about pagination.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four parameters, no annotations, and no output schema, the description is too sparse. It fails to explain pagination, the role of continuation_token, or how to correctly scope the listing, leaving an agent likely to misuse the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only mentions 'scoped prefix' and '1000 objects per page', which loosely maps to prefix and max_keys, but provides no meaning for bucket or continuation_token, leaving critical parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the operation (list) and the resource (objects under a scoped prefix), and mentions a page limit of 1000. However, it doesn't clearly distinguish itself from sibling list tools like s3_list_object_versions or s3_list_parts, and lacks explicit S3 context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as s3_prefix_usage or s3_largest_objects. The mention of a 'scoped prefix' implies usage but doesn't specify when or why to choose this over other listing methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_list_object_versionsC

List versions and delete markers with both pagination markers.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_keysNo
version_markerNo
continuation_tokenNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It reveals that delete markers are surfaced (a useful behavioral trait), but says nothing about permissions, ordering, how to iterate pages, or cost/rate characteristics of a versioned listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight, front-loaded sentence with no waste. It is slightly cryptic ('both pagination markers' rather than naming the markers), but efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter listing tool with no annotations and no output schema, the description is far too thin. It does not compensate for the absent parameter documentation or explain the pagination loop an agent must run.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters. The phrase 'both pagination markers' obliquely gestures at version_marker and continuation_token, but bucket, prefix, and max_keys are undocumented, and the description gives no syntax or semantics for any of them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (object versions), and adds the notable scope detail that delete markers are included. This implicitly distinguishes it from s3_list_objects, which lists only current objects, though the sibling is never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives like s3_list_objects or s3_list_multipart_uploads. The agent must infer that this is the versioned-listing variant purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_list_partsD

List multipart parts.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
max_keysNo
upload_idYes
continuation_tokenNo

TDQS

D1.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: no pagination behavior, no note that results are only meaningful for an active upload, no auth/permission requirements, no error semantics for expired upload IDs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is short but that brevity reflects under-specification rather than economy. There is no structure, no front-loaded context, and nothing to help an agent act correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 5 completely undocumented parameters, the definition is inadequate for an agent to invoke this tool correctly. It fails to convey required inputs' meaning or expected return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters (bucket, key, upload_id, max_keys, continuation_token), and the description adds no meaning for any of them. Notably, it never explains that upload_id identifies the upload whose parts are being listed, nor how max_keys/continuation_token drive pagination.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List multipart parts' essentially restates the tool name (s3_list_parts) without adding distinguishing detail. It does not clarify that these are parts belonging to a single in-progress multipart upload, which is the key distinction from the sibling s3_list_multipart_uploads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance whatsoever on when to use this tool, what prerequisites exist (a valid upload_id from an in-progress multipart upload), or how it relates to s3_list_multipart_uploads and s3_unfinished_uploads.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_prefix_usageC

Bounded usage by first-level prefixes; paginate aggregate rows with next_result_offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_scanNo
result_offsetNo
continuation_tokenNo

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, and it delivers very little. "Bounded" implies scan limits via max_scan and "paginate" implies a paged result set, but the description never states what the bound is, what permissions are needed, whether the operation is a read or a scan with cost implications, or what the aggregate rows contain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the scoping idea and followed by the pagination note; there is no filler. It is appropriately brief, though brevity here borders on under-specification rather than discipline.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter tool with zero schema descriptions, no annotations, and no output schema, the description leaves critical gaps: it never explains what "usage" is, how the aggregate is computed, why the scan is bounded, or how pagination terminates. An agent cannot confidently invoke this from the definition alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across five parameters (bucket, prefix, max_scan, result_offset, continuation_token), so the description is required to compensate and does not. Worse, it directs the agent to paginate with "next_result_offset," a name that does not exist in the schema, where the pagination fields are result_offset and continuation_token — a misleading reference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase "usage by first-level prefixes" largely restates the tool name, s3_prefix_usage, without defining what "usage" actually measures (storage bytes, object counts, request volume). It does hint at aggregation grouped by top-level prefixes, but there is no clear verb and no differentiation from siblings such as s3_largest_objects that also report size-oriented data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over the other thirteen s3_* siblings, nor any stated preconditions or exclusions. The only procedural hint is that aggregate rows are paginated, which is mechanics rather than routing context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_presign_getC

Create signed GET URL; default 3600 seconds, provider maximum is unverified.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
version_idNo
expires_secondsNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full burden, and it does disclose two real behaviors: the default expiry is 3600 seconds and the provider's maximum is unverified. What it omits is significant for a credential-issuing tool — that the returned URL grants temporary anonymous access, which credentials/permits are needed to sign, and whether the URL is reusable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact clause plus a semicolon-joined caveat; nothing is padded and the core action is front-loaded. It is terse to the point of under-specification, but that is a completeness problem rather than a verbosity one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% schema coverage, the description should carry more. It never states what is returned (a URL string), what expiry bounds are valid, or what permission the caller needs to sign the URL, so an agent cannot reliably invoke it without prior S3 knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 4 parameters. The description supplies a default for expires_seconds (3600) that the schema does not encode, which is genuine added value, but bucket, key, and version_id receive no explanatory text anywhere, leaving the majority of parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact: 'Create signed GET URL'. This clearly separates it from siblings like s3_get_object (which returns object bytes) and the many s3_list_* / s3_get_*_config tools. It stops short of naming the resource (an S3 object identified by bucket/key), so it isn't a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use presigning versus just fetching the object with s3_get_object, nor any note about handing the URL to an external party or credential requirements. The agent must infer the use case entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_preview_objectC

Preview first at most 65536 bytes, detected type and CSV header.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bucketYes
encodingNo
max_bytesNo
version_idNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses important traits such as the byte cap (65536) and partial-read behavior, and it mentions return content (detected type, CSV header). However, it omits read-only confirmation, permissions, side effects, error behavior, and rate/cost context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. It is appropriately sized for the description's scope, even though the content itself is sparse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters, no output schema, and no annotations, the description is too sparse. It gives some return information but omits parameter semantics, access requirements, and operational constraints, leaving an agent under-informed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are five parameters, yet the description explains none of them. It mentions '65536 bytes' and 'CSV header' but does not map these to max_bytes, encoding, bucket, key, or version_id, so it fails to compensate for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('preview') and resource ('object' via name), plus the scope ('first at most 65536 bytes') and return content ('detected type and CSV header'). It is clear enough to distinguish it from full-object retrieval, but it does not explicitly name or route against siblings like s3_get_object or s3_head_object.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus s3_get_object, s3_head_object, or other siblings. The word 'preview' implies a use case, but there are no explicit conditions, exclusions, or alternatives stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

s3_unfinished_uploadsC

Find uploads older than N hours (default 24), bounded by max_scan.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYes
prefixNo
max_scanNo
upload_idNo
older_than_hoursNo
continuation_tokenNo

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It does disclose one meaningful behavior not present in the schema: the scan is 'bounded by max_scan', implying results may be truncated. It says nothing about read-only safety, permissions, or how partial results are signalled, which leaves real gaps for a 6-parameter tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, and the core scoping detail (older than N hours) is front-loaded. It is efficient, though arguably too terse for a six-parameter tool, which shows up as a completeness gap rather than verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and six parameters, the description should explain what is returned (list of uploads and which fields), how pagination via continuation_token works, and how this differs from s3_list_multipart_uploads. None of that is present, leaving the agent under-informed for a non-trivial tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds genuine meaning for the two least obvious parameters (older_than_hours default of 24, and max_scan as a scan bound), but leaves bucket, prefix, upload_id, and continuation_token entirely undocumented, so compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Find' plus 'uploads older than N hours' gives a rough idea, and the name says 'unfinished uploads', so the agent can infer this surfaces stale/incomplete multipart uploads. However, the description never actually says 'multipart' or what makes an upload 'unfinished', and it does not differentiate from the sibling s3_list_multipart_uploads, which appears to overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of when not to use it, and no reference to the obvious alternative s3_list_multipart_uploads. The only contextual hint is the default threshold, which is a parameter detail rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.1.0
    • First observeds3_get_bucket_config
    • First observeds3_get_object
    • First observeds3_head_object
    • First observeds3_largest_objects
    • First observeds3_list_buckets
    • First observeds3_list_multipart_uploads
    • First observeds3_list_object_versions
    • First observeds3_list_objects
    • First observeds3_list_parts
    • First observeds3_prefix_usage
    • First observeds3_presign_get
    • First observeds3_preview_object
    • First observeds3_unfinished_uploads

TDQS

C2.8/5.0

Scored across 13 tools

Disambiguation4/5

Each tool targets a distinct S3 operation and resources are mostly unambiguous. However, s3_list_multipart_uploads and s3_unfinished_uploads overlap significantly in purpose, and s3_get_object / s3_head_object / s3_preview_object all read objects, which could cause confusion.

Naming Consistency5/5

All tool names follow a consistent s3_verb_noun (or s3_noun_metric) snake_case pattern: s3_list_objects, s3_get_object, s3_presign_get, etc. Predictable and easy to infer.

Tool Count5/5

13 tools for a full S3 server is well-scoped, each covering a distinct S3 capability (listing, config, objects, multipart, presign, usage). No tool feels redundant or superfluous.

Completeness4/5

Strong read/analysis coverage: buckets, objects, versions, multipart, config, presign. Missing write/mutation operations (PUT object, delete, copy) that an S3 server would typically expose, but as a CLI read/diagnostic tool the surface is largely coherent.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for uploading, listing, and retrieving files on S3-compatible storage (AWS S3, DigitalOcean Spaces) with public/private access and temporary URLs.
    4
    5 npm
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Beget S3 MCP server and Go CLI: browse, preview and restore files in a bucket. Read-only by default; write, delete and admin tools only behind switches, destructive calls confirmed by a person.
    10
    1
    MIT