Sample MCP server built with FastMCP demonstrating the MCP tools primitive
This is a minimal template server with a single, well-formed tool. The 'greet' tool has a clear name, adequate description, and properly typed input schema. However, the server lacks several key patterns: no output schema documentation, no error handling guidance, no parameter constraints or validation messaging, and minimal depth in descriptions. The tool is simple enough that these gaps are less critical, but a production tool would need richer documentation and recovery patterns. The server follows FastMCP conventions correctly and the code is clean, but definition quality is template-level, not production-grade.
Greet a user by name.
Output schema not documented. LLMs cannot infer what fields to expect or how to chain downstream calls. The function returns a string, but this should be explicitly stated in tool metadata or docstring.
Parameter description lacks format guidance. The 'name' parameter accepts a string but does not clarify: length constraints, character restrictions, expected format (firstname, lastname, full name?), or examples of valid vs invalid input.
No error handling or recovery guidance. The tool does not document what happens on edge cases: empty string, null input, extremely long names, special characters. LLMs cannot determine if a failure is retryable or user-fixable.
Tool description is brief (21 characters). While not critical for a simple greeting tool, production tools should state WHAT it does, WHEN to use it, and any side effects. Current description does not guide LLM selection or explain dependencies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |