An interactive game development tutoring server that provides lesson plans and starter code for different game genres and skill levels
This MCP server has only one tool (teach_game_dev) with a non-empty description and basic schema. However, critical gaps prevent a higher score: (1) The tool name does not follow verb_noun convention, 'teach_game_dev' is acceptable but the description is vague about whether it generates lesson content, returns references, or interactive content. (2) Parameter descriptions exist but lack validation constraints (e.g., valid game genres are not enumerated; user_level has a default but no enum). (3) Output schema is entirely undocumented, the return type dict with 'lesson_plan' and 'starter_code' keys is visible in code but not formally declared in the tool definition. (4) No error handling is present; the tool silently returns hardcoded data regardless of input validity. (5) The starter code is obviously mocked ('// Starter code...') and does not match actual game development patterns. (6) No security considerations (token/secret injection), no permission gates, no audit trail. The server appears to be a stub or proof-of-concept, not a production-ready MCP server.
Provides lesson plan and starter code for a given game genre and user skill level
Output schema is not documented. The tool returns a dict with 'lesson_plan' (list) and 'starter_code' (string), but there is no formal JSON Schema definition in the tool registration. The LLM cannot know what fields to expect without reading source code.
Input parameters lack enumeration constraints. 'game_genre' accepts any string (no enum of valid genres like '2D Platformer', '3D RPG', 'Roguelike'). 'user_level' has a default 'beginner' but no enum limiting it to valid levels (beginner, intermediate, advanced). Free-form strings invite hallucinated/invalid values from LLMs.
No error handling or validation. The tool does not validate game_genre or user_level. If an LLM passes an invalid genre or level, the tool silently returns generic placeholder code without guidance on what went wrong or how to correct it. No recovery hints provided.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Tool description is generic and lacks actionable detail. 'Provides lesson plan and starter code for a given game genre and user skill level' does not explain WHEN to use this tool vs. alternatives, what the lesson plan structure is, what code template is returned, or whether the code is executable. The description needs to be 50-200 chars and answer: What? When? What does it return?
Starter code is obviously mocked and non-functional. The returned code ('// Starter code for {game_genre}...') is a placeholder string, not real game development code. For a game development tutor, returning non-functional code undermines the tool's purpose and wastes the agent's calls.
Tool naming could be more specific. 'teach_game_dev' is a verb_noun pattern, but it is ambiguous: does it teach the user, generate curriculum, return references, or provide interactive lessons? A more specific name like 'generate_game_dev_lesson_plan' or 'get_game_dev_starter_code' would better clarify intent for the LLM.
No support for pagination or result limits. If lesson_plan or starter_code grows large in the future, there is no mechanism to limit or paginate results. This could waste context window tokens.
Missing permission gates and audit trail. There is no documentation of what permissions the tool requires (e.g., 'read:curriculum'). There is no mention of logging who called the tool, when, with which parameters, or what was returned. This violates compliance and debugging requirements.