A demonstration MCP server with tools for arithmetic, note management, weather data retrieval, and prompt generation
Server has 4 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (positive), but most are verbose and lack LLM-optimized structure. Parameter descriptions are present but inconsistent in quality. No error handling guidance, no output schemas documented, no tool annotations. The add_note and get_weather tools lack actionable error messages. Naming is acceptable (verb_noun pattern) but descriptions exceed recommended length (194 char baseline). No pagination, no structured output guidance, no recovery hints.
Add two numbers
Append a new note to the sticky note file. Args: message (str): The note content to be added. Returns: str: Confirmation message indicating the note was saved.
Getting the weather data for a given city_name. Args: city_name (str): city name whoes weather needs to be get. Returns: str: tell me weather information if it is available and if not available, default message will be provided.
Read the notes from the given file. Returns: str: content of the file and if the content is not available then a message which will indicate there is no content available.
No output schemas documented. Tools return strings or integers but LLMs cannot plan downstream calls or extract structured data. Pattern requires documenting return types and field structure.
Error handling lacks recovery guidance. get_weather returns 'Something went wrong' with no actionable next step. Should specify: is it retryable? Should user check API key? What are valid city names?
API key exposed in code (WEATHER_API_KEY via os.getenv). While not a parameter, the pattern shows credentials should use server-side injection. Ensure .env is not committed and document secret management.
Descriptions are verbose and lack LLM-optimized structure. get_weather description is 180+ chars with redundant phrasing ('tell me weather information if it is available and if not available'). Should be concise: 'Get current weather for a city. Returns temperature in Celsius.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). add_note is destructive (appends to file) but unmarked. Agents cannot reason about side effects or retry safety.