S3 MCP Server
Provides tools for listing objects and retrieving objects from Amazon S3 buckets, with streaming support for large files including PDFs.
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., "@S3 MCP Serverlist objects with prefix 'reports/'"
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 MCP Server
A Model Context Protocol (MCP) server for accessing Amazon S3 buckets. This server provides seamless integration with S3 storage through MCP, allowing efficient handling of large files including PDFs through streaming capabilities.
Features
S3 bucket object listing with prefix filtering
Efficient large file handling through streaming
Secure AWS credentials management
TypeScript support
CLI interface with customizable options
Related MCP server: MCP Server for Apache OpenDAL™
Installation
npx -y @geunoh/s3-mcp-serverUsage
Command Line Options
npx -y @geunoh/s3-mcp-server [options]Options:
--port, -p: Server port (default: 3000)--region, -r: AWS region (default: ap-northeast-2)--bucket, -b: S3 bucket name (default: my-dancing-bucket)--content-type, -t: Input file content type for uploads/downloads (default: application/octet-stream)
Environment Variables
Required:
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"Optional:
export AWS_REGION="ap-northeast-2"
export S3_BUCKET_NAME="my-bucket-name"
export CONTENT_TYPE="application/octet-stream" # Optional: default MIME type for uploads/downloadsMCP Integration
Add to your mcp.json:
{
"mcpServers": {
"s3-mcp-server": {
"command": "npx",
"args": [
"-y",
"@geunoh/s3-mcp-server",
"--region",
"us-east-1",
"--bucket",
"my-test-bucket",
"--content-type",
"text/plain"
],
"env": {
"AWS_ACCESS_KEY_ID": "YOUR_AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY": "YOUR_AWS_SECRET_ACCESS_KEY"
}
}
}
}Or like this way:
{
"mcpServers": {
"s3-mcp-server": {
"command": "npx",
"args": ["-y", "@geunoh/s3-mcp-server"],
"env": {
"AWS_ACCESS_KEY_ID": "YOUR_AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY": "YOUR_AWS_SECRET_ACCESS_KEY",
// optional
"AWS_REGION": "us-east-1",
"S3_BUCKET_NAME": "my-test-bucket"
}
}
}
}Available MCP Functions
listObjects
Lists objects in the S3 bucket.
Parameters:
prefix(optional): Filter objects by prefix
getObject
Retrieves an object from the S3 bucket. Optimized for large files through streaming.
Parameters:
key: The key of the object to retrieve
Returns:
stream: ReadableStream of the object contentcontentType: MIME type of the objectcontentLength: Size of the object in byteslastModified: Last modification timestamptext: Text buffer of raw pdf ByteArray
AWS IAM Permissions
Minimum required permissions (see s3-policy.json):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetObject"],
"Resource": "arn:aws:s3:::my-bucket-name"
}
]
}Development
Clone the repository:
git clone https://github.com/Geun-Oh/s3-mcp-server.git
cd s3-mcp-serverInstall dependencies:
npm installBuild the project:
npm run buildRun locally:
node dist/cli.jsProject Structure
.
├── src/ # TypeScript source files
├── dist/ # Compiled JavaScript files and runtime dependencies
├── tsconfig.json # TypeScript configuration
└── package.json # Project configuration and dependenciesDeployment
Create a new version tag:
npm version patchPush to npm registry:
npm publish --access publicThe GitHub Actions workflow will automatically publish the package when a new version tag is pushed.
License
MIT
Contributing
Issues and pull requests are welcome. Please ensure that your changes maintain the existing code style and include appropriate tests.
Available Tools
3 toolsget_objectD
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bucketsD
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileD
| Name | Required | Description | Default |
|---|---|---|---|
| localFilePath | Yes | ||
| key | Yes | ||
| contentType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v1.3.1- First observed
get_object - First observed
list_buckets - First observed
upload_file
TDQS
Each tool targets a distinct S3 action (get object, list buckets, upload file) with no overlap. Even without descriptions, the names clearly differentiate the operations.
All tool names follow a consistent verb_noun pattern with snake_case (get_object, list_buckets, upload_file), making them predictable and easy to understand.
With 3 tools, the server is slightly under-scoped for a typical S3 service, but it covers core operations. The count is still within a reasonable range for a focused utility.
The tool set is missing essential S3 operations like delete_object, list_objects, and copy_object. These omissions create significant gaps that would hinder an agent performing common storage tasks.
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 Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Tigris MCP Server seamlessly connects AI agents to Tigris bucket and object management.
A Model Context Protocol server for Wix AI tools
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Related MCP Servers
- FlicenseBqualityDmaintenanceAn MCP server that provides tools for interacting with AWS S3 buckets, enabling direct access to S3 operations through the Model Context Protocol.1-
- AlicenseBqualityCmaintenanceA Model Context Protocol server that provides seamless access to multiple storage services including S3, Azure Blob Storage, and Google Cloud Storage through Apache OpenDAL™.335Apache 2.0
- AlicenseAqualityFmaintenanceA Model Context Protocol server implementation that enables Claude to perform AWS operations on S3 and DynamoDB services through natural language commands.23127MIT
- AlicenseAqualityFmaintenanceAn Amazon S3 Model Context Protocol server that allows Large Language Models like Claude to interact with AWS S3 storage, providing tools for listing buckets, listing objects, and retrieving object contents.392830MIT
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/Geun-Oh/s3-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server