S3 Uploader MCP Server
This server lets you upload files to an AWS S3 bucket via MCP.
Upload a single file to S3 by providing its absolute
filePath.Optionally specify an S3 object
key; otherwise the filename is used.Automatic MIME type detection based on file extension, defaulting to
application/octet-streamfor unknown types.Requires AWS credentials and bucket configuration via environment variables.
Provides error handling for missing env vars, missing files, invalid paths, AWS/S3 failures, and network issues.
Can be integrated with Claude Desktop as an MCP server for file upload tasks.
Click on "Deploy 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., "@S3 Uploader MCP Server Upload the file /data/report.pdf to S3"
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.
S3 Uploader MCP Server
A Model Context Protocol (MCP) server that provides file upload functionality to AWS S3 buckets with automatic MIME type detection.
Features
Upload files to S3 buckets
Automatic MIME type detection based on file extensions
Support for common file types (images, documents, audio, video, archives)
Configurable S3 object keys
Comprehensive error handling
Related MCP server: MCP S3 File Uploader
Setup
Prerequisites
Node.js (version 14 or higher)
AWS credentials with S3 access
An S3 bucket
Installation
Clone or download this repository
Install dependencies:
npm install
Configuration
Set the following environment variables:
export AWS_ACCESS_KEY_ID="your-access-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret-access-key"
export AWS_REGION="your-aws-region"
export BUCKET_NAME="your-s3-bucket-name"Usage
As an MCP Server
Start the server:
node index.jsThe server exposes one tool:
upload_files
Upload a file to the configured S3 bucket.
Annotations:
Title: "Upload File to S3"
Read-only: false (modifies environment by uploading files)
Destructive: false (additive operation, doesn't remove existing data)
Idempotent: false (uploading same file again may overwrite or create new version)
Open-world: true (interacts with external AWS S3 service)
Parameters:
filePath(required): Absolute path to the file to uploadkey(optional): S3 object key. If not provided, uses the filename
Example:
{
"name": "upload_files",
"arguments": {
"filePath": "/path/to/your/file.jpg",
"key": "uploads/my-image.jpg"
}
}Supported MIME Types
The server automatically detects MIME types for the following file extensions:
Images: jpg, jpeg, png, gif, webp, bmp, ico, svg, tiff
Documents: pdf, doc, docx, xls, xlsx, ppt, pptx, rtf
Text: txt, csv, html, css, js, json, xml, md
Audio: mp3, wav, ogg, m4a, flac
Video: mp4, avi, mov, wmv, flv, webm, mkv
Archives: zip, rar, tar, gz, 7z
Other: bin, exe, dmg (treated as binary)
Unknown file types default to application/octet-stream.
Integration with Claude Desktop
To use this MCP server with Claude Desktop, add it to your claude_desktop_config.json:
{
"mcpServers": {
"s3-uploader": {
"command": "node",
"args": ["/path/to/s3-mcp-server/index.js"],
"env": {
"AWS_ACCESS_KEY_ID": "your-access-key-id",
"AWS_SECRET_ACCESS_KEY": "your-secret-access-key",
"AWS_REGION": "your-aws-region",
"BUCKET_NAME": "your-s3-bucket-name"
}
}
}
}Error Handling
The server provides detailed error messages for common issues:
Missing environment variables
File not found
Invalid file paths
AWS/S3 errors
Network connectivity issues
Security Considerations
Store AWS credentials securely (use environment variables, not hardcoded values)
Ensure the S3 bucket has appropriate permissions
Consider using IAM roles instead of access keys in production
Validate file types and sizes before upload if needed
Development
To test the server locally:
# Test tools listing
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node index.js
# Test file upload (replace with actual file path)
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "upload_files", "arguments": {"filePath": "/path/to/test/file.txt"}}}' | node index.jsAvailable Tools
1 toolupload_fileA
Upload a file to S3 bucket. The file will be uploaded with automatic MIME type detection based on file extension. Requires AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, and BUCKET_NAME environment variables to be set.
Inputs: filePath (required), key.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion. The upload_file tool clearly defines its purpose and input.
The single tool name 'upload_file' follows a clear verb_noun pattern, consistent with common conventions.
The server provides only one tool, which is borderline thin but appropriate for a narrowly-scoped uploader service.
For an S3 uploader, the upload_file tool covers the essential operation thoroughly, with no obvious missing functionality within the stated scope.
Maintenance
Related MCP Connectors
Browse, upload, download, copy, move and share files in your own S3-compatible buckets.
Browse, upload, download, and share files in your S3-compatible buckets with delegated roles.
Capture photos remotely from mobile devices via S3-backed upload URLs
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides secure access to AWS S3 buckets through pre-signed URLs, enabling listing, downloading, uploading, and deleting objects.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables secure file uploads to Amazon S3 with progress tracking and presigned URL generation. Provides automatic UUID-based file naming and time-limited access URLs for uploaded files.25 PyPIMIT
- AlicenseAqualityDmaintenanceEnables interaction with S3-compatible storage services like AWS S3 and Cloudflare R2, supporting bucket management, object listing, reading, uploading, and deletion operations.527 npmISC
- AlicenseNot gradedqualityDmaintenanceEnables interaction with AWS S3 storage through bucket operations (create, delete, list), object management (upload, download, delete, list), and bucket policy configuration using AWS credentials.17 npm2MIT