Supabase Storage MCP
Provides comprehensive file and bucket management capabilities for Supabase Storage, including secure file uploads, batch operations, image transformations, signed URL generation, and advanced security features with audit logging.
Click on "Deploy 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., "@Supabase Storage MCPupload my profile picture from /photos/avatar.jpg to the users bucket"
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.
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
Clone and install dependencies:
git clone https://github.com/your-username/supabase-storage-mcp.git
cd supabase-storage-mcp
npm installConfigure environment variables:
cp .env.example .envEdit .env with your Supabase credentials:
SUPABASE_URL=https://your-project-id.supabase.co
SUPABASE_SERVICE_KEY=your-service-role-key
NODE_ENV=productionBuild the project:
npm run buildStart the MCP server:
npm startConfiguration
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 |
| β | Your Supabase project URL | - |
| β | Your Supabase service role key | - |
| β | Environment mode |
|
| β | Logging verbosity |
|
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 a new storage bucket |
| Initialize standard bucket structure |
| Upload multiple files with validation |
| List files in bucket with filtering |
| Generate signed download URL |
| Generate multiple signed URLs |
| Download file content with transformations |
| Download with auto-download JavaScript |
| Download multiple files with auto-trigger |
| 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.pngSecurity
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 buildDevelopment Mode
npm run devSecurity Audit
npm run security-checkContributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
Issues: GitHub Issues
Documentation: This README and inline code comments
Community: Discussions
Built with β€οΈ for the MCP and Supabase communities.
Available Tools
10 toolsbatch_downloadC
Download multiple files with optional auto-download triggers and batch processing
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | Source bucket | |
| file_paths | Yes | Array of file paths to download | |
| return_format | No | Format to return files | signed_url |
| auto_download | No | Generate auto-download trigger code for batch | |
| download_delay | No | Delay between downloads in milliseconds | |
| expires_in | No | URL expiration in seconds (for signed_url format) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | Name of the bucket to create (3-63 chars, lowercase, alphanumeric with hyphens) | |
| is_public | No | Whether the bucket should be public |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | Source bucket | |
| file_paths | Yes | Array of file paths to generate URLs for | |
| expires_in | No | URL expiration in seconds (default: 3600) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | Source bucket | |
| file_path | Yes | Full file path in storage | |
| return_format | No | Format to return file content | base64 |
| transform_options | No | Optional image transformation settings |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | Source bucket | |
| file_path | Yes | Full file path in storage | |
| return_format | No | Format to return file content or URL | base64 |
| auto_download | No | Generate auto-download trigger code | |
| custom_filename | No | Custom filename for download | |
| transform_options | No | Optional image transformation settings |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | Source bucket | |
| storage_path | Yes | Full file path in storage | |
| expires_in | No | URL expiration in seconds (default: 7200) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | Bucket to search | |
| folder_path | No | Specific folder path | |
| file_extension | No | Filter by extension (.jpg, .png) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| base_bucket_name | No | Base name for buckets | storage |
| user_id | No | User identifier for organization |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| bucket_name | Yes | Target bucket name | |
| batch_id | Yes | Unique batch identifier | |
| folder_prefix | Yes | Folder organization (original/processed) | |
| user_id | Yes | User identifier | |
| image_paths | No | Local file paths to upload (for local testing) | |
| image_data | No | Base64 encoded image data (for Claude Desktop compatibility) |
TDQS
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.
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.
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.
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.
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.
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.
10 tool updates
v1.0.0- Changed
batch_download1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
create_bucket1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
create_signed_urls1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
download_file1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
download_file_with_auto_trigger1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_file_url1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_security_status1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_files1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
setup_buckets1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
upload_image_batch2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / oneOfAdded value: +[ + { + "required": [ + "image_paths" + ] + }, + { + "required": [ + "image_data" + ] + } +]
10 tool updates
- First observed
batch_download - First observed
create_bucket - First observed
create_signed_urls - First observed
download_file - First observed
download_file_with_auto_trigger - First observed
get_file_url - First observed
get_security_status - First observed
list_files - First observed
setup_buckets - First observed
upload_image_batch
TDQS
Scored across 10 tools
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.
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.
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.
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
Related MCP Connectors
Browse, upload, download, and share files in your S3-compatible buckets with delegated roles.
Upload, organize, search, and transform images, videos, and files with AI-powered tools.
Manage Supabase projects end to end across database, auth, storage, realtime, and migrations. Moniβ¦
Your Supabase account in natural language: run SQL, apply migrations, manage tables, storage, edge f
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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-
- FlicenseNot gradedqualityFmaintenanceEnables comprehensive management of self-hosted or cloud Supabase instances with 54+ tools for database operations, authentication, storage, real-time subscriptions, migrations, monitoring, and security auditing.7-
- AlicenseAqualityDmaintenanceEnables interaction with S3-compatible storage services like AWS S3 and Cloudflare R2, supporting bucket management, object listing, reading, uploading, and deletion operations.5240 npmISC
- AlicenseNot gradedqualityFmaintenanceEnables 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 npm1MIT