Skip to main content
Glama
README.md
# s3-tools MCP Server

An MCP server that provides tools for interacting with AWS S3 buckets. This server enables direct access to S3 bucket operations through the Model Context Protocol.

## Features

### Tools

The server currently implements the following tools:

- **list-s3-buckets**: Lists all S3 buckets in your AWS account
  - Optional `region` parameter to specify AWS region
  - Returns a formatted list of bucket names

## Prerequisites

- Python 3.13 or higher
- AWS credentials configured (see [AWS Credentials Setup](#aws-credentials-setup))
- [uv](https://github.com/astral-sh/uv) package manager

## Installation

### From PyPI

```bash
uvx install s3-tools
```

### From Source

1. Clone the repository
2. Install using uv:
```bash
uv pip install .
```

## AWS Credentials Setup

This server requires AWS credentials to access your S3 buckets. You can configure credentials in several ways:

1. **AWS CLI configuration** (Recommended)
   ```bash
   aws configure
   ```
   This will create/update credentials in `~/.aws/credentials`

2. **Environment Variables**
   ```bash
   export AWS_ACCESS_KEY_ID="your_access_key"
   export AWS_SECRET_ACCESS_KEY="your_secret_key"
   export AWS_DEFAULT_REGION="your_preferred_region"  # optional
   ```

3. **IAM Role** (if running on AWS infrastructure)

For more information about AWS credentials, see the [AWS documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

## Configuration

### Claude Desktop

Add the server configuration to your Claude Desktop config file:

**MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`  
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "s3-tools": {
      "command": "uvx",
      "args": ["s3-tools"]
    }
  }
}
```

### Development Configuration

For development/testing, you can run the server directly from source:

```json
{
  "mcpServers": {
    "s3-tools": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/s3-tools",
        "run",
        "s3-tools"
      ]
    }
  }
}
```

## Development

### Building

1. Sync dependencies:
```bash
uv sync
```

2. Build package:
```bash
uv build
```

### Publishing

To publish to PyPI:

```bash
uv publish
```

Note: You'll need PyPI credentials configured via:
- Token: `--token` or `UV_PUBLISH_TOKEN`
- Or username/password: `--username`/`UV_PUBLISH_USERNAME` and `--password`/`UV_PUBLISH_PASSWORD`

### Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) for development:

```bash
npx @modelcontextprotocol/inspector uv run s3-tools
```

## License

MIT

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

TDQS

B3/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility for ambiguity or overlap between tools, as there are no other tools to compare it to. The tool's purpose is clearly defined and distinct by default.

Naming Consistency5/5

Since there is only one tool, naming consistency is inherently perfect with no deviations or mixed conventions to evaluate. The tool name 'list-s3-buckets' follows a clear verb_noun pattern.

Tool Count2/5

A single tool for an S3 server is too few for the apparent scope, as S3 involves operations like uploading, downloading, deleting objects, and managing buckets beyond listing. This minimal set will likely cause agent failures due to significant functional gaps.

Completeness1/5

The tool surface is severely incomplete for an S3 domain, covering only bucket listing. There are obvious gaps for core operations such as creating/deleting buckets, managing objects (upload, get, delete), and other essential S3 functionalities, making it inadequate for typical use cases.

Maintenance

ActivityInactive
ResponsivenessNo issues