aws-s3-connector-mcp
This server provides 4 tools to interact with AWS S3 buckets, supporting both public and private buckets:
connect_s3: Establish a connection to an S3 bucket via a public URL (supporting formats likes3://bucket-name,https://bucket.s3.amazonaws.com) or private access using AWS credentials (access key, secret key, optional session token, and region).list_objects: List objects in the connected bucket, returning file names, sizes, last modified dates, and presigned/public URLs. Supports optional filtering by prefix (folder path) and a result limit.upload_object: Upload files to the connected S3 bucket from either a local file path on the server or a remote internet URL (downloaded then uploaded to a specified S3 key).read_object: Read and return the contents of S3 objects across multiple formats:Text/CSV/JSON/Markup: Raw text content (with optional character limit)
Excel (
.xlsx,.xls): Sheet data as JSON rows (with optional sheet targeting)Parquet: Schema and rows as JSON
PDF: Extracted text from pages
Images (
.png,.jpg,.jpeg,.gif,.webp): Base64-encoded data URLsUnknown/binary: File metadata only
Provides tools for connecting to AWS S3 buckets, listing objects, uploading files, and reading file contents, supporting both public and private buckets.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aws-s3-connector-mcplist objects in my S3 bucket"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AWS S3 Connector MCP Server
A production-ready Model Context Protocol (MCP) server for AWS S3 operations.
Provides 4 practical tools for connecting to S3, listing objects, uploading files, and reading file contents — supporting public buckets (no credentials) and private buckets (AWS credentials).
Supports three transport modes: stdio, SSE, and Streamable HTTP.
Folder Structure
aws-s3-connector-tool-updated/
|-- aws_s3_server.py # Main server entry point
|-- Dockerfile
|-- LICENSE
|-- mcp.example.json
|-- pyproject.toml
|-- README.md
`-- tools/
|-- __init__.py
|-- s3_connector_tools.py
`-- toolhandler.pyRelated MCP server: AWS S3 MCP Server
Available Tools (4)
Tool | Description |
| Connect to an S3 bucket via public URL or AWS credentials |
| List all objects in the connected bucket with filenames and links |
| Upload a file from a local path or internet URL to S3 |
| Read file contents from S3 (CSV, JSON, Excel, PDF, Parquet, images, text) |
Tools Reference
1. connect_s3
Connect to an S3 bucket. Call this first before using other tools.
Parameters:
Parameter | Required | Description |
| Yes (if no credentials) | Public S3 URL, e.g. |
| Alias | Alias of |
| No | AWS access key (for private buckets) |
| No | AWS secret key (for private buckets) |
| No | AWS region (default: auto-detected or |
| Alias | Alias of |
Example — public bucket:
{
"s3_url": "https://my-public-bucket.s3.amazonaws.com"
}Example — private bucket:
{
"aws_access_key_id": "<access-key>",
"aws_secret_access_key": "<secret-key>",
"s3_url": "s3://my-private-bucket",
"region_name": "us-east-1"
}Returns:
{
"status": "connected",
"bucket": "my-bucket",
"region": "us-east-1",
"mode": "public"
}2. list_objects
List all objects in the connected S3 bucket with filenames and presigned/public links.
Parameters: none (uses connection from connect_s3)
Example:
{}Returns:
{
"status": "success",
"bucket": "my-bucket",
"count": 3,
"objects": [
{
"key": "data/report.csv",
"size": 4096,
"last_modified": "2026-06-01T10:00:00Z",
"url": "https://my-bucket.s3.amazonaws.com/data/report.csv?..."
}
]
}3. upload_object
Upload a file to the connected S3 bucket from a local path or a URL.
Parameters:
Parameter | Required | Description |
| Yes | Destination S3 key (path in bucket), e.g. |
| Alias | Alias of |
| No* | Absolute local file path |
| Alias | Alias of |
| No* | Internet URL to download and upload |
*One of local_path or source_url is required.
Example — local file:
{
"object_key": "uploads/report.csv",
"local_file_path": "C:/Users/me/Downloads/report.csv"
}Example — from URL:
{
"object_key": "uploads/data.json",
"source_url": "https://example.com/data.json"
}Returns:
{
"status": "success",
"object_key": "uploads/report.csv",
"bucket": "my-bucket",
"message": "Uploaded successfully"
}4. read_object
Read and return the contents of a file stored in S3. Supports multiple file formats.
Parameters:
Parameter | Required | Description |
| Yes | S3 object key to read |
| Alias | Alias of |
Supported formats:
Format | Extensions | Output |
Text / CSV / JSON |
| Raw text |
Excel |
| JSON rows per sheet |
Parquet |
| JSON rows |
| Extracted text | |
Images |
| Base64-encoded data URL |
Other | any | Base64-encoded content |
Example:
{
"object_key": "data/report.csv"
}Returns:
{
"status": "success",
"object_key": "data/report.csv",
"format": "text",
"content": "id,name,value\n1,Alice,100\n2,Bob,200\n"
}Prerequisites
Python 3.10+
AWS credentials (only for private buckets)
Installation
# From the workspace root (where .venv lives)
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
cd aws-s3-connector-tool-updated
pip install -e .Run
stdio (default — for MCP desktop clients like Claude Desktop)
aws-s3-connector-mcp --mode stdioSSE
aws-s3-connector-mcp --mode sse --host 0.0.0.0 --port 8000Endpoints:
GET /ssePOST /messages(also supports/messages/)GET /health
Streamable HTTP
aws-s3-connector-mcp --mode streamable-http --host 0.0.0.0 --port 8000Endpoints:
POST /mcpGET /healthGET /
Environment variables (alternative to CLI flags)
Variable | Default | Description |
|
|
|
|
| Bind host |
|
| Bind port |
Docker
# Build
docker build -t aws-s3-connector-mcp .
# Run (streamable-http, port 8000)
docker run -p 8000:8000 \
-e AWS_ACCESS_KEY_ID=<your-key> \
-e AWS_SECRET_ACCESS_KEY=<your-secret> \
aws-s3-connector-mcpMCP Client Configuration
See mcp.example.json for a ready-to-use client config snippet.
stdio (Claude Desktop / Cursor):
{
"mcpServers": {
"aws-s3-connector": {
"command": "aws-s3-connector-mcp",
"args": ["--mode", "stdio"],
"env": {
"AWS_ACCESS_KEY_ID": "AKIA...",
"AWS_SECRET_ACCESS_KEY": "your-secret-key",
"AWS_REGION": "ap-south-1",
"S3_BUCKET": "customer-kyc-demo"
}
}
}
}With this env format, you can run connect_s3 with empty arguments:
{}Streamable HTTP (MCP Inspector / MCPmon):
http://localhost:8000/mcpFor SSE in MCP Inspector, use:
http://127.0.0.1:8000/sseAvoid 0.0.0.0 in the inspector URL.
Architecture
MCP Client (Claude / Cursor / MCP Inspector)
|
| JSON-RPC 2.0
v
Transport Layer (stdio | SSE | Streamable HTTP) ← aws_s3_server.py
|
v
ToolHandler Registry (4 tools)
|
v
S3 Tool Handlers ← tools/s3_connector_tools.py
|
v
boto3 ──► AWS S3 APITroubleshooting
NoCredentialsError — Pass credentials via connect_s3 or set AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY env vars.
NoSuchBucket — Verify the bucket name and region in connect_s3.
connect_s3 not called — Always call connect_s3 before list_objects, upload_object, or read_object.
Port already in use — Change APP_PORT env var or use --port flag.
License
MIT License — see LICENSE for details.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityFmaintenanceEnables interaction with AWS S3 through MCP, supporting bucket and object management, lifecycle configurations, tagging, policies, CORS settings, presigned URLs, and file uploads/downloads.3MIT
- Alicense-qualityDmaintenanceEnables interaction with AWS S3 storage through bucket operations (create, delete, list), object management (upload, download, delete, list), and bucket policy configuration using AWS credentials.132MIT
- AlicenseAqualityFmaintenanceMCP server for AWS S3 — list buckets, browse objects, upload/download files, and generate presigned URLs.7764MIT
- Alicense-qualityDmaintenanceEnables management and analysis of AWS security groups, S3 buckets, and VPC connections via MCP.7MIT
Related MCP Connectors
Remote MCP connector for eBay, Shopify, Best Buy & Etsy marketplace data via the Commerce API
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Hosted weather data MCP for discovery, validation, and OAuth-protected GribStream queries.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sourav-spd/aws-s3-connector-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server