
S3 Mcp Connector
io.github.FerhatDundar由 GitHub 账号 FerhatDundar 发布v0.2.0更新于 Oct 24, 2026
MCP server for Amazon S3 and S3-compatible endpoints (LocalStack, MinIO). Single Go binary.
概览
一个本地 MCP 服务器,让助手直接操作 Amazon S3 或兼容 S3 的存储:列出、读取、写入和删除存储桶与对象。
- 可以做什么
- 列出凭据可见的存储桶,并创建或删除空存储桶。按可选前缀分页列出存储桶中的对象。不下载内容即可读取对象元数据(大小、类型、ETag)。以文本或 base64 读取对象内容,并有大小上限。写入小型文本或 base64 对象,以及删除单个对象。所有工具都可返回 markdown 表格或 JSON。
- 适用场景
- 适合让助手查看存储桶、读取其中的配置文件或日志、写回一份小报告,或清理过期的前缀,可对接真实 AWS 或本地 LocalStack/MinIO 实例。不适合批量或大对象传输。
- 运行要求
- 作为本地进程在用户机器上运行(仅桌面端),提供 macOS、Linux 和 Windows 的预构建包;从源码构建需要 Go。需要 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY;可选 AWS_REGION(默认 us-east-1)、用于自定义端点的 S3_ENDPOINT_URL,以及用于 LocalStack/MinIO 的 S3_FORCE_PATH_STYLE。需要能访问 S3 端点的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 S3 Mcp Connector,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
🪣 s3-mcp-connector
Talk to Amazon S3 — or LocalStack, MinIO, any S3-compatible store — from an MCP-speaking agent.
[CI] [CodeQL] [Latest release] [MCP Registry] [Go Reference] [License: MIT] [Tested with LocalStack] [MCP] [Conventional Commits] [PRs Welcome]
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.
✨ Why this exists
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.
🧰 Tools
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.
🚀 Quickstart
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.
🔐 Configuration
Everything is environment variables, passed through by the plugin's
.mcp.json:
🧪 Quality bar
This isn't a toy script — it's got the same checks you'd expect from a production Go service:
- ✅ Unit tests for every input-validation path (
go test ./...) - ✅
go vet+gofmtclean - ✅ golangci-lint (govet, staticcheck, errcheck, gosec, and more)
- ✅ govulncheck — no known vulnerabilities in the dependency graph
- ✅ CodeQL static security analysis on every push
- ✅ End-to-end verified against real LocalStack — every tool (create/delete bucket, put/get/head/list/delete object, and the 404 error path) was exercised against a live S3-compatible service, not mocks
- ✅ Dependabot keeps Go modules and Actions current
All of it runs in CI on every push and PR.
🏷️ Releases & versioning
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:
- tags the release and publishes it on GitHub
- builds and attaches zipped, ready-to-install plugin bundles for linux/darwin/windows × amd64/arm64
- regenerates
server.jsonfrom those exact assets (fresh version + SHA-256 hashes) and publishes it to the official MCP Registry viamcp-publisher, authenticated with GitHub OIDC — no stored secrets
See .github/workflows/release-please.yml
and .github/workflows/publish-mcp-registry.yml
(also runnable by hand for an existing tag via workflow_dispatch).
📁 Layout
🤝 Contributing
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.
📄 License
MIT © Ferhat Dundar
来源:README.md,提交 2a7e36c
工具
0版本历史
1- v0.2.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分