GCS MCP Server has clear, action-verb naming (list_, create_, delete_, get_, upload_, copy_) and reasonable descriptions (avg ~80 chars). All 9 tools have input schemas with typed parameters and descriptions. However, schemas lack enums for constrained values (e.g., storage_class, location), parameter descriptions are minimal (10-30 chars), and output schemas are not formally documented. Error handling is absent, no guidance on retryability, user-fixable errors, or recovery paths. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Composition is sound (single responsibility per tool), but missing pagination for list operations and no confirmation pattern for destructive ops.
Copy an object from one location to another in GCS
Create a new GCS bucket
Delete a GCS bucket
Delete an object from GCS
List objects in a GCS bucket with optional prefix filter
List all GCS buckets in the project with their details
List all versions of an object if versioning is enabled
No enum constraints for storage_class (STANDARD, NEARLINE, COLDLINE, ARCHIVE) or location parameters. LLMs will hallucinate invalid values.
Output schemas not formally documented. Tool descriptions state what is returned (e.g., 'returns list of bucket info') but JSON Schema output type is missing. LLMs cannot plan downstream calls without knowing response structure.
No error handling or recovery guidance. Destructive operations (delete_bucket, delete_object) lack confirmation pattern or dry-run support. No error messages guide LLM on retryability or user-fixable issues.
Missing tool annotations. Tools marked with risk levels (READ_ONLY, WRITE, DESTRUCTIVE) in metadata but not exposed via readOnlyHint/destructiveHint in schema. LLMs cannot infer safety properties.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Read the contents of a GCS object
Upload content to a GCS object
No pagination support. get_bucket_objects and list_object_versions lack limit/offset or cursor parameters. Large buckets will return unbounded results, exhausting context window.