MWS S3 MCP server and AI CLI with scoped access and signed human approvals.
Connect Runs on your machine
claude mcp add mws-s3-mcp-ai-cli -e MWS_S3_ACCESS_KEY_ID=<MWS_S3_ACCESS_KEY_ID> -e MWS_S3_SECRET_ACCESS_KEY=<MWS_S3_SECRET_ACCESS_KEY> -e MWS_S3_POOL=<MWS_S3_POOL> -e MWS_S3_ENDPOINT=<MWS_S3_ENDPOINT> -e MWS_S3_ALLOW_INSECURE=<MWS_S3_ALLOW_INSECURE> -e MWS_S3_ALLOW=<MWS_S3_ALLOW> -e MWS_S3_DESTRUCTIVE_POLICY=<MWS_S3_DESTRUCTIVE_POLICY> -e MWS_S3_ALLOWED_BUCKETS=<MWS_S3_ALLOWED_BUCKETS> -e MWS_S3_ALLOWED_PREFIXES=<MWS_S3_ALLOWED_PREFIXES> -e MWS_S3_FILE_ROOT=<MWS_S3_FILE_ROOT> -e MWS_S3_AUDIT_FILE=<MWS_S3_AUDIT_FILE> -- docker run -i --rm ghcr.io/stufently/mws-s3-mcp-ai-cli:0.1.1
{
"mcpServers": {
"mws-s3-mcp-ai-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/stufently/mws-s3-mcp-ai-cli:0.1.1"
],
"env": {
"MWS_S3_ACCESS_KEY_ID": "<MWS_S3_ACCESS_KEY_ID>",
"MWS_S3_SECRET_ACCESS_KEY": "<MWS_S3_SECRET_ACCESS_KEY>",
"MWS_S3_POOL": "<MWS_S3_POOL>",
"MWS_S3_ENDPOINT": "<MWS_S3_ENDPOINT>",
"MWS_S3_ALLOW_INSECURE": "<MWS_S3_ALLOW_INSECURE>",
"MWS_S3_ALLOW": "<MWS_S3_ALLOW>",
"MWS_S3_DESTRUCTIVE_POLICY": "<MWS_S3_DESTRUCTIVE_POLICY>",
"MWS_S3_ALLOWED_BUCKETS": "<MWS_S3_ALLOWED_BUCKETS>",
"MWS_S3_ALLOWED_PREFIXES": "<MWS_S3_ALLOWED_PREFIXES>",
"MWS_S3_FILE_ROOT": "<MWS_S3_FILE_ROOT>",
"MWS_S3_AUDIT_FILE": "<MWS_S3_AUDIT_FILE>"
}
}
}
}
{
"mcpServers": {
"mws-s3-mcp-ai-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/stufently/mws-s3-mcp-ai-cli:0.1.1"
],
"env": {
"MWS_S3_ACCESS_KEY_ID": "<MWS_S3_ACCESS_KEY_ID>",
"MWS_S3_SECRET_ACCESS_KEY": "<MWS_S3_SECRET_ACCESS_KEY>",
"MWS_S3_POOL": "<MWS_S3_POOL>",
"MWS_S3_ENDPOINT": "<MWS_S3_ENDPOINT>",
"MWS_S3_ALLOW_INSECURE": "<MWS_S3_ALLOW_INSECURE>",
"MWS_S3_ALLOW": "<MWS_S3_ALLOW>",
"MWS_S3_DESTRUCTIVE_POLICY": "<MWS_S3_DESTRUCTIVE_POLICY>",
"MWS_S3_ALLOWED_BUCKETS": "<MWS_S3_ALLOWED_BUCKETS>",
"MWS_S3_ALLOWED_PREFIXES": "<MWS_S3_ALLOWED_PREFIXES>",
"MWS_S3_FILE_ROOT": "<MWS_S3_FILE_ROOT>",
"MWS_S3_AUDIT_FILE": "<MWS_S3_AUDIT_FILE>"
}
}
}
}
{
"servers": {
"mws-s3-mcp-ai-cli": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/stufently/mws-s3-mcp-ai-cli:0.1.1"
],
"env": {
"MWS_S3_ACCESS_KEY_ID": "<MWS_S3_ACCESS_KEY_ID>",
"MWS_S3_SECRET_ACCESS_KEY": "<MWS_S3_SECRET_ACCESS_KEY>",
"MWS_S3_POOL": "<MWS_S3_POOL>",
"MWS_S3_ENDPOINT": "<MWS_S3_ENDPOINT>",
"MWS_S3_ALLOW_INSECURE": "<MWS_S3_ALLOW_INSECURE>",
"MWS_S3_ALLOW": "<MWS_S3_ALLOW>",
"MWS_S3_DESTRUCTIVE_POLICY": "<MWS_S3_DESTRUCTIVE_POLICY>",
"MWS_S3_ALLOWED_BUCKETS": "<MWS_S3_ALLOWED_BUCKETS>",
"MWS_S3_ALLOWED_PREFIXES": "<MWS_S3_ALLOWED_PREFIXES>",
"MWS_S3_FILE_ROOT": "<MWS_S3_FILE_ROOT>",
"MWS_S3_AUDIT_FILE": "<MWS_S3_AUDIT_FILE>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
MWS_S3_ACCESS_KEY_IDOptional, secret | S3 access key ID |
MWS_S3_SECRET_ACCESS_KEYOptional, secret | S3 secret access key |
MWS_S3_POOLOptional | Signing pool |
MWS_S3_ENDPOINTOptional | Optional endpoint override |
MWS_S3_ALLOW_INSECUREOptional | Set 1 only for explicit HTTP test endpoints |
MWS_S3_ALLOWOptional | Independent write,delete,admin levels; read only by default |
MWS_S3_DESTRUCTIVE_POLICYOptional | |
MWS_S3_ALLOWED_BUCKETSOptional | Comma-separated bucket scope |
MWS_S3_ALLOWED_PREFIXESOptional | Comma-separated bucket/prefix/ scope |
MWS_S3_FILE_ROOTOptional | Optional confined local file root |
MWS_S3_AUDIT_FILEOptional | Optional private append-only audit output |
Details
| Package | ghcr.io/stufently/mws-s3-mcp-ai-cli:0.1.1 (OCI, stdio) |
| First published | 10 Nov 2026 |
| Last updated | 10 Nov 2026 |
| Registry name | io.github.stufently/mws-s3-mcp-ai-cli |
More files and documents servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
