AWS S3 MCP Server
AWS S3 buckets and objects accessible directly through your AI assistant tools.
Data last scanned today · Reviewed today
Overview
This TypeScript-based server bridges the gap between LLMs and Amazon S3, enabling agents to browse bucket contents and retrieve file data. It supports STDIO and HTTP transports, facilitating integration with diverse AI environments. Developers can deploy the server using Node.js or Docker. It includes tools for listing buckets and objects, alongside object content retrieval, all controllable via standard MCP-compliant AI interfaces.
Our verdict
With a security score of 29/100, this server carries a high risk level. The lack of a read-only mode means every installation grants full write access to your S3 environment by default, and the community-maintained status lacks formal review. It should be used exclusively in controlled, non-production test environments where restricted IAM policies are strictly enforced.
- Supports both STDIO and HTTP transport protocols
- Contains only eight direct dependencies for a smaller surface
- Includes built-in support for Docker and Docker Compose
- No read-only mode restricts safety for sensitive buckets
- Community-maintained with no formal editorial oversight
- Last code contribution occurred over five months ago
Setup
{
"mcpServers": {
"aws-s3-mcp": {
"args": [
"-y",
"aws-s3-mcp"
],
"command": "npx"
}
}
}Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop. Some servers require API keys or tokens as environment variables — check the project's README and add an "env" object if needed.
- No read-only mode — running this grants full read/write access.
- No built-in authentication — anyone with access to this config can invoke every tool it exposes.
Tools
| Tool | Description | Risk |
|---|---|---|
| list-buckets | Lists available S3 buckets that the server has permission to access. | low |
| list-objects | Lists objects in a specified S3 bucket. | low |
| get-object | Retrieves an object from a specified S3 bucket. | low |
Compatibility
| Client | Local | Docker | Remote | Read-only |
|---|---|---|---|---|
| Claude Desktop | ||||
| Cursor | ||||
| VS Code | ||||
| Windsurf | ||||
| ChatGPT |
Frequently asked questions
›What are the prerequisites for running this server?
You need Node.js version 18 or higher, npm or yarn, and configured AWS credentials. Docker is also available as an optional deployment method.
›How do I configure which buckets the server can access?
You can specify accessible buckets by providing a comma-separated list of bucket names in the S3_BUCKETS environment variable.
›Does the server support different transport modes?
Yes, it supports STDIO transport for tools like Claude Desktop and HTTP transport for web clients, including real-time streaming.
›How do I switch between transport modes?
The server uses HTTP transport by default. You can enable STDIO transport by passing the --stdio flag when executing the server with node.
›Can I limit the number of buckets returned by the listing tool?
Yes, you can define the maximum number of buckets to return in listing operations by setting the S3_MAX_BUCKETS environment variable, which defaults to 5.
›Where should I define my AWS credentials for the server?
You can provide your AWS credentials via a .env file, standard environment variables, or your local AWS configuration files.
Badge
Maintain this server? Add the live badge to your README.