Scaffold a new Model Context Protocol (MCP) server with Express.js
This is a scaffolding/template generator, not a production MCP server itself. The template it generates contains two math tools (add, multiply) with basic but functional definitions. Both tools have clear names following verb_noun pattern, explicit descriptions, and complete input schemas with Zod validation. However, descriptions are minimal (16-18 chars), and output schemas are present in TypeScript interfaces but not formally documented in the tool definitions. Error handling is absent, no guidance on what to do if inputs are invalid. The tools are READ_ONLY, trivial examples suitable for a starter template, but lack sophistication for production use. The server uses HTTP transport via Express, includes logging support, and demonstrates reasonable code organization. Main issues: (1) tool descriptions are too brief to be LLM-optimized, (2) no documented error responses, (3) no idempotency hints or confirmation patterns, (4) output schemas defined in TypeScript but not in the MCP tool registration.
Add two numbers together
Multiply two numbers
Tool descriptions are below minimum threshold (16-18 chars vs. 34 char baseline p10). 'Add two numbers together' and 'Multiply two numbers' lack context for LLM selection and do not explain when to use each tool or what they return.
Output schemas are defined in TypeScript interfaces (AdditionOutput, MultiplicationOutput) but not explicitly documented in the tool definition or MCP schema. Handlers return both 'content' and 'structuredContent', but the MCP tool definition does not declare output schema formally, leaving clients guessing at response structure.
No error handling or recovery guidance. If an LLM passes invalid inputs (non-numbers, NaN, Infinity), the tools do not validate or provide actionable error messages. Handlers assume well-formed input and offer no guidance on what to do if validation fails.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No tool annotations (readOnlyHint, idempotentHint) present. Although both tools are marked as READ_ONLY in the metadata, this is not reflected in the MCP tool definition structure, leaving LLM clients without explicit intent signals.
Tool composition and chaining unsupported. A realistic workflow (e.g., add 5 + 3, then multiply result by 2) requires three sequential calls. No batch variants or composite operations offered, wasting tokens and latency.