Skip to content
2nd Place

S3 Butler

S3 Butler provides analysis of S3 buckets, visualizations of storage traffic, and visibility into user permissions.

Core trick

Exposes S3 bucket listing, IAM policy inspection, and ClickHouse access-log queries as MCP tools for an admin agent.

Tags

Description

S3 Butler provides analysis of S3 buckets, visualizations of storage traffic, and visibility into user permissions. It enables storage administrators to quickly understand bucket activity and access controls. This is critical, as managing permissions and ensuring accurate resource utilization are among the most complex responsibilities of a service provider.
mistral-mcp-hackathon/mcp-server★ 10 forksPythonApache-2.0Created Sep 13, 2025 · last push Sep 14, 2025

README excerpt

# S3 Butler

A Model Context Protocol (MCP) server that provides tools for S3 bucket management, IAM policy inspection, and ClickHouse analytics.

## Quick Start

```bash
# 1. Clone the repository
git clone <your-repo-url>
cd mcp-server

# 2. Install uv (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 3. Set up environment variables
cp .env.example .env
# Edit .env with your credentials (see Environment Setup below)

# 4. Install dependencies
uv sync

# 5. Run the server
uv run python src/server.py
```

Your MCP server is now running at `http://localhost:8000/mcp` 🎉

## Environment Setup

Create a `.env` file with your credentials:

```bash
# Server Configuration
MCP_HOST=0.0.0.0
MCP_PORT=8000
MCP_PATH=/mcp

# S3/IAM Configuration (Required)
S3_ENDPOINT=http://127.0.0.1:8000      # Your S3 endpoint
S3_ACCESS_KEY=your_access_key          # Your S3 access key
S3_SECRET_KEY=your_secret_key          # Your S3 secret key
IAM_ENDPOINT=http://127.0.0.1:8600     # Your IAM endpoint

# ClickHouse Configuration (Optional - for analytics)
CLICKHOUSE_HOST=localhost              # Leave blank to disable ClickHouse
CLICKHOUSE_USER=                       # Optional
CLICKHOUSE_PASSWORD=                   # Optional

# ngrok Configuration (Optional - for remote access)
NGROK_AUTH_TOKEN=                      # Get from https://dashboard.ngrok.com
```

## Available Tools

The server provides these MCP tools:

1. **`get_team_name`** - Returns the team name
2. **`list_b

Team