Educational MCP server demonstrating agent patterns and tool calling for AI agent development. Includes examples of ReAct loops, two-step agents, and MCP integration with the smolagents framework.
This server has significant structural issues. While it defines 2 tools via fastmcp, both lack proper input schemas in the MCP server definition (src/fast_mcp/server.py). The tool definitions visible in src/tools.py are bare Python functions without formal schema registration. The fastmcp server shows only one tool (get_weather) with a structured Pydantic output schema, but the input parameter 'location' lacks a formal input schema wrapper with type and description fields. The second tool (check_availability_activity) is not registered in the fastmcp server at all, it exists only as a Python function in src/tools.py. Tool descriptions are generic and lack actionable context (e.g., no guidance on when to use get_weather vs other sources, no error recovery instructions). The repository is a teaching example, not a production MCP server, and relies on manual tool invocation in demo scripts rather than proper MCP protocol registration.
Tool to check availability for a specific activity. Parameters: activity (string) - the activity to check availability for (e.g., tennis, padel, soccer, scuba lesson, yoga lesson, cooking class). Returns the availability information for the requested activity.
Tool to get the current weather for a location. Parameters: location (string) - the city or location to get weather for. Returns the current temperature and conditions.
check_availability_activity is not registered in the fastmcp MCP server; it exists only as a standalone Python function in src/tools.py
Input schemas are missing formal JSON Schema structure with proper type and description fields. fastmcp server defines get_weather but only documents output (WeatherInfo Pydantic model); input parameter 'location' is not wrapped in a formal input schema object
Tool descriptions lack actionable context and error recovery guidance. 'Tool to get the current weather' does not explain when to use it, what happens on failure, or what to do if a location is invalid
Parameter descriptions are minimal and lack format/constraint guidance. 'activity (string) - the activity to check availability for (e.g., tennis, padel, soccer, scuba lesson, yoga lesson, cooking class)' includes example values, which LLMs may reuse literally. Should use enums instead
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 26 | - | v1 |
Tools return mock/hardcoded values (e.g., '80 degrees fahrenheit, clear skies', 'X is available at 3PM next Thursday') without documenting return schema structure or what fields are guaranteed
No error handling or recovery guidance. Tools do not document what happens if a location is invalid (get_weather) or if an activity is not recognized (check_availability_activity)