Multi-tool MCP server demonstrating file operations, WhatsApp chat analysis, and weather forecasting
This server has 10 tools with READ_ONLY risk. Overall definition quality is poor: most tools lack comprehensive parameter descriptions, none have documented output schemas, and error handling is minimal. Tools are reasonably named with action verbs (find_, list_, read_, get_), but parameter documentation is sparse. For example, 'path' parameters appear in 6 tools but lack format/constraint descriptions (e.g., 'does tilde expansion work? What about relative paths?'). The 'max_results' parameter in search_files has no bounds specified. Descriptions are present but brief (10-50 chars typically), offering minimal LLM guidance on WHEN to use each tool vs. similar alternatives. No output schemas are documented, forcing LLMs to infer response structures. Error handling is rudimentary, tools return plain exception messages with no recovery guidance. Tools like analyze_chat and find_chats operate on the same domain (WhatsApp) but naming doesn't clearly distinguish their scope.
Analyze a WhatsApp chat export file and generate statistics.
Find all WhatsApp chat exports.
Find WhatsApp chat export files in the given directory.
Get weather alerts for a US state.
Get weather forecast for a location.
Get or create the WhatsApp chat directory.
List contents of a directory.
Zero documented output schemas across all 10 tools. LLMs cannot plan downstream calls or extract returned data reliably.
Parameter descriptions are minimal or generic. 'path' parameter appears in 6 tools with only 1-2 sentence descriptions, no format constraints (tilde expansion? absolute/relative?), no max length, no examples of valid paths.
No bounds or constraints on numeric parameters. 'max_size_mb' (read_file) and 'max_results' (search_files) lack min/max declarations, allowing LLMs to pass nonsensical values (e.g., max_results=-5).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 12 | - | v1 |
Read contents of a text file with size limits and chunked reading.
Read a WhatsApp chat export file.
Search for files matching a pattern.
Weak error handling. Tools return plain exception strings ('Error analyzing chat: ...') with no guidance on recovery. LLMs cannot determine if the error is retryable, user-fixable, or fatal.
Tool descriptions under 50 characters offer insufficient LLM guidance. Example: 'Find all WhatsApp chat exports.' (31 chars), when should this be called vs. find_whatsapp_chats? No criteria stated.
Naming ambiguity: 'find_chats' vs 'find_whatsapp_chats' are nearly identical in function. LLMs will conflate them and waste reasoning cycles deciding between them.
No pagination or result-limiting logic visible for tools that list or search (list_directory, search_files, find_chats). Large directories could produce unbounded output, exhausting context.
read_file returns raw file content as a plain string. No structured fields, no metadata (file size, encoding, line count). Unstructured text is expensive for LLM context and error-prone to parse.
analyze_chat returns a formatted string rather than structured JSON. LLMs cannot reliably extract counts, percentages, or sender names for downstream operations.