
List all S3 buckets in the AWS account with owner information
Get S3 bucket location/region. Returns the AWS region where the bucket is hosted
Create a new S3 bucket. Name must be globally unique, 3-63 chars, lowercase only
Delete an empty S3 bucket. Use delete_objects first to remove all objects before deleting
Get the IAM policy JSON document attached to an S3 bucket for access control review
Set or update the IAM policy on an S3 bucket for access control configuration
Get CORS configuration rules for an S3 bucket to review cross-origin access settings
Set CORS rules on an S3 bucket to enable cross-origin web browser access
Get versioning status of an S3 bucket (Enabled, Suspended, or never enabled)
Enable or suspend versioning on an S3 bucket for object version management
Get all tags on an S3 bucket as key-value pairs for resource organization and billing
Set tags on an S3 bucket (replaces all existing tags). Max 50 tags per bucket
List objects in an S3 bucket with prefix filtering, delimiter grouping, and pagination support
Get metadata for an S3 object (size, type, last modified) without downloading content
Upload base64-encoded content as an S3 object with optional content type and metadata
Download an S3 object and return its content as base64-encoded string. Set returndownloadurl=true for a short-lived presigned download URL instead, which handles larger files.
Delete a single object from an S3 bucket. Use delete_objects for batch deletion
Batch delete up to 1000 objects from an S3 bucket in a single request
Copy an S3 object within the same bucket or across buckets in the same region
Get all tags on an S3 object as key-value pairs for resource classification
Set tags on an S3 object (replaces all existing tags). Max 10 tags per object
Generate a temporary presigned URL for downloading an S3 object without AWS credentials
Generate a temporary presigned URL for uploading to S3 without AWS credentials via HTTP PUT
Validate Amazon S3 credentials. Verifies credentials during setup.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}It's an MCP server that gives your agents access to Amazon S3 storage via tools. Your agents can invoke these tools to list objects in a bucket, read file contents, upload new files, generate presigned download links, and more.
AWS offers an official MCP server, but you can also use one from a third-party platform, like Merge Agent Handler.
The use cases naturally depend on the agent you've built, but here are a few common ones:
Here are some of the most commonly used tools:
list_objects: returns objects in a specified bucket and prefix, with optional filters for key pattern or last-modified date. Useful for agents that need to discover what files exist before reading or processing themget_object: downloads the content of a specific S3 object and returns it to the agent. Call this when an agent needs to read a file's contents to parse, summarize, or route it downstreamput_object: uploads a file or text payload to a specified S3 key. Good for workflows where an agent produces output that needs to be persisted to cloud storage for other systems to consumedelete_object: removes a specific object from a bucket. Use this when an agent is running a cleanup or archival workflow and needs to free up storage after files have been processed or expiredcreate_presigned_url: generates a time-limited URL that grants temporary access to a private S3 object without changing bucket permissions. Helpful when an agent needs to share a file securely with an external user or downstream servicecopy_object: copies an object from one S3 location to another within or across buckets. Use this when an agent needs to move processed files into an archive prefix or replicate objects between environmentsUsing Merge Agent Handler for your Amazon S3 MCP server gives you capabilities that community implementations or self-built integrations typically don't include:
You can take the following steps:
1. Create or log into your Merge Agent Handler account and navigate to Tool Packs (collections of connector tools scoped to a specific use case).
2. Create a new Tool Pack, then find and enable the Amazon S3 connector. Select the tools that fit your use case: read-only tools like list_objects and get_object are enough for processing workflows, while put_object and delete_object are needed if your agent needs to write or clean up files.
3. Add a Registered User inside the Tool Pack. This is the identity context under which your agent operates. Merge generates a unique MCP URL scoped to this user once it's created.
4. From the Registered User detail page, connect Amazon S3 by entering your AWS credentials. Merge stores and manages those credentials going forward.
5. Copy the MCP URL from the Tool Pack detail page and generate an API key from Settings. You'll need both to connect your agent.
6. Add the MCP server to your agent or IDE using the MCP URL and API key. Your Amazon S3 tools are now accessible through that endpoint.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now