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

ToolDescription
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) -> strRead 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) -> strTime-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

VariableRequiredDefaultNotes
S3_ENDPOINTyesS3-compatible endpoint URL
AWS_ACCESS_KEY_IDyesRead-only credentials recommended
AWS_SECRET_ACCESS_KEYyes
S3_REGIONnous-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.