s3-tools
# 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
Scored across 1 tool
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.
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.
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.
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.