# s3

This MCP server lets an agent work with AWS S3 and compatible storage. Use it to inspect buckets, handle objects, and limit available operations.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 81
- Author: pulsemcp
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/pulsemcp/mcp-servers/tree/HEAD/experimental/s3
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/mcp/s3

## What it does

The server exposes S3 actions for buckets and objects. An agent can list buckets, find objects by prefix, read object contents, upload or update files, copy objects, and remove them. It also checks AWS credentials and exposes `s3://config` with server status and configuration.

Access can be managed through the `readonly` and `readwrite` tool groups, or narrowed to individual tools with environment variables. Set `S3_BUCKET` to keep object operations inside one bucket and hide bucket-level actions. AWS requires `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`; MinIO and similar services also use `AWS_ENDPOINT_URL` and `S3_FORCE_PATH_STYLE=true`. The server will fail credential validation without AWS keys.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`, `AWS_ENDPOINT_URL`, `S3_FORCE_PATH_STYLE`, `S3_BUCKET`, `S3_ENABLED_TOOLGROUPS`, `S3_ENABLED_TOOLS`, `S3_DISABLED_TOOLS`, `SKIP_HEALTH_CHECKS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID> --env AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY> --env AWS_REGION=<AWS_REGION> --env AWS_ENDPOINT_URL=<AWS_ENDPOINT_URL> --env S3_FORCE_PATH_STYLE=<S3_FORCE_PATH_STYLE> --transport stdio s3 -- npx -y s3-aws-mcp-server
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add s3 --env AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID> --env AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY> --env AWS_REGION=<AWS_REGION> --env AWS_ENDPOINT_URL=<AWS_ENDPOINT_URL> --env S3_FORCE_PATH_STYLE=<S3_FORCE_PATH_STYLE> -- npx -y s3-aws-mcp-server
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "s3": {
            "command": "npx",
            "args": [
                "-y",
                "s3-aws-mcp-server"
            ],
            "env": {
                "AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
                "AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
                "AWS_REGION": "<AWS_REGION>",
                "AWS_ENDPOINT_URL": "<AWS_ENDPOINT_URL>",
                "S3_FORCE_PATH_STYLE": "<S3_FORCE_PATH_STYLE>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "s3": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "s3-aws-mcp-server"
            ],
            "env": {
                "AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
                "AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
                "AWS_REGION": "<AWS_REGION>",
                "AWS_ENDPOINT_URL": "<AWS_ENDPOINT_URL>",
                "S3_FORCE_PATH_STYLE": "<S3_FORCE_PATH_STYLE>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID> -e AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY> -e AWS_REGION=<AWS_REGION> -e AWS_ENDPOINT_URL=<AWS_ENDPOINT_URL> -e S3_FORCE_PATH_STYLE=<S3_FORCE_PATH_STYLE> s3 npx -y s3-aws-mcp-server
```
Replace <…> with your own values. 5 more environment variables are in the server README

## When to use it
- inspect available S3 buckets
- read an object selected by prefix
- upload or replace a file in a bucket
- copy objects between buckets
- restrict access to one bucket

## Example prompts
- List the S3 buckets I can access and check their availability.
- Read the object matching this prefix and summarize its contents.
- Upload the prepared file to the target bucket while keeping delete tools disabled.

## Similar
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872
- [Coder](https://affpapa.org/en/nevibecode/mcp/coder.md) — MCP server · ★ 17160
- [firebase-mcp](https://affpapa.org/en/nevibecode/mcp/firebase-mcp.md) — MCP server · ★ 4481
- [Radar Kubernetes MCP Server](https://affpapa.org/en/nevibecode/mcp/radar-kubernetes-mcp-server.md) — MCP server · ★ 3905
- [Supabase](https://affpapa.org/en/nevibecode/mcp/supabase.md) — MCP server · ★ 2969
- [Microsoft Fabric MCP Server](https://affpapa.org/en/nevibecode/mcp/microsoft-fabric-mcp-server.md) — MCP server · ★ 3799

From the same set: [pulsemcp/mcp-servers](https://affpapa.org/en/nevibecode/by/pulsemcp/mcp-servers.md) — 28 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
