MCP server for Wasabi S3-compatible cloud storage operations
Three tools with complete schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names lack action verbs (bucket, object, presign are nouns). Descriptions are adequate (100-150 chars) but lack WHEN/WHY guidance. Parameter descriptions exist but many lack format/constraint details. No documented output schemas. Error handling present but minimal recovery guidance. Schemas are well-formed JSON Schema with enums and types, but several parameters (e.g., local_path, content_type) lack detailed constraints.
Manage Wasabi buckets: list all buckets, create, delete, or get location
Manage objects in Wasabi buckets: list, upload, download, delete, or get metadata
Generate presigned URLs for temporary access to objects (GET or PUT)
Tool names are nouns, not action verbs. 'bucket' and 'object' do not convey what action occurs. Should be 'manage_bucket', 'manage_object', or split into verb_noun pairs like 'list_buckets', 'create_bucket', 'upload_object', 'download_object'.
Output schemas are not documented. Callers cannot predict response structure. Tool descriptions mention 'returns JSON' but do not specify fields, types, or pagination. LLMs cannot plan downstream calls without knowing what fields are available.
Parameter 'local_path' in object tool lacks format/constraint details. No description of whether it must be absolute, relative, or if it supports ~ expansion. No guidance on file size limits or supported encodings.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Descriptions lack WHEN/WHY context. 'Manage Wasabi buckets' does not explain when to call this vs other tools, or what prerequisites exist (e.g., credentials must be configured). LLMs cannot infer selection criteria.
No error recovery guidance. Code throws McpError for missing params but does not suggest next steps (e.g., 'Bucket name required for create action. Call bucket with action=list to see available buckets'). Errors are not categorized as retryable vs fatal.