A multi-server MCP sample demonstrating math operations, weather data retrieval, and LLM model selection with a Streamlit chatbot interface
This server has critical definition quality gaps. All 6 tools lack proper parameter type annotations in their descriptions (e.g., get_weather and get_coordinates have no type hints visible in docstrings). The 'sub' tool has a logic bug (returns a+b instead of a-b), indicating lack of testing. Tool descriptions are present but minimal (10-50 chars), below the 50-200 char baseline for LLM-optimized descriptions. No output schemas are documented. Parameter descriptions exist but are sparse. The 'get_llm_model_name' tool is semantically confused, it accepts a model_name string and returns it, which is not a useful tool. No error handling, validation, or recovery guidance.
Add two numbers
Get the coordinates (latitude and longitude) for a given location. This will be needed to get the weather for the location.
Get name of the LLM model, one of: - gpt-3.5-turbo: when asked about math - gpt-4o-mini: when asked about weather
Get current temperature for provided coordinates (latitude and longitude) in celsius.
Multiply two numbers
Substract two numbers
Logic bug in 'sub' tool: returns a+b instead of a-b. Indicates lack of testing and will cause incorrect results.
Tool 'get_llm_model_name' is semantically broken: accepts a model_name string and returns it unchanged. This is not a useful tool, it should either query an LLM selection service or be removed entirely.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract fields without knowing return structure.
Tool descriptions are too short (10-50 chars, baseline 50-200). Descriptions lack context on WHEN to use each tool and what it returns. E.g., 'Add two numbers' does not explain when to call add vs multiply.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If get_weather fails (network error, invalid coords), the tool returns nothing, no actionable error message for the LLM to retry or correct input.