MCP server for beginners with math tools and multiple transport examples
This is a teaching/demo repository ('mcp-for-beginners') with multiple example servers and significant quality issues. The codebase contains 17 tools spread across 5+ separate server files, with extensive duplication (add/subtract/multiply/divide appear 3+ times each), missing descriptions on critical tools, and no input schemas visible in most definitions. Tool naming is verb-first which is good (get_weather, calculate_sum), but composition is poor, many tools lack output documentation, error handling, and recovery guidance. The largest issue is SCHEMA VISIBILITY: only 2 tools show complete input schemas in the source (stdio_server.py tools have inline schema dicts). The server also uses STDIO transport exclusively in most examples, capping protocol readiness at 50.
Add two numbers
Add two numbers
Add two numbers
Calculate the product of two numbers
Add two numbers
Divides two numbers
Divides two numbers
Gets weather forecast for a location for the specified number of days.
Generate a personalized greeting
CRITICAL: Tool name collision and duplication. 'add', 'subtract', 'multiply', 'divide' each appear 2-3 times with different input types (number vs integer). Clients cannot distinguish them. LLMs will be confused which variant to call.
CRITICAL: No input schemas visible for 13 of 17 tools. FastMCP-decorated tools (get_weather, forecast, add/subtract/multiply/divide in complete_server.py, simple_mcp_server.py) have no explicit schema registration in source code.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 35 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Get information about this MCP server
Gets current weather for a location.
No description provided
Multiplies two numbers
Multiplies two numbers
A tool that simulates file processing and sends progress notifications
Subtract two numbers
Subtracts two numbers
CRITICAL: Missing descriptions on core tools. 'help' tool has no description at all. 'get_server_info' has 'Get information about this MCP server', 35 chars, below the 50-char baseline for clarity. 'process_files' description is vague about what output/progress notifications are returned.
HIGH: No output schemas documented. Tools return dicts (weather forecast, greeting, products) with no documentation of field structure, types, or what an LLM should expect. LLM cannot plan downstream chaining.
HIGH: No error handling or recovery guidance. Tools do not document failure modes (e.g., divide by zero, invalid location for weather). No instructions for LLM on what to do when a tool fails.
MEDIUM: Parameter descriptions lack detail. Weather tools accept 'location' but do not specify format (city name, zip code, lat/lon?) or valid values. Math tools accept 'a' and 'b' but could clarify range/bounds.
MEDIUM: Composition weakness. Multiple nearly-identical math tools (add_int vs add_float) increase cognitive load on LLM. Should unify to single 'add' tool that accepts both types, or clearly differentiate intent (e.g., add_integers for batch integer arithmetic vs add for floating-point).