MCP server for Storj decentralized storage — use Storj directly from Claude Desktop, Cursor, Windsurf, VS Code Copilot, and any MCP-compatible AI client. Upload, download, list, share, and manage files on Storj with natural language.
This is a well-structured, domain-specific MCP server with 28 tools for Storj cloud storage operations. Strengths: consistent naming with action verbs (list_, create_, delete_, upload_, download_, etc.), comprehensive descriptions (most 50-200 chars, well-optimized for LLM selection), complete input schemas with types and descriptions for all tools, clear risk classification (READ_ONLY, WRITE, DESTRUCTIVE), and good composition patterns (e.g., batch delete_buckets and delete_objects alongside singular operations). Weaknesses: output schemas are not explicitly documented in the provided source code (only tool registration visible), error handling guidance is not evident in the definitions, and some parameter descriptions could be more prescriptive about constraints (e.g., regex patterns, length limits, valid formats). Tool annotations are present (destructiveHint, readOnlyHint) which is excellent for safety. The 28 tools are well-organized into logical feature modules (buckets, objects, upload, download, read, edge, multipart) and support idempotent operations where appropriate (create_bucket explicitly states idempotence).
Abort and discard one incomplete multipart upload (identified by key + upload_id from list_multipart_uploads), freeing the storage it holds.
Summarize storage usage for a bucket (or a prefix): object count and total bytes stored. Like "du" for Storj.
Copy an object to a new key or bucket on Storj
Create a new bucket in your Storj project (idempotent — safe to call if bucket already exists)
Delete a Storj bucket. By default the bucket must be empty; set with_objects=true to delete all contents too.
Batch-delete multiple buckets by name list or glob pattern (e.g. "logs-*", "test-*"). Shows progress and reports per-bucket success/failure.
Output schemas not explicitly documented in tool definitions. The source code shows input schemas clearly, but return types are not visible in the provided tool registration code. Downstream agents cannot be certain what fields will be returned.
Error handling guidance not visible in tool descriptions. Tools like delete_bucket, delete_object, and delete_objects (DESTRUCTIVE risk) do not document what happens on failure, what errors are recoverable, or how the agent should respond to partial failures in batch operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2025-06-18+ | v2 |
Delete an object from a Storj bucket
Batch-delete multiple objects by key list, prefix, or glob pattern (e.g. "*.log", "photos/**/*.tmp"). Shows progress and reports per-object success/failure.
Download a Storj object and save it to a local file path
Bulk-download every object under a prefix (or a whole bucket) to a local directory, preserving folder layout. Guards against path-escape from hostile object keys; shows progress and reports per-object success/failure.
Download a Storj object and return its content as text. Loads the full file — use peek_object_head, peek_object_tail, or grep_object for large files.
Generate a public shareable URL for a Storj object using Storj Edge linkshare service. Optionally set an expiry.
Issue S3-compatible credentials (access key, secret, endpoint) for use with rclone, aws-cli, or any S3 SDK. Scoped to one bucket/prefix with least-privilege permissions (read-only by default) and an optional expiry. The secret key is sensitive — handle with care.
Stream-search a Storj object for a keyword and return only the matching lines. Aborts as soon as max_matches is reached — never downloads the full file. Supports surrounding context lines (like grep -C). Case-insensitive. Safe for multi-GB log files, large CSVs, or any text file.
List all buckets in your Storj project
List pending (incomplete) multipart uploads in a bucket. These are invisible to list_objects but still consume storage until aborted or committed.
List objects in a Storj bucket, optionally filtered by prefix
Move or rename an object on Storj
Read the first N lines of a Storj object without downloading the whole file. Only fetches the minimum bytes needed. Ideal for CSV headers, JSON structure, config files, or any text file. Safe on files of any size.
Read the last N lines of a Storj object without downloading the whole file. Only fetches the final 512 KB regardless of total size. Ideal for recent log entries, last rows of a CSV, or the tail of any append-only file.
Serialize the current Storj access grant to a string that can be shared or stored
Create a restricted, serialized Storj access grant with specific permissions (download/upload/list/delete), optionally scoped to a bucket prefix and with an expiry time
Get information about a single Storj bucket (name and creation time). Useful to check whether a bucket exists.
Get information about a Storj object: size, creation date, expiry, and custom metadata
Update custom metadata key-value pairs on an existing Storj object
Recursively upload a local folder to a Storj bucket under an optional key prefix. Skips symlinks and sensitive paths; shows progress and reports per-file success/failure.
Read a local file from disk and upload it to Storj
Upload text or string content as an object to Storj
Parameter constraints not fully specified in descriptions. Numeric parameters (chunk_size, expires_in_hours, lines, max_matches, context_lines) lack minimum/maximum bounds. File path parameters (file_path, directory) do not document path traversal protection or symlink handling.
serialize_access tool has minimal description ('Serialize the current Storj access grant to a string that can be shared or stored'). Does not explain when to call it, what format is returned, or security implications of sharing the serialized token.
Batch operations (delete_buckets, delete_objects, upload_directory, download_prefix) claim to show 'per-item success/failure' but there is no visible documentation of the response structure. Agents cannot know how to interpret partial success.
Permission/scope declarations not visible in tool definitions. Tools like get_s3_credentials and share_access that issue credentials and access grants do not explicitly document what permissions they require from the calling user/agent or what scope they grant.