Bucket Helper
БесплатноНе проверенProvides MCP tools for AWS S3 and S3-compatible storage, enabling file upload, download, listing, deletion, and temporary remote file staging via natural langua
Описание
Provides MCP tools for AWS S3 and S3-compatible storage, enabling file upload, download, listing, deletion, and temporary remote file staging via natural language.
README
CI License: BSD-3-Clause Python
Bucket Helper belongs to a collection of libraries called AI Helpers developed for building Artificial Intelligence.
Utility functions for AWS S3 and any S3-compatible object storage — MinIO, Backblaze B2 S3 API, DigitalOcean Spaces, Cloudflare R2, Wasabi, and friends. Built on boto3. Same shape as sftp-helper: a credentials() loader, the usual CRUD (upload / download / delete / exists / list_prefix), and a remote_tempfile context manager for stage-and-share flows.
Documentation
Installation
Prerequisites — Python 3.10–3.13 and git, cross-platform:
- 🍎 macOS (Homebrew):
brew install python git - 🐧 Ubuntu/Debian:
sudo apt update && sudo apt install -y python3 python3-pip git - 🪟 Windows (PowerShell):
winget install Python.Python.3.12 Git.Git
We recommend using Python environments. Check this link if you're unfamiliar with setting one up: 🥸 Tech tips.
From PyPI (recommended)
# Core library (credentials loader + CRUD + remote_tempfile)
pip install bucket-helper
# Optional surfaces
pip install "bucket-helper[cli]" # click-based CLI twin
pip install "bucket-helper[api]" # FastAPI HTTP surface
pip install "bucket-helper[api,mcp]" # MCP tools over FastAPI
From source (no PyPI)
# Core library
pip install "git+https://github.com/warith-harchaoui/[email protected]"
# Optional surfaces
pip install "bucket-helper[cli] @ git+https://github.com/warith-harchaoui/[email protected]"
pip install "bucket-helper[api] @ git+https://github.com/warith-harchaoui/[email protected]"
pip install "bucket-helper[api,mcp] @ git+https://github.com/warith-harchaoui/[email protected]"
The argparse CLI is always available. The [cli] extra adds the click twin.
Configuration
A ready-to-fill template is committed at s3_config.json.example. Copy it to s3_config.json and edit in place — real *config.json files are gitignored so you cannot accidentally commit secrets:
cp s3_config.json.example s3_config.json
# then edit s3_config.json with your AWS / MinIO / R2 / B2 credentials
You may also write a s3_config.yaml, use a .env, or set environment variables — bucket-helper falls back in that order via os_helper.get_config. Required keys:
{
"s3_access_key": "AKIA...",
"s3_secret_key": "...",
"s3_bucket": "my-bucket",
"s3_https": "https://my-bucket.s3.eu-west-3.amazonaws.com"
}
Optional keys:
| Key | Default | Notes |
|---|---|---|
s3_region |
"us-east-1" |
AWS region; mostly cosmetic for MinIO / R2 |
s3_endpoint_url |
empty (= AWS S3) | Set this for S3-compatible backends — see table below |
s3_prefix |
empty | Default key prefix added by upload(...) when no destination is given |
s3_use_path_style |
"false" |
Force path-style addressing (endpoint/bucket/key instead of bucket.endpoint/key). Typical for MinIO with custom domains. |
s3_verify_ssl |
"true" |
Disable only for dev MinIO with self-signed certs |
Endpoint URLs for common S3-compatible storage
Set s3_endpoint_url to:
| Provider | Endpoint |
|---|---|
| AWS S3 | leave empty / unset |
| MinIO | http://minio.example.com:9000 (or https://... with TLS) |
| DigitalOcean Spaces | https://nyc3.digitaloceanspaces.com (region in subdomain) |
| Cloudflare R2 | https://<account_id>.r2.cloudflarestorage.com |
| Backblaze B2 (S3 API) | https://s3.<region>.backblazeb2.com |
| Wasabi | https://s3.<region>.wasabisys.com |
Usage
For the full catalog of recipes (uploads / downloads / listings, S3-compatible endpoints — MinIO / R2 / B2 / Spaces / Wasabi, temporary remote keys with auto-cleanup, mirroring with sftp-helper), see 📋 EXAMPLES.md.
import bucket_helper as bh
# Load creds — JSON / YAML / env / .env (auto-fallback in that order)
cred = bh.credentials("path/to/s3_config.json")
# Upload a local file
uri = bh.upload("local.txt", cred, "folder/uploaded.txt")
# uri == "s3://my-bucket/folder/uploaded.txt"
assert bh.exists(uri, cred)
# Download
bh.download(uri, "downloaded.txt", cred)
# List
for key in bh.list_prefix("folder/", cred):
print(key)
# Delete
bh.delete(uri, cred)
MinIO example
cred = {
"s3_access_key": "minioadmin",
"s3_secret_key": "minioadmin",
"s3_bucket": "uploads",
"s3_https": "http://minio.example.com:9000/uploads",
"s3_endpoint_url": "http://minio.example.com:9000",
"s3_use_path_style": "true",
"s3_region": "us-east-1", # MinIO accepts any region string
}
bh.make_bucket("uploads", cred)
bh.upload("file.bin", cred, "file.bin")
Stage-and-share with remote_tempfile
Drop a generated file at a unique random key, hand the public URL to a downstream worker / webhook, and the object is deleted on block exit (even if the body raises):
import bucket_helper as bh
import requests
cred = bh.credentials("path/to/s3_config.json")
with bh.remote_tempfile(cred, ext="json", prefix="runs") as (s3_addr, public_url):
bh.upload("payload.json", cred, s3_addr, content_type="application/json")
# Hand the URL to something that fetches it once.
requests.post("https://hook.example.com/process", json={"input_url": public_url}).raise_for_status()
# Object is gone here, no manual cleanup.
Multi-surface exposure
Every public function in the library is also exposed as:
- argparse CLI —
bucket-helper <subcommand>(installed by default). - click CLI —
bucket-helper-click <subcommand>(install[cli]extra). - FastAPI HTTP —
uvicorn bucket_helper.api:app --host 0.0.0.0 --port 8000(install[api]extra). - MCP tools —
bucket-helper-mcp(install[api,mcp]extras).
Both CLIs share the same subcommand names and flags — pick your favourite.
CLI examples
# argparse CLI (always available)
bucket-helper upload --config s3_config.json --input local.txt --key folder/uploaded.txt
bucket-helper exists --config s3_config.json --key folder/uploaded.txt
bucket-helper download --config s3_config.json --key folder/uploaded.txt --output back.txt
bucket-helper list --config s3_config.json --prefix folder/
bucket-helper delete --config s3_config.json --key folder/uploaded.txt
bucket-helper make-bucket --config s3_config.json --bucket new-bucket
bucket-helper tempfile --config s3_config.json --ext json --prefix runs
bucket-helper strip-path --config s3_config.json --address s3://my-bucket/path/to/obj
# click CLI — same verbs, same flags
bucket-helper-click upload --config s3_config.json --input local.txt --key folder/uploaded.txt
HTTP + MCP server
# Serve HTTP + MCP (default credentials picked up from BUCKET_HELPER_CONFIG)
BUCKET_HELPER_CONFIG=$PWD/s3_config.json bucket-helper-mcp
# Or run only FastAPI directly:
uvicorn bucket_helper.api:app --host 0.0.0.0 --port 8000
# → Swagger UI at http://localhost:8000/docs
Per-request credentials can also be sent as multipart form fields
(s3_access_key / s3_secret_key / s3_bucket / s3_https / …).
Docker
docker build -t bucket-helper .
docker run --rm -p 8000:8000 \
-e BUCKET_HELPER_CONFIG=/config/s3_config.json \
-v $PWD/s3_config.json:/config/s3_config.json:ro \
bucket-helper
See also: LANDSCAPE.md (competitive positioning) and GUI.md (visual product design plan).
Author
Acknowledgements
Special thanks to Mohamed Chelali and Bachir Zerroug for fruitful discussions.
License
This project is licensed under the BSD-3-Clause License — see the LICENSE file for details.
Установка Bucket Helper
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/warith-harchaoui/bucket-helperFAQ
Bucket Helper MCP бесплатный?
Да, Bucket Helper MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Bucket Helper?
Нет, Bucket Helper работает без API-ключей и переменных окружения.
Bucket Helper — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Bucket Helper в Claude Desktop, Claude Code или Cursor?
Открой Bucket Helper на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Bucket Helper with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
