Object-storage MCP server - one tool surface over S3 and S3-compatible stores (MinIO/R2), Google Cloud Storage, Azure Blob, and a zero-infra local-filesystem backend. Tools: 'objects' (list/head/get/put/copy/move/delete/presign/metadata), 'buckets' (list/create/delete/exists/info/stores), 'transfer' (upload/download, single or by prefix). Named stores come from OBJECTSTORE_STORES; the 'local' filesystem store always exists.
ObjectStore MCP provides 14 well-named tools with consistent verb_noun patterns (list_buckets, create_bucket, delete_bucket, etc.). All tools have descriptions (avg ~80 chars) and input schemas with typed parameters. However, descriptions are terse and lack context about when to use each tool, error conditions, or recovery guidance. Output schemas are not documented. Parameter descriptions are minimal, many lack format constraints, ranges, or examples of valid values. Error handling is mentioned in docstrings (e.g., 'Raises AlreadyExistsError') but no recovery guidance is provided. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Schemas are present but sparse, many parameters lack detailed constraints.
Return True when the bucket exists.
Describe one bucket. Raises NotFoundError when absent.
Server-side (where possible) copy of one object.
Create a bucket. Raises AlreadyExistsError if it exists.
Delete an EMPTY bucket. Raises BucketNotEmptyError otherwise.
Delete exactly one object. Raises NotFoundError when absent.
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., what does list_buckets return? bucket names only, or also creation dates, sizes?). Breaks tool chaining.
Descriptions lack recovery guidance. Tools mention errors (e.g., 'Raises AlreadyExistsError', 'Raises NotFoundError') but do not tell the LLM what to do next. No guidance on retryability or alternatives.
No tool annotations despite clear risk levels. delete_bucket and delete_object are destructive but lack destructiveHint. list_* and get_* are read-only but lack readOnlyHint. Agents cannot reason about safety.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | <=2025-11-25 | v2 |
Download an object's bytes. Raises ObjectStoreError when the object exceeds max_bytes.
Return the user metadata of one object.
Stat one object without downloading it.
List all buckets/containers visible to the credentials.
List objects under prefix, optionally folding at delimiter.
Mint a presigned URL. Raises UnsupportedOperationError when the backend cannot presign.
Upload bytes to bucket/key (overwrites).
Replace the user metadata of one object.
Parameter descriptions are minimal. 'max_bytes' in get_object lacks guidance on what happens if exceeded. 'delimiter' in list_objects lacks explanation of folding behavior. 'expires_in' in presigned_url lacks range constraints.
No pagination guidance for list_objects. Continuation token is present but description does not explain when/how to use it or what total count is returned. Large result sets could exhaust context.