MCP server for Amazon S3 and S3-compatible endpoints (LocalStack, MinIO). Single Go binary.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Talk to Amazon S3 β or LocalStack, MinIO, any S3-compatible store β from an MCP-speaking agent.
A single static Go binary that speaks the Model Context Protocol and exposes 8 tools for working with S3: list buckets, list/read/write/delete objects, create/delete buckets. Point it at real AWS or at a local LocalStack/MinIO instance with one environment variable β same binary, same tools, zero code changes.
No Python, no uv, no runtime dependency to install β just a binary and
an .mcp.json.
An agent that can only talk about your S3 buckets isn't that useful. This gives it hands: it can look inside a bucket, read a config file out of it, drop a report back in, or clean up a stale prefix β safely, with guardrails on size and destructive actions built in.
| Tool | What it does | Write? |
|---|---|---|
s3_list_buckets | List buckets visible to the credentials | |
s3_list_objects | List objects in a bucket, optional prefix, paginated | |
s3_head_object | Object metadata (size, type, ETag) without downloading | |
s3_get_object | Read an object's content β text or base64, size-capped | |
s3_put_object | Write a small text/base64 object (β€ 5 MB) | βοΈ |
s3_delete_object | Delete one object | ποΈ destructive |
s3_create_bucket | Create a bucket | βοΈ |
s3_delete_bucket | Delete an empty bucket | ποΈ destructive |
Every tool accepts an optional response_format: markdown (default,
pretty tables for a chat UI) or json (for programmatic use).
s3_get_object auto-detects text vs. binary content and caps output at
200,000 bytes by default (raise via max_bytes, hard cap
5,000,000) β it's built for reading configs, logs, and small data
files, not bulk transfer. Reach for the AWS CLI or SDK directly for large
objects.
Fastest path: grab a prebuilt bundle from the latest release β
download s3-mcp-connector-plugin-<version>-<os>-<arch>.zip, unzip it,
and point Cowork/Claude at the plugin/ folder inside (see step 4 of
SETUP.md). No Go toolchain required.
From source:
Or make build && make localstack-up β see the Makefile for
every shortcut (test, vet, fmt, lint, tidy, localstack-down).
Full walkthrough β including wiring this up as a Claude/Cowork plugin and switching from LocalStack to real AWS β is in SETUP.md.
Everything is environment variables, passed through by the plugin's
.mcp.json:
| Variable | Purpose | Default |
|---|---|---|
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY | AWS credentials. Any non-empty values work against LocalStack. | β |
AWS_REGION | Region to use. | us-east-1 |
S3_ENDPOINT_URL | Custom endpoint. Leave unset for real AWS. | (unset) |
S3_FORCE_PATH_STYLE | true for LocalStack/MinIO (path-style addressing). | false |
This isn't a toy script β it's got the same checks you'd expect from a production Go service:
go test ./...)go vet + gofmt cleanAll of it runs in CI on every push and PR.
Versions follow semver and are cut automatically by
release-please from
Conventional Commits on main:
fix: ... β patch (v0.1.0 β v0.1.1)feat: ... β minor (v0.1.1 β v0.2.0)feat!: ... / BREAKING CHANGE: footer β major (v0.2.0 β v1.0.0)Every merged PR updates a standing "chore(main): release vX.Y.Z" PR with an auto-generated CHANGELOG.md. Merging that PR:
server.json from those exact assets (fresh version +
SHA-256 hashes) and publishes it to the
official MCP Registry via
mcp-publisher, authenticated with GitHub OIDC β no stored secretsSee .github/workflows/release-please.yml
and .github/workflows/publish-mcp-registry.yml
(also runnable by hand for an existing tag via workflow_dispatch).
PRs and issues are very welcome β see CONTRIBUTING.md for the full guide (setup, coding conventions, how to add a new tool) and the Code of Conduct.
main is protected: every change, including the maintainer's, lands via
pull request with CI green. PR titles must follow
Conventional Commits β that's what
drives the automatic versioning above.
Found a security issue? Please follow SECURITY.md instead of opening a public issue.
MIT Β© Ferhat Dundar
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/s3-mcp-connector)<a href="https://allmcps.com/mcp/s3-mcp-connector"><img src="https://allmcps.com/api/badge/s3-mcp-connector?style=directory" alt="S3 MCP Connector on AllMCPs" /></a>