Skip to main content
Glama
Desmond-Labs

Supabase Storage MCP

by Desmond-Labs

Supabase Storage MCP

A secure, production-ready Model Context Protocol (MCP) server for Supabase Storage with advanced security features, batch operations, and comprehensive file management.

Features

πŸ›‘οΈ Enterprise-Grade Security

  • Multi-layer Defense: Rate limiting, threat detection, and audit logging

  • Input Validation: Comprehensive validation with Zod schemas and DOMPurify sanitization

  • Real-time Monitoring: Security metrics and alert system

  • Path Traversal Prevention: Advanced protection against directory traversal attacks

  • File Type Validation: MIME type verification and file signature checking

πŸ—‚οΈ Bucket Management

  • Secure Bucket Creation: Create storage buckets with security validation

  • Organized Structure: Automated folder organization for scalable workflows

  • Batch Setup: Initialize multiple buckets with consistent configuration

πŸ–ΌοΈ Advanced File Operations

  • Batch Upload: Upload 1-500 files with progress tracking and detailed reporting

  • Dual Input Support: Handle both local file paths and base64 data (Claude Desktop compatible)

  • File Validation: Size limits, MIME type checking, and signature verification

  • Transform on Download: Resize, compress, and format images during download

  • Auto-Download System: Generate JavaScript code for browser downloads

πŸ“ File Management

  • Secure Downloads: Time-limited signed URLs with access controls

  • Batch Operations: Process multiple files efficiently

  • Advanced Search: Filter by extension, folder, and metadata

  • Custom Filenames: Override default names during download

πŸ”— Auto-Download Features

  • Intelligent Triggers: Automatic browser downloads with custom filenames

  • Batch Downloads: Sequential downloads with configurable delays

  • JavaScript Generation: Ready-to-use browser scripts

  • Multiple Formats: Support for signed URLs, base64, and binary data

Related MCP server: Supabase MCP Server - Self-Hosted Edition

Installation

Prerequisites

  • Node.js >= 18.0.0

  • npm >= 8.0.0

  • Supabase project with Storage enabled

Setup

  1. Clone and install dependencies:

git clone https://github.com/your-username/supabase-storage-mcp.git
cd supabase-storage-mcp
npm install
  1. Configure environment variables:

cp .env.example .env

Edit .env with your Supabase credentials:

SUPABASE_URL=https://your-project-id.supabase.co
SUPABASE_SERVICE_KEY=your-service-role-key
NODE_ENV=production
  1. Build the project:

npm run build
  1. Start the MCP server:

npm start

Configuration

Claude Desktop Integration

Add to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "supabase-storage": {
      "command": "node",
      "args": ["/path/to/supabase-storage-mcp/dist/index.js"],
      "description": "Supabase Storage MCP for file and bucket management"
    }
  }
}

Environment Variables

Variable

Required

Description

Default

SUPABASE_URL

βœ…

Your Supabase project URL

-

SUPABASE_SERVICE_KEY

βœ…

Your Supabase service role key

-

NODE_ENV

❌

Environment mode

development

LOG_LEVEL

❌

Logging verbosity

info

Security Configuration

The server includes comprehensive security features enabled by default:

  • Rate limiting (100 requests per minute globally)

  • File size limits (50MB per file, 500 files per batch)

  • MIME type restrictions (images only by default)

  • Path traversal protection

  • Input sanitization

Usage

Basic Bucket Operations

// Create a storage bucket
await mcp.call('create_bucket', {
  bucket_name: 'my-images',
  is_public: false
});

// Setup standard bucket structure
await mcp.call('setup_buckets', {
  base_bucket_name: 'storage',
  user_id: 'user123'
});

File Upload

// Upload multiple images (file paths)
await mcp.call('upload_image_batch', {
  bucket_name: 'storage-images',
  batch_id: 'batch001',
  folder_prefix: 'original',
  user_id: 'user123',
  image_paths: ['/path/to/image1.jpg', '/path/to/image2.png']
});

// Upload with base64 data (Claude Desktop compatible)
await mcp.call('upload_image_batch', {
  bucket_name: 'storage-images',
  batch_id: 'batch002', 
  folder_prefix: 'original',
  user_id: 'user123',
  image_data: [
    {
      filename: 'image1.jpg',
      content: 'data:image/jpeg;base64,/9j/4AAQSkZJRg...',
      mime_type: 'image/jpeg'
    }
  ]
});

File Management

// List files in a bucket
await mcp.call('list_files', {
  bucket_name: 'storage-images',
  folder_path: 'original/user123',
  file_extension: '.jpg'
});

// Generate signed download URLs  
await mcp.call('get_file_url', {
  bucket_name: 'storage-images',
  storage_path: 'original/user123/batch001/image1.jpg',
  expires_in: 3600
});

// Batch signed URLs
await mcp.call('create_signed_urls', {
  bucket_name: 'storage-images',
  file_paths: ['path1.jpg', 'path2.png'],
  expires_in: 1800
});

Advanced Downloads

// Download with auto-trigger
await mcp.call('download_file_with_auto_trigger', {
  bucket_name: 'storage-images',
  file_path: 'original/user123/image1.jpg',
  return_format: 'base64',
  auto_download: true,
  custom_filename: 'my-image.jpg'
});

// Batch download with auto-trigger
await mcp.call('batch_download', {
  bucket_name: 'storage-images', 
  file_paths: ['image1.jpg', 'image2.png'],
  return_format: 'signed_url',
  auto_download: true,
  download_delay: 1000
});

Image Transformations

// Download with transformations
await mcp.call('download_file', {
  bucket_name: 'storage-images',
  file_path: 'original/image1.jpg',
  return_format: 'base64',
  transform_options: {
    width: 800,
    height: 600, 
    quality: 85
  }
});

Security Monitoring

// Get security status
await mcp.call('get_security_status', {});

API Reference

Tools

Tool Name

Description

create_bucket

Create a new storage bucket

setup_buckets

Initialize standard bucket structure

upload_image_batch

Upload multiple files with validation

list_files

List files in bucket with filtering

get_file_url

Generate signed download URL

create_signed_urls

Generate multiple signed URLs

download_file

Download file content with transformations

download_file_with_auto_trigger

Download with auto-download JavaScript

batch_download

Download multiple files with auto-trigger

get_security_status

Get security metrics and status

File Organization

The server automatically organizes uploaded files in a structured format:

bucket-name/
β”œβ”€β”€ original/
β”‚   └── {user_id}/
β”‚       └── {batch_id}/
β”‚           β”œβ”€β”€ image1.jpg
β”‚           └── image2.png
└── processed/
    └── {user_id}/
        └── {batch_id}/
            β”œβ”€β”€ thumb_image1.jpg  
            └── optimized_image2.png

Security

Built-in Protections

  • Rate Limiting: Prevents API abuse

  • Input Validation: Sanitizes all inputs

  • File Validation: MIME type and signature checking

  • Path Security: Prevents directory traversal

  • Size Limits: Configurable file and batch size limits

  • Audit Logging: Complete operation tracking

Security Best Practices

  • Store your service role key securely

  • Use environment variables for configuration

  • Monitor security logs regularly

  • Keep dependencies updated

  • Use HTTPS in production

Performance

Batch Upload Performance

  • Small batches (1-25 files): ~15-30 seconds

  • Medium batches (26-100 files): ~45-90 seconds

  • Large batches (101-500 files): ~3-8 minutes

  • Parallel uploads: 3 concurrent streams

  • Memory efficient: Streams large files

Download Performance

  • File URL generation: <50ms per URL

  • Direct downloads: 100-500ms per file

  • Batch operations: ~600 files per minute

  • Transform on download: 200-800ms per image

Development

Build

npm run build

Development Mode

npm run dev

Security Audit

npm run security-check

Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support


Built with ❀️ for the MCP and Supabase communities.

Available Tools

10 tools
batch_downloadC

Download multiple files with optional auto-download triggers and batch processing

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesSource bucket
file_pathsYesArray of file paths to download
return_formatNoFormat to return filessigned_url
auto_downloadNoGenerate auto-download trigger code for batch
download_delayNoDelay between downloads in milliseconds
expires_inNoURL expiration in seconds (for signed_url format)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but provides minimal behavioral disclosure. It mentions 'auto-download triggers' and 'batch processing' but doesn't explain what these mean operationally, what permissions are required, rate limits, error handling, or what the output looks like. For a tool with 6 parameters and no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that efficiently conveys the core functionality. No wasted words, though it could be slightly more specific about what 'batch processing' entails. Appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain the return format, error conditions, permissions needed, or how the batch processing actually works. The agent would struggle to use this tool effectively without trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no specific parameter information beyond what's in the schema. The baseline of 3 is appropriate when the schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'download' and resource 'multiple files', specifying it's a batch operation. It distinguishes from sibling 'download_file' by indicating multiple files, but doesn't explicitly contrast with 'download_file_with_auto_trigger' which has similar auto-download functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description mentions 'optional auto-download triggers and batch processing' but doesn't specify when these features are appropriate or when to choose this over 'download_file' or 'download_file_with_auto_trigger'. No prerequisites or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_bucketB

Create a new storage bucket with comprehensive security validation and audit logging

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket to create (3-63 chars, lowercase, alphanumeric with hyphens)
is_publicNoWhether the bucket should be public

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'comprehensive security validation and audit logging,' which hints at safety features, but doesn't specify what validation entails, whether the operation is idempotent, or what happens on failure. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('create a new storage bucket') and adds value with extra context ('comprehensive security validation and audit logging'). Every word earns its place, with no redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation with security implications), no annotations, and no output schema, the description is minimally adequate. It covers the basic purpose and hints at behavioral traits but lacks details on permissions, error handling, or return values. This leaves room for improvement in guiding safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, fully documenting both parameters ('bucket_name' and 'is_public') with constraints and defaults. The description adds no additional parameter details beyond what the schema provides, such as explaining the implications of 'is_public' on security. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('create') and resource ('storage bucket'), making the purpose unambiguous. It distinguishes from siblings like 'setup_buckets' (which might configure existing buckets) and 'upload_image_batch' (which uploads files). However, it doesn't explicitly differentiate from all siblings, such as 'create_signed_urls' (which creates URLs, not buckets).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing permissions or existing infrastructure, or when to choose other tools like 'setup_buckets' for batch operations. Without this context, users must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_signed_urlsC

Generate multiple signed download URLs in a single request for batch operations

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesSource bucket
file_pathsYesArray of file paths to generate URLs for
expires_inNoURL expiration in seconds (default: 3600)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions generating 'signed download URLs' which implies authentication/authorization needs, but doesn't specify what permissions are required, whether URLs are time-limited (beyond the 'expires_in' parameter), or what happens on failure. The batch nature suggests efficiency gains, but no rate limits or error handling details are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently communicates the core functionality. Every word earns its place: 'Generate' (action), 'multiple signed download URLs' (what), 'in a single request' (how), 'for batch operations' (why). No wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that generates authenticated URLs (a security-sensitive operation) with no annotations and no output schema, the description is insufficient. It doesn't explain what the signed URLs enable, what format they return in, error conditions, or security implications. The batch operation context is mentioned but not elaborated, leaving significant gaps in understanding the tool's complete behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description doesn't add any meaningful parameter information beyond what's already in the schema (which has 100% coverage). It mentions 'multiple signed download URLs' which aligns with the 'file_paths' array parameter, but provides no additional context about path formats, bucket naming conventions, or expiration behavior that isn't already documented in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Generate multiple signed download URLs') and resource ('in a single request for batch operations'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from siblings like 'get_file_url' or 'download_file', which likely serve similar purposes but for single files or different contexts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'batch operations' which implies usage when multiple URLs are needed, but provides no explicit guidance on when to use this tool versus alternatives like 'get_file_url' or 'download_file'. There's no mention of prerequisites, performance considerations, or specific scenarios where this tool is preferred over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_fileC

Download file content directly with optional image transformations

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesSource bucket
file_pathYesFull file path in storage
return_formatNoFormat to return file contentbase64
transform_optionsNoOptional image transformation settings

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions 'optional image transformations' but doesn't disclose what happens if transformations fail, whether the download is destructive to the source, authentication requirements, rate limits, or error handling. For a download tool with zero annotation coverage, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('download file content') and mentions a key feature ('optional image transformations'). There is no wasted verbiage or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain return values (e.g., what 'base64' or 'binary' format entails), error conditions, or how transformations interact with non-image files. The lack of behavioral context makes it incomplete for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds marginal value by hinting at 'optional image transformations' which aligns with the 'transform_options' parameter, but doesn't provide additional context beyond what the schema already specifies. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('download file content') and resource ('file'), and mentions optional image transformations. However, it doesn't explicitly differentiate from sibling tools like 'download_file_with_auto_trigger' or 'get_file_url', which likely have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'batch_download', 'download_file_with_auto_trigger', or 'get_file_url'. It mentions optional transformations but doesn't specify when they apply or any prerequisites for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_file_with_auto_triggerC

Download file with optional auto-download trigger and custom filename support

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesSource bucket
file_pathYesFull file path in storage
return_formatNoFormat to return file content or URLbase64
auto_downloadNoGenerate auto-download trigger code
custom_filenameNoCustom filename for download
transform_optionsNoOptional image transformation settings

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but lacks critical behavioral details. It doesn't disclose whether this requires authentication, has rate limits, what happens on failure, or the output format (e.g., file content vs. URL). The mention of 'auto-download trigger' is vague without explaining what that entails operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Download file') and highlights key optional features. There's no wasted verbiage, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain the return value (e.g., file content, URL, or trigger code), error conditions, or security implications, leaving significant gaps for an AI agent to infer behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds minimal value by hinting at 'auto-download trigger' and 'custom filename', which correspond to schema parameters, but doesn't provide additional context beyond what's in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as downloading a file with specific optional features (auto-download trigger and custom filename). It distinguishes from basic 'download_file' by mentioning these extras, though it doesn't explicitly compare to all siblings like 'get_file_url' or 'batch_download'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'download_file', 'get_file_url', or 'batch_download'. The description mentions optional features but doesn't specify scenarios where auto-download or custom filenames are beneficial, nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_file_urlB

Generate signed download URL for secure file access

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesSource bucket
storage_pathYesFull file path in storage
expires_inNoURL expiration in seconds (default: 7200)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'signed' and 'secure' which imply authentication/authorization needs, but doesn't specify required permissions, rate limits, or what happens if the file doesn't exist. For a tool that generates access URLs with security implications, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with good schema coverage and no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 100% schema coverage but no annotations and no output schema, the description provides basic purpose but lacks important context about security requirements, error conditions, and return format. It's minimally adequate but leaves significant gaps about how the tool actually behaves in practice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all three parameters. The description adds no parameter-specific information beyond what's in the schema. The baseline of 3 is appropriate when the schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Generate' and the resource 'signed download URL', specifying it's for 'secure file access'. It distinguishes from siblings like 'download_file' by focusing on URL generation rather than direct download, but doesn't explicitly contrast with 'create_signed_urls' which appears similar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'download_file', 'batch_download', or 'create_signed_urls'. It mentions 'secure file access' but doesn't explain why this method is preferred over direct download tools in specific contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_security_statusA

Get current security configuration and audit information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden of behavioral disclosure. It only restates the action implied by the name and gives no information about side effects, required authorization, rate limits, or what exactly the returned audit data contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words. Every word contributes to the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-oriented tool, the description is minimally viable for selection and invocation. However, with no output schema and no annotations, it does not describe the return shape or whether any special access is needed, leaving some ambiguity about what an agent should do with the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the empty schema fully documents this. The description needs to add no parameter-level meaning, so the 0-parameter baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states a specific action ('Get') and resource ('current security configuration and audit information'). It is immediately distinguishable from the unrelated sibling tools analyze_image and upload_to_supabase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives, or any preconditions. Although the siblings are clearly unrelated, the description leaves all usage timing implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_filesC

Enumerate files in bucket folder for processing or download

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesBucket to search
folder_pathNoSpecific folder path
file_extensionNoFilter by extension (.jpg, .png)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'Enumerate files' which implies a read operation, but doesn't specify whether this is paginated, what format results return, if there are rate limits, or authentication requirements. For a tool with 3 parameters and no annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a listing tool and front-loads the essential information. Every word earns its place in this concise formulation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the enumeration returns (list of filenames? metadata?), doesn't mention pagination for large result sets, and provides minimal behavioral context. Given the complexity and lack of structured data, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain how parameters interact or provide usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Enumerate files') and target ('in bucket folder'), specifying the purpose as listing files for processing or download. It distinguishes from siblings like download_file or upload_image_batch by focusing on enumeration rather than file manipulation. However, it doesn't explicitly differentiate from batch_download or get_file_url in terms of scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'for processing or download' which implies usage context, but provides no explicit guidance on when to use this tool versus alternatives like batch_download or get_file_url. There are no when-not-to-use statements or clear prerequisites, leaving the agent to infer appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_bucketsC

Initialize standard storage buckets for organized file management workflows

ParametersJSON Schema
NameRequiredDescriptionDefault
base_bucket_nameNoBase name for bucketsstorage
user_idNoUser identifier for organization

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but lacks critical behavioral details. It doesn't disclose whether this is a read/write operation, if it requires specific permissions, what 'standard' means, or potential side effects like overwriting existing buckets, making it insufficient for safe agent invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words, clearly front-loading the purpose. It's appropriately sized for a tool with two parameters and no complex annotations, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool that likely performs mutations (implied by 'Initialize'). It lacks details on behavioral traits, return values, error handling, and how it differs from siblings, leaving significant gaps for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The description adds no additional meaning beyond implying 'standard' buckets and 'organized workflows', which doesn't clarify parameter usage beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Initialize') and resource ('standard storage buckets'), specifying it's for 'organized file management workflows'. It distinguishes from siblings like 'create_bucket' by implying a multi-bucket setup with organizational standards, though not explicitly contrasting them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'create_bucket' or 'batch_download'. It mentions 'organized file management workflows' but doesn't specify prerequisites, exclusions, or comparative contexts, leaving usage ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_image_batchC

Upload multiple images to designated bucket and folder (supports both file paths and base64 data)

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesTarget bucket name
batch_idYesUnique batch identifier
folder_prefixYesFolder organization (original/processed)
user_idYesUser identifier
image_pathsNoLocal file paths to upload (for local testing)
image_dataNoBase64 encoded image data (for Claude Desktop compatibility)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the upload action and supported formats, it lacks critical information: whether this is a mutating operation (implied but not stated), what permissions are required, whether there are rate limits or size constraints beyond the schema's maxItems, what happens on failure (partial uploads?), and what the response contains. For a batch upload tool with no annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core functionality without any wasted words. It's appropriately front-loaded with the main action and includes the key detail about dual input formats in a parenthetical. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch upload tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address critical behavioral aspects like mutation implications, error handling, response format, or usage context. The agent would need to infer too much about how this tool behaves in practice given its complexity and lack of structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by mentioning 'supports both file paths and base64 data' which corresponds to the image_paths and image_data parameters, but doesn't provide additional context beyond what's in the schema descriptions. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('upload multiple images') and target ('to designated bucket and folder'), with the specific detail about supporting both file paths and base64 data. However, it doesn't explicitly differentiate this batch upload tool from potential single-file upload siblings that might exist on the server (though none are listed among the siblings).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'create_signed_urls' or 'list_files'. It mentions the two input formats (file paths vs base64) but doesn't explain when each format is appropriate (e.g., local testing vs remote scenarios). No prerequisites, exclusions, or alternative recommendations are provided.

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.

  1. 10 tool updatesv1.0.0
    • Changedbatch_download1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcreate_bucket1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcreate_signed_urls1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeddownload_file1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changeddownload_file_with_auto_trigger1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_file_url1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_security_status1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_files1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsetup_buckets1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedupload_image_batch2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "image_paths"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "image_data"
        +    ]
        +  }
        +]
  2. 10 tool updates
    • First observedbatch_download
    • First observedcreate_bucket
    • First observedcreate_signed_urls
    • First observeddownload_file
    • First observeddownload_file_with_auto_trigger
    • First observedget_file_url
    • First observedget_security_status
    • First observedlist_files
    • First observedsetup_buckets
    • First observedupload_image_batch

TDQS

B3.2/5.0

Scored across 10 tools

Disambiguation3/5

There is significant overlap between download-related tools (batch_download, download_file, download_file_with_auto_trigger, get_file_url, create_signed_urls) that could cause confusion about which to use for different download scenarios. However, the descriptions help clarify some distinctions like batch operations versus single file downloads. The upload and bucket management tools are more clearly differentiated.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (create_bucket, download_file, list_files, upload_image_batch) with clear action-oriented names. The main deviation is 'get_file_url' and 'get_security_status' which use 'get' instead of more specific verbs like 'generate' or 'retrieve', but overall the naming is quite readable and predictable.

Tool Count4/5

With 10 tools, this is a reasonable number for a storage management server. The count feels slightly high due to the multiple overlapping download tools, but it covers core storage operations (upload, download, bucket management, security) without being overwhelming. A more consolidated download interface could reduce the count to be more optimal.

Completeness4/5

The toolset provides good coverage of storage operations including CRUD-like functionality (upload, download, list), bucket management (create, setup), and security features. Minor gaps include missing file deletion, bucket deletion, and file metadata updates, but agents can accomplish most storage workflows with the available tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables minimal interaction with Supabase databases through 4 essential tools for data querying, mutations, file storage, and user authentication. Designed for 70% less context usage than standard implementations with auto-truncated results and simplified parameters.
    2
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables interaction with S3-compatible storage services like AWS S3 and Cloudflare R2, supporting bucket management, object listing, reading, uploading, and deletion operations.
    5
    240 npm
    ISC
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables seamless integration with Backblaze B2 cloud storage for managing buckets, uploading/downloading files, handling large multipart uploads, and managing application keys through natural language interactions.
    18 npm
    1
    MIT