S3 MCP Server
# S3 MCP Server
A Model Context Protocol server that interfaces with S3-compatible storage (like Cloudflare R2).
## Features
- List buckets (`s3_list_buckets`)
- List objects in a bucket (`s3_list_objects`)
- Read object content (`s3_read_object`)
- Upload objects (`s3_put_object`)
- Delete objects (`s3_delete_object`)
## Installation
1. Navigate to the directory:
```bash
cd s3-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the server:
```bash
npm run build
```
## Configuration
To use this with an MCP client (like Claude Desktop or a custom client), add it to your configuration.
### Cloudflare R2 Example
For Cloudflare R2, your endpoint should look like: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`
#### Running from GitHub (Recommended)
```json
{
"mcpServers": {
"s3": {
"command": "npx",
"args": [
"-y",
"github:AM1010101/s3-mcp-server"
],
"env": {
"S3_ENDPOINT": "https://<YOUR_ACCOUNT_ID>.r2.cloudflarestorage.com",
"S3_ACCESS_KEY_ID": "<YOUR_ACCESS_KEY_ID>",
"S3_SECRET_ACCESS_KEY": "<YOUR_SECRET_ACCESS_KEY>",
"S3_REGION": "auto"
}
}
}
}
```
#### Running Locally
If you have cloned the repository and built it locally:
```json
{
"mcpServers": {
"s3": {
"command": "node",
"args": ["/absolute/path/to/s3-mcp-server/dist/index.js"],
"env": {
"S3_ENDPOINT": "https://<YOUR_ACCOUNT_ID>.r2.cloudflarestorage.com",
"S3_ACCESS_KEY_ID": "<YOUR_ACCESS_KEY_ID>",
"S3_SECRET_ACCESS_KEY": "<YOUR_SECRET_ACCESS_KEY>",
"S3_REGION": "auto"
}
}
}
}
```
### Environment Variables
- `S3_ENDPOINT`: The S3 API endpoint URL.
- `S3_ACCESS_KEY_ID`: Your access key ID.
- `S3_SECRET_ACCESS_KEY`: Your secret access key.
- `S3_REGION`: The region (default: "auto").
## Tools
- **s3_list_buckets**: Lists all available buckets.
- **s3_list_objects**: Lists files in a bucket.
- `bucket`: Name of the bucket.
- `prefix`: (Optional) Filter by prefix.
- **s3_read_object**: Reads a file as text.
- `bucket`: Name of the bucket.
- `key`: File path/key.
- **s3_put_object**: Uploads text content to a file.
- `bucket`: Name of the bucket.
- `key`: File path/key.
- `content`: Content string.
- **s3_delete_object**: Deletes a file.
- `bucket`: Name of the bucket.
- `key`: File path/key.
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose targeting specific S3 operations: listing buckets, listing objects, uploading, reading, and deleting. There is no overlap in functionality, making tool selection straightforward for an agent.
All tools follow a consistent 's3_verb_noun' pattern with snake_case, using clear verbs like list, put, read, and delete. This uniformity makes the tool set predictable and easy to navigate.
With 5 tools, the server is well-scoped for basic S3 operations, covering essential actions without being overwhelming. Each tool serves a distinct and necessary function in the domain.
The tool set covers core CRUD operations for S3 objects (create, read, delete, list) and bucket listing, but lacks operations like copying objects, managing bucket policies, or handling multipart uploads. However, the included tools support fundamental workflows effectively.