Skip to main content
Glama

s3-mcp

Un servidor MCP genérico de protocolo S3 (stdio) que funciona con cualquier endpoint compatible con S3 — RustFS, MinIO, Cloudflare R2, Backblaze B2, AWS S3 — no solo AWS.

Un único paquete de Python, un cliente boto3 creado al inicio, configuración únicamente mediante variables de entorno. Construido sobre el SDK oficial mcp (API de servidor de alto nivel) y boto3.

Configuración (variables de entorno)

Variable

¿Requerida?

Por defecto

Descripción

S3_ENDPOINT_URL

no

(sin definir)

Endpoint compatible con S3; omítelo para apuntar a AWS real

AWS_REGION

no

us-east-1

Región para firma y creación de buckets

AWS_ACCESS_KEY_ID

Clave de acceso

AWS_SECRET_ACCESS_KEY

Clave secreta

S3_PATH_STYLE

no

true

Direccionamiento estilo ruta (https://host/bucket/key) — requerido por la mayoría de almacenes no AWS

S3_TLS_INSECURE

no

false

true desactiva la verificación de certificados TLS (endpoints autofirmados)

Los booleanos aceptan true/false/1/0/yes/no (sin distinción de mayúsculas). La falta de credenciales o booleanos inválidos abortan el inicio con un error claro.

Related MCP server: S3 MCP Server

Herramientas

Herramienta

¿Solo lectura?

list_buckets()

list_objects(bucket, prefix="", max_keys=1000)

get_object(bucket, key) → texto si es UTF-8, si no {base64, content_type}

stat_object(bucket, key)

presign_get(bucket, key, expires_s=3600)

put_object(bucket, key, body, base64=false)

no

delete_object(bucket, key)

no

copy_object(src_bucket, src_key, dst_bucket, dst_key)

no

create_bucket(bucket)

no

delete_bucket(bucket)

no

presign_put(bucket, key, expires_s=3600)

no

Los errores de las herramientas se lanzan como mensajes cortos de RuntimeError y MCP los muestra como resultados de error. Las URL prefirmadas tienen un límite de 7 días (604800 s), según SigV4.

Ejemplos de configuración

RustFS con un certificado autofirmado

{
  "mcpServers": {
    "s3-mcp": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "S3_ENDPOINT_URL=https://rustfs.local:9000",
        "-e", "S3_TLS_INSECURE=true",
        "-e", "AWS_REGION=us-east-1",
        "-e", "AWS_ACCESS_KEY_ID",
        "-e", "AWS_SECRET_ACCESS_KEY",
        "ghcr.io/jakeperalta7/s3-mcp:latest"
      ]
    }
  }
}

-e VAR sin valor pasa la variable desde tu shell, por lo que las credenciales nunca aparecen en el archivo de configuración.

MinIO

{
  "mcpServers": {
    "s3-mcp": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "S3_ENDPOINT_URL=http://localhost:9000",
        "-e", "AWS_REGION=us-east-1",
        "-e", "AWS_ACCESS_KEY_ID",
        "-e", "AWS_SECRET_ACCESS_KEY",
        "ghcr.io/jakeperalta7/s3-mcp:latest"
      ]
    }
  }
}

AWS S3

Omite S3_ENDPOINT_URL; se aplica la resolución estándar de credenciales/región de AWS:

{
  "mcpServers": {
    "s3-mcp": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "AWS_REGION",
        "-e", "AWS_ACCESS_KEY_ID",
        "-e", "AWS_SECRET_ACCESS_KEY",
        "ghcr.io/jakeperalta7/s3-mcp:latest"
      ]
    }
  }
}

Sin Docker (uv)

uvx --from git+https://github.com/JakePeralta7/s3-mcp s3-mcp
{
  "mcpServers": {
    "s3-mcp": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/JakePeralta7/s3-mcp", "s3-mcp"],
      "env": {
        "S3_ENDPOINT_URL": "http://localhost:9000",
        "AWS_ACCESS_KEY_ID": "...",
        "AWS_SECRET_ACCESS_KEY": "..."
      }
    }
  }
}

Desarrollo

uv sync --group dev   # install deps into .venv
uv run pytest -q      # unit tests (boto3 mocked, no network)
docker build -t s3-mcp:dev .

Punto de entrada: python -m s3_mcp (solo transporte stdio).

Publicación

Cada push a main ejecuta las pruebas y luego publica ghcr.io/<owner>/<repo>:<version> + :latest, donde <version> se lee de version en pyproject.toml. Para publicar, incrementa la versión y fusiona a main. No se utilizan etiquetas Git.

Licencia

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables interaction with S3-compatible storage services like AWS S3 and Cloudflare R2, supporting bucket management, object listing, reading, uploading, and deletion operations.
    5
    295
    ISC
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables interaction with AWS S3 through MCP, supporting bucket and object management, lifecycle configurations, tagging, policies, CORS settings, presigned URLs, and file uploads/downloads.
    3
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides tools for interacting with MinIO and S3-compatible object storage through MCP clients like Claude. It enables comprehensive bucket and object management, including listing, creating, uploading, and generating presigned URLs.
    13
    2
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP clients to connect to AWS S3 buckets, list, upload, and read objects in various formats, supporting public and private buckets with multiple transport modes.
    4
    MIT

View all related MCP servers

Related MCP Connectors

  • Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.

  • 34 production API tools over one hosted MCP endpoint.

  • Official Sevalla MCP — full PaaS API access through just 2 tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JakePeralta7/s3-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server