Express TypeScript MCP server starter template with user management tools
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. get_all_users has no parameters (empty properties object), which is acceptable but lacks pagination guidance. add_one_user has two required parameters with type and description, meeting minimum standards. Both descriptions are concise (34-50 chars) but lack context on when to use them, prerequisites, or what the response structure contains. No output schemas documented. Error handling exists but is generic ('An unknown error occurred'). Tool names follow verb_noun convention correctly. Overall: functional but below production baseline.
Create a new user account in the system.
Retrieve a list of all registered users in the system.
No output schema documented for either tool. LLMs cannot infer response structure (fields, types, nesting). get_all_users returns JSON array of users but structure is undocumented; add_one_user returns success message but field names/types are unclear.
get_all_users lacks pagination parameters (limit, offset, page_size). Returning all users without bounds risks context window exhaustion and poor LLM reasoning on large datasets. Should cap results at 20-50 and offer pagination.
Parameter descriptions are minimal. 'A unique email address' for email param lacks format guidance (e.g., 'valid RFC 5322 email format'). 'The user's full name' lacks length constraints or character restrictions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Tool descriptions lack context on when to use them or what they return. 'Retrieve a list of all registered users' does not explain response structure, size limits, or whether results are paginated. 'Create a new user account' does not state what fields are returned or whether the operation is idempotent.
Error handling is generic. CallToolRequestSchema handler returns 'An unknown error occurred' for unhandled exceptions. Should categorize errors (retryable vs. user-fixable) and provide recovery guidance, e.g., 'Email already exists. Try a different email address.'