A Python-based MCP server with CSV RAG, weather lookup, and health check tools. Supports lazy initialization, Celery task execution, and vector store-backed retrieval.
This MCP server exhibits significant quality gaps across definition, schema documentation, and parameter clarity. Of 4 tools, only 2 have minimally acceptable descriptions (weather, health.ping). The csv_rag tools lack proper schema documentation in the source code provided, and parameter descriptions are sparse. Tool naming is reasonable (weather, health.ping, csv_rag.ingest_folder, csv_rag) but some tools use compound names (csv_rag.ingest_folder mixes a namespace with an action). Schemas are partially visible but incomplete, integer parameters like batch_size and top_k lack range constraints, enums, or validation guidance. No evidence of error handling patterns, recovery guidance, or output schema documentation. The server uses fastmcp (HTTP) but tool definitions appear inferred rather than explicitly registered with full schemas in the provided source.
Query CSV RAG (dynamically registered per tool instance)
Ingest folder for CSV RAG tools (dynamically registered per tool instance)
Basic health check
Weather lookup
csv_rag and csv_rag.ingest_folder lack actionable parameter descriptions. 'batch_size' and 'top_k' are integers with no specified range, constraints, or guidance on valid values. LLMs cannot infer whether batch_size should be 1, 10, or 1000.
No documented output schemas for any tool. The tool descriptions do not specify what fields are returned, their types, or their structure. LLMs cannot plan downstream tool chains or extract specific data without this information.
Tool 'weather' accepts a 'city' parameter but provides no guidance on format (e.g., 'San Francisco' vs 'San Francisco, CA' vs '37.7749,-122.4194'). Parameter descriptions must specify expected format to prevent invalid LLM invocations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 35 | - | v1 |
No error handling or recovery guidance documented. The tools do not specify what errors might occur (e.g., 'city not found', 'folder not accessible', 'CSV parse error') or what the LLM should do next. Raw error codes or messages will not guide agent recovery.
csv_rag.ingest_folder and csv_rag descriptions are generic and lack context on when to use each tool or what distinguishes them. 'Ingest folder for CSV RAG tools' does not explain dependencies, prerequisites, or expected workflow.
Parameter 'folder_path' in csv_rag.ingest_folder lacks path validation guidance. The description should specify whether relative or absolute paths are required, whether symlinks are followed, and what happens if the path is inaccessible. LLMs will pass arbitrary paths without constraints.