An MCP server that provides weather alerts, weather forecasts, mathematical expression evaluation, and dataset analysis tools. Integrates with National Weather Service API and supports dataset querying via pandas. Runs as an SSE-based server with a Streamlit frontend for chat interaction.
Five tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. All tools have descriptions (10-50 chars, below the 50-200 char baseline for LLM optimization). Schemas present but sparse: most parameters lack detailed descriptions. No error handling guidance, no output schemas documented, no tool annotations. Naming is verb-forward (get_*, calculate_*, analyze_*, query_*) but descriptions are too terse to guide LLM selection. The server follows a simple pattern but lacks production-grade polish.
Analyze a CSV dataset and return insights.
Safely evaluate a simple math expression (e.g., "2 + 2 * 3").
Get weather alerts for a US state.
Get weather forecast for a location.
Answer natural language questions about the dataset.csv file using the 'title' and 'description' columns.
Descriptions are too short (10-50 chars vs. 50-200 char baseline). LLMs cannot determine when to select tools or distinguish between similar ones (e.g., analyze_dataset vs. query_dataset both operate on the same CSV).
Parameter descriptions are missing or minimal. 'state' in get_alerts has a description, but 'action' in analyze_dataset lacks detail on valid values ('shape', 'summary', 'columns'). LLMs cannot infer constraints from names alone.
No output schemas documented. Tools return strings, but LLMs need to know the structure of responses (e.g., does get_forecast return a list of periods or a single forecast? What fields does each period contain?). This forces LLMs to parse unstructured text.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No error handling guidance. Tools return generic error strings ('Error analyzing dataset: ...') without actionable recovery steps. LLMs cannot determine if errors are retryable or require user intervention.
analyze_dataset and query_dataset both operate on 'data/dataset.csv' but lack clear distinction. LLMs may conflate them or call both when one would suffice. Descriptions should explain when to use each.