npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

wasabi-mcp

v2.0.0

Published

MCP server for Wasabi S3-compatible cloud storage operations

Readme

Wasabi MCP Server

npm version

A Model Context Protocol (MCP) server for interacting with Wasabi cloud storage. This server provides tools for managing Wasabi buckets and objects through the MCP interface, enabling integration with Claude Code and other MCP-compatible applications.

v2.0 - Streamable HTTP Transport

This version uses the modern Streamable HTTP transport instead of stdio, making it suitable for:

  • Running as a standalone HTTP server
  • Connecting via MCP aggregators
  • Integration with tools that support HTTP-based MCP servers

Features

Consolidated Tools (3 tools instead of 10)

| Tool | Actions | Description | |------|---------|-------------| | bucket | list, create, delete, location | Manage Wasabi buckets | | object | list, upload, download, delete, metadata | Manage objects in buckets | | presign | get, put | Generate presigned URLs for temporary access |

Installation

From NPM

npm install -g wasabi-mcp

From Source

git clone https://github.com/danielrosehill/Wasabi-S3-MCP.git
cd Wasabi-S3-MCP
npm install
npm run build

Configuration

Environment Variables

The server requires the following environment variables:

| Variable | Description | Example | |----------|-------------|---------| | WASABI_ACCESS_KEY_ID | Your Wasabi access key | AKIAIOSFODNN7EXAMPLE | | WASABI_SECRET_ACCESS_KEY | Your Wasabi secret key | wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY | | WASABI_REGION | Wasabi region | eu-central-2 | | WASABI_ENDPOINT | Wasabi endpoint URL | s3.eu-central-2.wasabisys.com | | PORT | Server port (optional) | 3000 (default) |

Wasabi Regions

Common Wasabi regions and their endpoints:

| Region | Endpoint | |--------|----------| | us-east-1 | s3.us-east-1.wasabisys.com | | us-east-2 | s3.us-east-2.wasabisys.com | | us-central-1 | s3.us-central-1.wasabisys.com | | us-west-1 | s3.us-west-1.wasabisys.com | | eu-central-1 | s3.eu-central-1.wasabisys.com | | eu-central-2 | s3.eu-central-2.wasabisys.com | | eu-west-1 | s3.eu-west-1.wasabisys.com | | eu-west-2 | s3.eu-west-2.wasabisys.com | | ap-northeast-1 | s3.ap-northeast-1.wasabisys.com | | ap-northeast-2 | s3.ap-northeast-2.wasabisys.com | | ap-southeast-1 | s3.ap-southeast-1.wasabisys.com | | ap-southeast-2 | s3.ap-southeast-2.wasabisys.com |

Running the Server

Start the Server

# Set environment variables first, then:
npm start

# Or run directly:
PORT=3000 node dist/index.js

The server will start on http://localhost:3000/mcp with a health check at http://localhost:3000/health.

Usage with Claude Code

JSON Configuration

Add to your Claude Code MCP settings (~/.config/claude-code/settings.json or project-level):

{
  "mcpServers": {
    "wasabi": {
      "url": "http://localhost:3000/mcp",
      "transport": "streamable-http"
    }
  }
}

Note: You must start the server separately before using with Claude Code.

Alternative: Run Server with Environment Variables

Create a .env file:

WASABI_ACCESS_KEY_ID=your_access_key
WASABI_SECRET_ACCESS_KEY=your_secret_key
WASABI_REGION=eu-central-2
WASABI_ENDPOINT=s3.eu-central-2.wasabisys.com
PORT=3000

Then start the server:

npm start

API Reference

bucket

Manage Wasabi buckets.

Parameters:

  • action (string, required): One of list, create, delete, location
  • name (string): Bucket name (required for create, delete, location)

Examples:

// List all buckets
{ "action": "list" }

// Create a bucket
{ "action": "create", "name": "my-new-bucket" }

// Delete a bucket
{ "action": "delete", "name": "my-bucket" }

// Get bucket location
{ "action": "location", "name": "my-bucket" }

object

Manage objects in Wasabi buckets.

Parameters:

  • action (string, required): One of list, upload, download, delete, metadata
  • bucket (string, required): Bucket name
  • key (string): Object key/path (required for upload, download, delete, metadata)
  • local_path (string): Local file path (required for upload and download)
  • prefix (string): Filter prefix for list action
  • max_keys (number): Maximum objects to return (default: 1000)
  • content_type (string): MIME type for upload

Examples:

// List objects
{ "action": "list", "bucket": "my-bucket" }

// List with prefix
{ "action": "list", "bucket": "my-bucket", "prefix": "reports/", "max_keys": 100 }

// Upload a file
{ "action": "upload", "bucket": "my-bucket", "key": "docs/report.pdf", "local_path": "/home/user/report.pdf" }

// Download a file
{ "action": "download", "bucket": "my-bucket", "key": "docs/report.pdf", "local_path": "/home/user/downloads/report.pdf" }

// Delete an object
{ "action": "delete", "bucket": "my-bucket", "key": "docs/old-report.pdf" }

// Get metadata
{ "action": "metadata", "bucket": "my-bucket", "key": "docs/report.pdf" }

presign

Generate presigned URLs for temporary access.

Parameters:

  • bucket (string, required): Bucket name
  • key (string, required): Object key/path
  • operation (string): get (download) or put (upload). Default: get
  • expires_in (number): URL expiration in seconds (default: 3600)
  • content_type (string): Content-Type for PUT operations

Examples:

// Generate download URL
{ "bucket": "my-bucket", "key": "docs/report.pdf" }

// Generate download URL with custom expiration
{ "bucket": "my-bucket", "key": "docs/report.pdf", "expires_in": 7200 }

// Generate upload URL
{ "bucket": "my-bucket", "key": "uploads/new-file.pdf", "operation": "put", "content_type": "application/pdf" }

Usage Examples with Claude

Once configured, use natural language with Claude Code:

List Buckets

List all my Wasabi buckets

Create a Bucket

Create a new Wasabi bucket called "my-backup"

Upload a File

Upload ~/documents/report.pdf to bucket "my-backup" with key "reports/2025/report.pdf"

Download a File

Download "reports/2025/report.pdf" from bucket "my-backup" to ~/Downloads/

Generate Presigned URL

Generate a presigned URL for "reports/2025/report.pdf" in "my-backup" that expires in 2 hours

List Objects with Prefix

List all objects in "my-backup" bucket that start with "reports/"

Security Notes

  • Never commit credentials to version control
  • Use environment variables or secure credential management
  • Presigned URLs provide temporary access - treat them as sensitive
  • Consider using IAM policies to restrict bucket/object access

Troubleshooting

Server doesn't start

  • Verify all environment variables are set
  • Check that your Wasabi credentials are valid
  • Ensure the endpoint matches your region

Connection errors

  • Verify the endpoint URL is correct for your region
  • Check network connectivity to Wasabi
  • Confirm your credentials have appropriate permissions

Upload/Download fails

  • Verify the file path exists and is accessible
  • Check bucket permissions
  • Ensure the bucket exists

License

MIT

Author

Daniel Rosehill ([email protected])

Contributing

Issues and pull requests welcome at GitHub.