artemu78/mcp-server-s3-uploader
If you are the rightful owner of mcp-server-s3-uploader and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The S3 Uploader MCP Server is a tool designed to facilitate file uploads to AWS S3 buckets with automatic MIME type detection.
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
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.js
The server exposes one tool:
upload_file
Upload a file to the configured S3 bucket.
Parameters:
filePath
(required): Absolute path to the file to uploadkey
(optional): S3 object key. If not provided, uses the filename
Example:
{
"name": "upload_file",
"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_file", "arguments": {"filePath": "/path/to/test/file.txt"}}}' | node index.js