S3 Connector (data-connectors-ai)
Read-only MCP server for S3-compatible storage: list buckets and objects.
Documentation
S3 MCP Server
Read-only MCP server exposing S3Client to AI agents: list buckets and objects on any S3-compatible endpoint.
Tools
| Tool | Description |
|---|---|
list_buckets() -> list[str] | List all accessible buckets |
list_objects(bucket: str, prefix: str = "") -> list[str] | List object keys in a bucket, optionally filtered by prefix |
read_object_text(bucket: str, key: str, max_bytes: int = 1_000_000) -> str | Read an object's content as UTF-8 text. Refuses (raises) objects larger than max_bytes rather than truncating. |
get_presigned_url(bucket: str, key: str, expires_in: int = 300) -> str | Time-limited, read-only GET URL — for content beyond read_object_text's inline cap |
download_file() writes to a local filesystem path an agent doesn't have (use read_object_text for small text content instead); upload_file(), upload_file_multipart(), delete_object(), and cleanup_prefix() are write/destructive and are not exposed as tools.
Tested against a real MinIO container, not mocks.
Environment Variables
| Variable | Required | Default | Notes |
|---|---|---|---|
S3_ENDPOINT | yes | — | S3-compatible endpoint URL |
AWS_ACCESS_KEY_ID | yes | — | Read-only credentials recommended |
AWS_SECRET_ACCESS_KEY | yes | — | |
S3_REGION | no | us-east-1 |
Run locally
pip install "data-connectors-ai[s3,mcp]"
data-connectors-s3-mcp
Use with an MCP client
{
"mcpServers": {
"s3": {
"command": "uvx",
"args": ["--from", "data-connectors-ai[s3,mcp]", "data-connectors-s3-mcp"],
"env": {
"S3_ENDPOINT": "https://s3.your-provider.com",
"AWS_ACCESS_KEY_ID": "...",
"AWS_SECRET_ACCESS_KEY": "..."
}
}
}
}
Registry
Published at io.github.nagarjunr/data-connectors-s3 on the official MCP registry.