MCP server for S3 bucket operations with fuzzy file name matching
Single tool with critical definition gaps. Tool name 'get_similar_file_names' is verb-led and clear, but the input schema is severely underdeveloped. Only one parameter (match_string: string) with minimal description. No output schema documented, returns a list but structure is undefined. No error handling guidance, no pagination despite returning lists, no parameter constraints. Description is adequate (67 chars) but lacks context on when to use, prerequisites (S3 bucket hardcoded), or what the returned list contains. Tool is read-only but lacks explicit idempotent annotation. Fails multiple critical patterns: no output schema documentation, no pagination for list results, no error recovery guidance.
Get the most similar file names from an S3 bucket based on a match string.
No output schema documented. Tool returns a list but LLM cannot infer structure, field names, or data types of returned items. Breaks downstream tool chaining.
Input parameter 'match_string' lacks format constraints, length limits, or examples. Description is generic ('The string to match against'). LLM cannot infer valid input range or format.
List results lack pagination. Tool returns up to 5 matches (hardcoded limit=5 in rapidfuzz.process.extract) but no limit parameter, no offset/cursor, no total count. Violates paginated-result pattern.
S3 bucket and prefix hardcoded ('bwell-ingestion', 'raw'). Tool is not reusable across buckets. Should accept bucket and prefix as parameters or document this limitation clearly.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
No error handling or recovery guidance. Tool will fail silently if S3 bucket is inaccessible, credentials missing, or boto3 session fails. No error messages guide LLM on next steps.