A production-grade MCP server implementation with hierarchical RAG, ReAct reasoning loop, multi-agent systems, and academic research assistant capabilities
Three tools with complete schemas and reasonable descriptions, but parameter descriptions are sparse or missing. calculator and search_arxiv have good descriptions (60-80 chars), but read_file lacks parameter context. All tools have proper JSON Schema with types and constraints (min/max, defaults). No error handling guidance or recovery hints. Naming is clear and verb-based. Output schemas are not documented. Missing tool annotations (readOnlyHint, etc.).
Evaluate an arithmetic expression. Supports +, -, *, /, **, parentheses, and the functions sqrt, log, exp, sin, cos, tan plus constants pi and e.
Read a UTF-8 text file from local disk.
Search arXiv for academic papers. Returns titles, abstracts, and URLs.
Parameter descriptions missing or minimal. 'query' in search_arxiv has no description. 'path' in read_file has no description. LLMs cannot infer what these parameters control.
Output schemas not documented. Tools return structured data (list of dicts, strings) but LLMs have no schema to understand the response structure. Downstream tool chaining is unsupported.
No error handling guidance. Tools lack recovery hints (e.g., 'If file not found, check path with list_files'). Errors will not guide LLM to next action.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint declared. All three tools are read-only but this is not signaled in the schema.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
read_file accepts arbitrary file paths with no validation. Potential path traversal risk (e.g., '../../../etc/passwd'). No sanitization visible in handler.