A simple MCP server setup for testing purposes
Two tools with minimal quality. get_users has no input schema (empty object) and a 56-char description. get_user has a Zod schema (z.string()) but the parameter 'user' lacks a description (null), and the tool description is 73 chars. Neither tool documents output structure, pagination, or error recovery. No parameter constraints, no enum validation, no guidance on what 'user' means (name? ID? email?). Error handling returns raw JSON stringified errors without actionable recovery hints. This is a bare-bones proof-of-concept, not production-ready.
Retrieve and return a user from the connected database.
Retrieve and return a list of all users.
get_users has no input schema (empty object {}). Tool is not self-documenting.
get_user parameter 'user' has null description. LLM cannot infer whether to pass a name, ID, or email.
No output schema documented for either tool. LLMs cannot plan downstream calls or extract fields reliably. Responses are unstructured JSON strings.
Error handling returns raw JSON.stringify(error) without actionable recovery guidance. LLM cannot determine if error is retryable or what to do next.
get_user parameter 'user' is ambiguous. Tool searches by name (u.name === user) but parameter name does not clarify this. Should be 'user_name' to match implementation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |