MCP server for accessing and managing AWS S3 buckets, listing objects, filtering CSV files, and reading CSV file contents
Server has 4 tools with minimal documentation. Tool names follow verb_noun pattern (getAvailableBuckets, getBucketObjects, getCsvObjects, readCsvObject), which is acceptable. However, descriptions are extremely brief (10-30 chars), well below the 50-200 char baseline for LLM-optimized descriptions. Three tools (getAvailableBuckets, getBucketObjects, getCsvObjects) have EMPTY input schemas ({}), violating the critical requirement that parameters must have type definitions and descriptions. Only readCsvObject has a proper schema with typed parameters and descriptions. Error handling is generic ('Error: {str(e)}') with no recovery guidance. No output schemas documented. No parameter constraints, enums, or validation rules visible.
Tool to list all available buckets
Tool to list all objects in the buckets
Tool to list only CSV files from the buckets
Tool to read a specific CSV file from S3
Three tools have empty input schemas ({}).
All tool descriptions are under 20 characters ('Tool to list all available buckets' = 34 chars is the longest). Descriptions lack WHEN to use, WHAT it returns, and any prerequisites. LLMs cannot determine tool selection from these minimal descriptions.
No output schemas documented. LLMs cannot plan downstream calls or extract data without knowing what fields to expect. getAvailableBuckets returns a list of bucket names, but this is not formally specified. readCsvObject returns CSV content as a string, but format/encoding is undocumented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Error handling is generic ('Error: {str(e)}') with no recovery guidance. Per pattern:recovery-guide, errors must tell the LLM what to do next. A failed bucket list should suggest checking AWS credentials or permissions, not just echo the exception.
No pagination support. getBucketObjects and getCsvObjects iterate all buckets and return all objects without limit or offset. Per pattern:paginated-result, large result sets must support pagination to avoid context window exhaustion. No limit parameter, no next_cursor, no total count.