MCP server for user management with fake data generation and resource access
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. Tool names follow verb_noun pattern (create-user, create-random-user), which is good. However, parameter descriptions are completely absent, the inputSchema uses Zod types without any descriptive text explaining what each field means or accepts. The 'create-user' description (18 chars) is below the 20-char minimum for actionable guidance. Output schemas are documented (z.string()) but minimal. Error handling is generic ('Failed to create user') with no recovery guidance. Tool annotations are present but incomplete (destructiveHint and idempotentHint both false despite these being write operations). No pagination, no input validation messaging, no security considerations documented.
Create a random user with fake data
Create a new user in the database
Parameter descriptions completely missing. Zod schema defines types (string) but provides no guidance on format, constraints, or purpose. LLMs cannot infer that 'email' must be a valid email format or 'phone' must follow a specific pattern.
Tool description for 'create-user' is only 18 characters ('Create a new user in the database'), below the 20-char minimum. Lacks context on when to use vs alternatives, prerequisites, or what the return value represents.
Error handling is generic and non-actionable. Both tools return 'Failed to create user' or 'Failed to generate user data' with no guidance on root cause, retry eligibility, or next steps. LLM cannot self-correct.
Destructive operations (write to users.json) marked with destructiveHint: false and idempotentHint: false. These are write operations that modify state, annotations should reflect this accurately so agents understand retry semantics.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2025-06-18+ | v2 |
create-random-user has no input schema (empty object {}). Tool relies on server.server.request() to call sampling/createMessage, which is a deprecated pattern (server-initiated sampling).