A Cookiecutter template for generating MCP (Model Context Protocol) servers in Python using FastMCP
This is a cookiecutter template, not a functional MCP server. The single tool 'greet' has a minimal schema and generic description. The repository provides a scaffold for creating MCP servers rather than a production server itself. The greet tool has proper typing but the description is trivial (9 characters: 'Greeting function.'), falling well below the 10-1024 character baseline and the 50-200 char LLM-optimized range. No error handling guidance, no output schema documentation, and no composition patterns are demonstrated. This is a beginner-level template with significant quality gaps.
Greeting function.
Tool description is critically sparse (9 chars: 'Greeting function.'). LLMs cannot determine when to select this tool or what it returns. Baseline is 10-1024 chars, LLM-optimized is 50-200 chars. This violates pattern:tool-description.
No output schema is documented. The tool presumably returns a greeting string, but LLMs have no declared schema to understand the response structure. This blocks downstream tool composition and planning. Violates pattern:tool.
Tool name 'greet' lacks an action verb. Best practice is verb_noun (e.g., 'send_greeting'). Generic names like 'greet' reduce clarity when many tools are available. Baseline from 549 production tools shows 90% start with action verbs.
No error handling or recovery guidance. If the tool fails (invalid name, system error), there is no actionable error message or suggestion for next steps. Violates pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 37 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 27 | - | v1 |
Input parameter 'name' has a description ('Name of person to greet.') but no examples, length constraints, or validation rules. Descriptions should state format, range, and constraints to guide LLM input. Baseline param annotation is ~72 chars; this is only ~28 chars.