Simple Express MCP server using the official MCP package for debugging and testing
Server has 6 tools with mixed quality. Most tools have descriptions (good), but several critical issues undermine production readiness: (1) Tool naming is inconsistent and sometimes vague, 'huge_return', 'sleep_test', 'extra_response' lack verb-noun structure and don't convey action intent. 'multiply' is a verb but domain-agnostic. (2) Input schemas present for most tools but incomplete, 'huge_return' and 'extra_response' have empty schemas (no parameters defined). (3) Descriptions are present but vary in quality: some are clear ('Multiply two numbers', 'Sleeps for a specified duration...'), others are vague or test-focused rather than production-oriented. (4) The 'multiply' tool contains a deliberate error (`throw new Error(...)` before the return), which appears to be a test artifact and would break production use. (5) 'extra_response' returns non-standard response fields ('otherContent', 'structuredOutput') that violate the response schema contract. (6) Error handling is minimal, most tools catch errors generically with `Error: ${error.message}` but don't guide recovery. (7) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite the risk levels being specified in the rubric. (8) The 'create-profile' tool is marked WRITE but has no confirmation step or dry-run mode. Overall: definitions exist but lack the precision, consistency, and LLM-optimization expected for production.
Create a simple user profile with required and optional fields
Returns an extra response
Get all headers that were sent with the current request
Returns a huge JSON object
Multiply two numbers
Sleeps for a specified duration to test timeouts. Use 95+ seconds to trigger timeout.
Tool naming lacks consistency and action clarity. 'huge_return', 'sleep_test', 'extra_response' do not follow verb_noun pattern and fail to convey intent to LLMs.
Tools 'huge_return' and 'extra_response' have empty/missing input schemas (no parameters declared).
Tool 'multiply' contains a deliberate error (throws before returning result): `throw new Error('Multiplication failed: invalid input')` appears to be a test artifact. In production, this tool will always fail. This is a blocker.
Tool 'extra_response' returns non-standard response fields ('otherContent', 'structuredOutput') not defined in the MCP response contract. This violates response schema expectations and will confuse clients.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Error handling is minimal across all tools. Error messages provide context but do not guide LLM recovery or classify errors as retryable, user-fixable, or fatal. Per pattern:recovery-guide, errors must tell the LLM what to do next.
No tool annotations present (readOnlyHint, destructiveHint, idempotentHint). Per Spec Alignment (2026-07-28), tool annotations should be included to declare safety properties. 'create-profile' is marked WRITE but lacks a confirmation or dry-run step.
Output schemas are not documented. Clients do not know what fields to expect from 'get-request-headers', 'huge_return', 'sleep_test', 'create-profile', or 'extra_response'.
'sleep_test' tool is designed to trigger timeouts (95+ seconds) but has no explicit timeout error handling. This appears to be a test tool, not a production utility. Per pattern:tool-gateway, production tools should validate inputs and return clear errors.